Index: include/llvm/Analysis/MemorySSA.h =================================================================== --- include/llvm/Analysis/MemorySSA.h +++ include/llvm/Analysis/MemorySSA.h @@ -249,7 +249,7 @@ DECLARE_TRANSPARENT_OPERAND_ACCESSORS(MemoryAccess); /// \brief Get the instruction that this MemoryUse represents. - Instruction *getMemoryInst() const { return MemoryAliasPair.getPointer(); } + Instruction *getMemoryInst() const { return MemoryInstruction; } /// \brief Get the access that produces the memory state used by this Use. MemoryAccess *getDefiningAccess() const { return getOperand(0); } @@ -267,7 +267,7 @@ // Retrieve AliasResult type of the optimized access. Ideally this would be // returned by the caching walker and may go away in the future. Optional getOptimizedAccessType() const { - return threeBitIntToOptionalAliasResult(MemoryAliasPair.getInt()); + return OptimizedAccessAlias; } /// \brief Reset the ID of what this MemoryUse was optimized to, causing it to @@ -281,8 +281,8 @@ MemoryUseOrDef(LLVMContext &C, MemoryAccess *DMA, unsigned Vty, DeleteValueTy DeleteValue, Instruction *MI, BasicBlock *BB) - : MemoryAccess(C, Vty, DeleteValue, BB, 1), - MemoryAliasPair(MI, optionalAliasResultToThreeBitInt(MayAlias)) { + : MemoryAccess(C, Vty, DeleteValue, BB, 1), MemoryInstruction(MI), + OptimizedAccessAlias(MayAlias) { setDefiningAccess(DMA); } @@ -290,7 +290,7 @@ ~MemoryUseOrDef() = default; void setOptimizedAccessType(Optional AR) { - MemoryAliasPair.setInt(optionalAliasResultToThreeBitInt(AR)); + OptimizedAccessAlias = AR; } void setDefiningAccess(MemoryAccess *DMA, bool Optimized = false, @@ -304,22 +304,8 @@ } private: - // Pair of memory instruction and Optional with optimized access. - PointerIntPair MemoryAliasPair; - - static int optionalAliasResultToThreeBitInt(Optional OAR) { - if (OAR == None) - return 4; - return (int)OAR.getValue(); - } - - static Optional threeBitIntToOptionalAliasResult(int I) { - assert((I <= 4 && I >= 0) && - "Invalid value for converting to an Optional"); - if (I == 4) - return None; - return (AliasResult)I; - } + Instruction *MemoryInstruction; + Optional OptimizedAccessAlias; }; template <>