File indexing completed on 2026-05-10 08:43:56
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef LLVM_IR_ASSUMPTIONS_H
0016 #define LLVM_IR_ASSUMPTIONS_H
0017
0018 #include "llvm/ADT/DenseSet.h"
0019 #include "llvm/ADT/StringRef.h"
0020 #include "llvm/ADT/StringSet.h"
0021
0022 namespace llvm {
0023
0024 class Function;
0025 class CallBase;
0026
0027
0028 constexpr StringRef AssumptionAttrKey = "llvm.assume";
0029
0030
0031
0032 extern StringSet<> KnownAssumptionStrings;
0033
0034
0035
0036 struct KnownAssumptionString {
0037 KnownAssumptionString(const char *AssumptionStr)
0038 : AssumptionStr(AssumptionStr) {
0039 KnownAssumptionStrings.insert(AssumptionStr);
0040 }
0041 KnownAssumptionString(StringRef AssumptionStr)
0042 : AssumptionStr(AssumptionStr) {
0043 KnownAssumptionStrings.insert(AssumptionStr);
0044 }
0045 operator StringRef() const { return AssumptionStr; }
0046
0047 private:
0048 StringRef AssumptionStr;
0049 };
0050
0051
0052 bool hasAssumption(const Function &F,
0053 const KnownAssumptionString &AssumptionStr);
0054
0055
0056
0057 bool hasAssumption(const CallBase &CB,
0058 const KnownAssumptionString &AssumptionStr);
0059
0060
0061 DenseSet<StringRef> getAssumptions(const Function &F);
0062
0063
0064 DenseSet<StringRef> getAssumptions(const CallBase &CB);
0065
0066
0067 bool addAssumptions(Function &F, const DenseSet<StringRef> &Assumptions);
0068
0069
0070 bool addAssumptions(CallBase &CB, const DenseSet<StringRef> &Assumptions);
0071
0072 }
0073
0074 #endif