//===- NoFolder.h - Constant folding helper ---------------------*- 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 // //===----------------------------------------------------------------------===// // // This file defines the NoFolder class, a helper for IRBuilder. It provides // IRBuilder with a set of methods for creating unfolded constants. This is // useful for learners trying to understand how LLVM IR works, and who don't // want details to be hidden by the constant folder. For general constant // creation and folding, use ConstantExpr and the routines in // llvm/Analysis/ConstantFolding.h. // // Note: since it is not actually possible to create unfolded constants, this // class returns instructions rather than constants. // //===----------------------------------------------------------------------===// #ifndef LLVM_IR_NOFOLDER_H #define LLVM_IR_NOFOLDER_H #include "llvm/ADT/ArrayRef.h" #include "llvm/IR/Constants.h" #include "llvm/IR/FMF.h" #include "llvm/IR/IRBuilderFolder.h" #include "llvm/IR/InstrTypes.h" #include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" namespace llvm { /// NoFolder - Create "constants" (actually, instructions) with no folding. class NoFolder final : public IRBuilderFolder { … }; } // end namespace llvm #endif // LLVM_IR_NOFOLDER_H