LLVM 22.0.0git
MaterializationUtils.h
Go to the documentation of this file.
1//===- MaterializationUtils.h - Utilities for doing materialization -------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
11
12#ifndef LLVM_TRANSFORMS_COROUTINES_MATERIALIZATIONUTILS_H
13#define LLVM_TRANSFORMS_COROUTINES_MATERIALIZATIONUTILS_H
14
15namespace llvm::coro {
16
17// True if I is trivially rematerialzable, e.g. InsertElementInst
18LLVM_ABI bool isTriviallyMaterializable(Instruction &I);
19
20// Performs rematerialization, invoked from buildCoroutineFrame.
21LLVM_ABI void
22doRematerializations(Function &F, SuspendCrossingInfo &Checker,
23 std::function<bool(Instruction &)> IsMaterializable);
24
25} // namespace llvm::coro
26
27#endif // LLVM_TRANSFORMS_COROUTINES_MATERIALIZATIONUTILS_H
#define LLVM_ABI
Definition Compiler.h:213
#define F(x, y, z)
Definition MD5.cpp:55
#define I(x, y, z)
Definition MD5.cpp:58
LLVM_ABI bool isTriviallyMaterializable(Instruction &I)
LLVM_ABI void doRematerializations(Function &F, SuspendCrossingInfo &Checker, std::function< bool(Instruction &)> IsMaterializable)