diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/ConstantMerge.cpp | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/llvm/lib/Transforms/IPO/ConstantMerge.cpp b/llvm/lib/Transforms/IPO/ConstantMerge.cpp index b63495b9685..a7bf18896b5 100644 --- a/llvm/lib/Transforms/IPO/ConstantMerge.cpp +++ b/llvm/lib/Transforms/IPO/ConstantMerge.cpp @@ -27,6 +27,7 @@  #include "llvm/IR/DataLayout.h"  #include "llvm/IR/DerivedTypes.h"  #include "llvm/IR/Module.h" +#include "llvm/IR/Operator.h"  #include "llvm/Pass.h"  using namespace llvm; @@ -68,10 +69,11 @@ static void FindUsedValues(GlobalVariable *LLVMUsed,    if (LLVMUsed == 0) return;    ConstantArray *Inits = cast<ConstantArray>(LLVMUsed->getInitializer()); -  for (unsigned i = 0, e = Inits->getNumOperands(); i != e; ++i) -    if (GlobalValue *GV =  -        dyn_cast<GlobalValue>(Inits->getOperand(i)->stripPointerCasts())) -      UsedValues.insert(GV); +  for (unsigned i = 0, e = Inits->getNumOperands(); i != e; ++i) { +    Value *Operand = Inits->getOperand(i)->stripPointerCastsNoFollowAliases(); +    GlobalValue *GV = cast<GlobalValue>(Operand); +    UsedValues.insert(GV); +  }  }  // True if A is better than B. | 

