diff options
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 4 | ||||
-rw-r--r-- | test/Transforms/GlobalOpt/alias-resolve.ll | 13 |
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 |