File indexing completed on 2026-05-10 08:43:33
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUEMANAGER_H
0014 #define LLVM_CODEGEN_PSEUDOSOURCEVALUEMANAGER_H
0015
0016 #include "llvm/ADT/SmallVector.h"
0017 #include "llvm/ADT/StringMap.h"
0018 #include "llvm/CodeGen/PseudoSourceValue.h"
0019 #include "llvm/IR/ValueMap.h"
0020
0021 namespace llvm {
0022
0023 class GlobalValue;
0024 class TargetMachine;
0025
0026
0027 class PseudoSourceValueManager {
0028 const TargetMachine &TM;
0029 const PseudoSourceValue StackPSV, GOTPSV, JumpTablePSV, ConstantPoolPSV;
0030 SmallVector<std::unique_ptr<FixedStackPseudoSourceValue>> FSValues;
0031 StringMap<std::unique_ptr<const ExternalSymbolPseudoSourceValue>>
0032 ExternalCallEntries;
0033 ValueMap<const GlobalValue *,
0034 std::unique_ptr<const GlobalValuePseudoSourceValue>>
0035 GlobalCallEntries;
0036
0037 public:
0038 PseudoSourceValueManager(const TargetMachine &TM);
0039
0040
0041
0042 const PseudoSourceValue *getStack();
0043
0044
0045
0046 const PseudoSourceValue *getGOT();
0047
0048
0049
0050
0051 const PseudoSourceValue *getConstantPool();
0052
0053
0054
0055 const PseudoSourceValue *getJumpTable();
0056
0057
0058
0059 const PseudoSourceValue *getFixedStack(int FI);
0060
0061 const PseudoSourceValue *getGlobalValueCallEntry(const GlobalValue *GV);
0062
0063 const PseudoSourceValue *getExternalSymbolCallEntry(const char *ES);
0064 };
0065
0066 }
0067
0068 #endif