diff options
Diffstat (limited to 'clang-r353983e/include/llvm/Transforms/Scalar/InstSimplifyPass.h')
| -rw-r--r-- | clang-r353983e/include/llvm/Transforms/Scalar/InstSimplifyPass.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/clang-r353983e/include/llvm/Transforms/Scalar/InstSimplifyPass.h b/clang-r353983e/include/llvm/Transforms/Scalar/InstSimplifyPass.h new file mode 100644 index 00000000..0c30b626 --- /dev/null +++ b/clang-r353983e/include/llvm/Transforms/Scalar/InstSimplifyPass.h @@ -0,0 +1,45 @@ +//===- InstSimplifyPass.h ---------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// \file +/// +/// Defines passes for running instruction simplification across chunks of IR. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TRANSFORMS_UTILS_INSTSIMPLIFYPASS_H +#define LLVM_TRANSFORMS_UTILS_INSTSIMPLIFYPASS_H + +#include "llvm/IR/PassManager.h" + +namespace llvm { + +class FunctionPass; + +/// Run instruction simplification across each instruction in the function. +/// +/// Instruction simplification has useful constraints in some contexts: +/// - It will never introduce *new* instructions. +/// - There is no need to iterate to a fixed point. +/// +/// Many passes use instruction simplification as a library facility, but it may +/// also be useful (in tests and other contexts) to have access to this very +/// restricted transform at a pass granularity. However, for a much more +/// powerful and comprehensive peephole optimization engine, see the +/// `instcombine` pass instead. +class InstSimplifyPass : public PassInfoMixin<InstSimplifyPass> { +public: + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); +}; + +/// Create a legacy pass that does instruction simplification on each +/// instruction in a function. +FunctionPass *createInstSimplifyLegacyPass(); + +} // end namespace llvm + +#endif // LLVM_TRANSFORMS_UTILS_INSTSIMPLIFYPASS_H |
