diff options
author | Duncan Sands <baldrick@free.fr> | 2012-07-02 18:55:39 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2012-07-02 18:55:39 +0000 |
commit | e8ce94fcd77f5c47e39ddfb575b1a07143fda741 (patch) | |
tree | dad44ddf4e2a818afdf28c5d76340b2348f4391b | |
parent | 72098b2c9100cfcf683c9a52390d17d7b8bc6c0f (diff) | |
download | bcm5719-llvm-e8ce94fcd77f5c47e39ddfb575b1a07143fda741.tar.gz bcm5719-llvm-e8ce94fcd77f5c47e39ddfb575b1a07143fda741.zip |
GlobalOpt forgot to handle bitcast when analyzing globals. Found by inspection.
llvm-svn: 159546
-rw-r--r-- | llvm/lib/Transforms/IPO/GlobalOpt.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/GlobalOpt/unnamed-addr.ll | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp index 35f98b22653..4e1c23c1980 100644 --- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp +++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp @@ -254,6 +254,8 @@ static bool AnalyzeGlobal(const Value *V, GlobalStatus &GS, GS.StoredType = GlobalStatus::isStored; } } + } else if (isa<BitCastInst>(I)) { + if (AnalyzeGlobal(I, GS, PHIUsers)) return true; } else if (isa<GetElementPtrInst>(I)) { if (AnalyzeGlobal(I, GS, PHIUsers)) return true; } else if (isa<SelectInst>(I)) { diff --git a/llvm/test/Transforms/GlobalOpt/unnamed-addr.ll b/llvm/test/Transforms/GlobalOpt/unnamed-addr.ll index babadc62103..ee750587312 100644 --- a/llvm/test/Transforms/GlobalOpt/unnamed-addr.ll +++ b/llvm/test/Transforms/GlobalOpt/unnamed-addr.ll @@ -26,7 +26,9 @@ define i1 @bah(i64 %i) nounwind readonly optsize ssp { entry: %arrayidx4 = getelementptr inbounds [4 x i8]* @d, i64 0, i64 %i %tmp5 = load i8* %arrayidx4, align 1 - %cmp = icmp eq i8 %tmp5, 42 + %array0 = bitcast [4 x i8]* @d to i8* + %tmp6 = load i8* %array0, align 1 + %cmp = icmp eq i8 %tmp5, %tmp6 ret i1 %cmp } |