summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2012-07-02 18:55:39 +0000
committerDuncan Sands <baldrick@free.fr>2012-07-02 18:55:39 +0000
commite8ce94fcd77f5c47e39ddfb575b1a07143fda741 (patch)
treedad44ddf4e2a818afdf28c5d76340b2348f4391b
parent72098b2c9100cfcf683c9a52390d17d7b8bc6c0f (diff)
downloadbcm5719-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.cpp2
-rw-r--r--llvm/test/Transforms/GlobalOpt/unnamed-addr.ll4
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
}
OpenPOWER on IntegriCloud