diff options
Diffstat (limited to 'llvm/include/llvm/IR/ModuleSummaryIndex.h')
| -rw-r--r-- | llvm/include/llvm/IR/ModuleSummaryIndex.h | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 7e10fa1aa02..9a456acf966 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -163,13 +163,13 @@ using GlobalValueSummaryMapTy = /// Struct that holds a reference to a particular GUID in a global value /// summary. struct ValueInfo { - PointerIntPair<const GlobalValueSummaryMapTy::value_type *, 2, int> - RefAndFlags; + PointerIntPair<const GlobalValueSummaryMapTy::value_type *, 1, bool> + RefAndFlag; ValueInfo() = default; ValueInfo(bool HaveGVs, const GlobalValueSummaryMapTy::value_type *R) { - RefAndFlags.setPointer(R); - RefAndFlags.setInt(HaveGVs); + RefAndFlag.setPointer(R); + RefAndFlag.setInt(HaveGVs); } operator bool() const { return getRef(); } @@ -189,12 +189,10 @@ struct ValueInfo { : getRef()->second.U.Name; } - bool haveGVs() const { return RefAndFlags.getInt() & 0x1; } - bool isReadOnly() const { return RefAndFlags.getInt() & 0x2; } - void setReadOnly() { RefAndFlags.setInt(RefAndFlags.getInt() | 0x2); } + bool haveGVs() const { return RefAndFlag.getInt(); } const GlobalValueSummaryMapTy::value_type *getRef() const { - return RefAndFlags.getPointer(); + return RefAndFlag.getPointer(); } bool isDSOLocal() const; @@ -545,8 +543,6 @@ public: std::move(TypeTestAssumeConstVCalls), std::move(TypeCheckedLoadConstVCalls)}); } - // Gets the number of immutable refs in RefEdgeList - unsigned immutableRefCount() const; /// Check if this is a function summary. static bool classof(const GlobalValueSummary *GVS) { @@ -656,30 +652,19 @@ template <> struct DenseMapInfo<FunctionSummary::ConstVCall> { /// Global variable summary information to aid decisions and /// implementation of importing. /// -/// Global variable summary has extra flag, telling if it is -/// modified during the program run or not. This affects ThinLTO -/// internalization +/// Currently this doesn't add anything to the base \p GlobalValueSummary, +/// but is a placeholder as additional info may be added to the summary +/// for variables. class GlobalVarSummary : public GlobalValueSummary { -public: - struct GVarFlags { - GVarFlags(bool ReadOnly = false) : ReadOnly(ReadOnly) {} - - unsigned ReadOnly : 1; - } VarFlags; - GlobalVarSummary(GVFlags Flags, GVarFlags VarFlags, - std::vector<ValueInfo> Refs) - : GlobalValueSummary(GlobalVarKind, Flags, std::move(Refs)), - VarFlags(VarFlags) {} +public: + GlobalVarSummary(GVFlags Flags, std::vector<ValueInfo> Refs) + : GlobalValueSummary(GlobalVarKind, Flags, std::move(Refs)) {} /// Check if this is a global variable summary. static bool classof(const GlobalValueSummary *GVS) { return GVS->getSummaryKind() == GlobalVarKind; } - - GVarFlags varflags() const { return VarFlags; } - void setReadOnly(bool RO) { VarFlags.ReadOnly = RO; } - bool isReadOnly() const { return VarFlags.ReadOnly; } }; struct TypeTestResolution { @@ -1150,9 +1135,6 @@ public: /// Print out strongly connected components for debugging. void dumpSCCs(raw_ostream &OS); - - /// Analyze index and detect unmodified globals - void propagateConstants(const DenseSet<GlobalValue::GUID> &PreservedSymbols); }; /// GraphTraits definition to build SCC for the index @@ -1202,14 +1184,6 @@ struct GraphTraits<ModuleSummaryIndex *> : public GraphTraits<ValueInfo> { } }; -static inline bool canImportGlobalVar(GlobalValueSummary *S) { - assert(isa<GlobalVarSummary>(S->getBaseObject())); - - // We don't import GV with references, because it can result - // in promotion of local variables in the source module. - return !GlobalValue::isInterposableLinkage(S->linkage()) && - !S->notEligibleToImport() && S->refs().empty(); -} } // end namespace llvm #endif // LLVM_IR_MODULESUMMARYINDEX_H |

