1 //===- ReplaceConstant.h - Replacing LLVM constant expressions --*- C++ -*-===// 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 // 9 // This file declares the utility function for replacing LLVM constant 10 // expressions by instructions. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_IR_REPLACECONSTANT_H 15 #define LLVM_IR_REPLACECONSTANT_H 16 17 namespace llvm { 18 19 template <typename T> class ArrayRef; 20 class Constant; 21 class Function; 22 23 /// Replace constant expressions users of the given constants with 24 /// instructions. Return whether anything was changed. 25 /// 26 /// Passing RestrictToFunc will restrict the constant replacement 27 /// to the passed in functions scope, as opposed to the replacements 28 /// occurring at module scope. 29 /// 30 /// RemoveDeadConstants by default will remove all dead constants as 31 /// the final step of the function after replacement, when passed 32 /// false it will skip this final step. 33 /// 34 /// If \p IncludeSelf is enabled, also convert the passed constants themselves 35 /// to instructions, rather than only their users. 36 bool convertUsersOfConstantsToInstructions(ArrayRef<Constant *> Consts, 37 Function *RestrictToFunc = nullptr, 38 bool RemoveDeadConstants = true, 39 bool IncludeSelf = false); 40 41 } // end namespace llvm 42 43 #endif // LLVM_IR_REPLACECONSTANT_H 44