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 {
16
17namespace coro {
18
19// True if I is trivially rematerialzable, e.g. InsertElementInst
20LLVM_ABI bool isTriviallyMaterializable(Instruction &I);
21
22// Performs rematerialization, invoked from buildCoroutineFrame.
23LLVM_ABI void
24doRematerializations(Function &F, SuspendCrossingInfo &Checker,
25 std::function<bool(Instruction &)> IsMaterializable);
26
27} // namespace coro
28
29} // namespace llvm
30
31#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)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18