aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 72ba250..a4de71b 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 a42dd28..32f4bf8 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