diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-09-28 10:01:27 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-09-28 10:01:27 +0000 |
commit | ab16423c912a7baa73f36e9032365925914487a3 (patch) | |
tree | b3b1a8c12343afbbf42acb1680c40590b2673c26 /lib/Transforms/IPO | |
parent | 7e0e166d1783671e555eff26b9932012fadea691 (diff) | |
download | llvm-ab16423c912a7baa73f36e9032365925914487a3.tar.gz llvm-ab16423c912a7baa73f36e9032365925914487a3.tar.bz2 llvm-ab16423c912a7baa73f36e9032365925914487a3.tar.xz |
GlobalOpt: non-constexpr bitcasts or GEPs can occur even if the global value is only stored once.
Fixes PR13968.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164815 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index b888e95982..b1ba6be5ff 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -962,7 +962,9 @@ static bool OptimizeAwayTrappingUsesOfLoads(GlobalVariable *GV, Constant *LV, // If we get here we could have other crazy uses that are transitively // loaded. assert((isa<PHINode>(GlobalUser) || isa<SelectInst>(GlobalUser) || - isa<ConstantExpr>(GlobalUser) || isa<CmpInst>(GlobalUser)) && + isa<ConstantExpr>(GlobalUser) || isa<CmpInst>(GlobalUser) || + isa<BitCastInst>(GlobalUser) || + isa<GetElementPtrInst>(GlobalUser)) && "Only expect load and stores!"); } } |