summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-06-12 16:45:47 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-06-12 16:45:47 +0000
commit100fbdd06be7590b23c4707a98cd605bdb519498 (patch)
tree085b532cec0aa1e6c81a9237bbeeea6612512aa5
parentd3f7766f2363862b9c8586d2f78bc413223240d3 (diff)
downloadllvm-100fbdd06be7590b23c4707a98cd605bdb519498.tar.gz
llvm-100fbdd06be7590b23c4707a98cd605bdb519498.tar.bz2
llvm-100fbdd06be7590b23c4707a98cd605bdb519498.tar.xz
Always remove an alias when we rename the target.
Should fix the dragonegg build bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183845 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp4
-rw-r--r--test/Transforms/GlobalOpt/alias-resolve.ll13
2 files changed, 13 insertions, 4 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index 72ba250f47..a4de71b3ae 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -3238,9 +3238,7 @@ bool GlobalOpt::OptimizeGlobalAliases(Module &M) {
if (Used.compilerUsedErase(J))
Used.compilerUsedInsert(Target);
- }
-
- if (mayHaveOtherReferences(*J, Used))
+ } else if (mayHaveOtherReferences(*J, Used))
continue;
// Delete the alias.
diff --git a/test/Transforms/GlobalOpt/alias-resolve.ll b/test/Transforms/GlobalOpt/alias-resolve.ll
index a42dd280da..32f4bf8ebe 100644
--- a/test/Transforms/GlobalOpt/alias-resolve.ll
+++ b/test/Transforms/GlobalOpt/alias-resolve.ll
@@ -1,4 +1,7 @@
-; RUN: opt < %s -globalopt -S | FileCheck %s
+; We use a temporary file so that the test fails when opt crashes.
+
+; RUN: opt < %s -globalopt -S > %t
+; RUN: FileCheck %s < %t
@foo1 = alias void ()* @foo2
; CHECK: @foo1 = alias void ()* @foo2
@@ -25,3 +28,11 @@ entry:
ret void
}
+
+@foo3 = alias void ()* @bar3
+; CHECK-NOT: bar3
+
+define internal void @bar3() {
+ ret void
+}
+;CHECK: define void @foo3