diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2017-08-10 01:07:44 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2017-08-10 01:07:44 +0000 |
commit | 9e6aa3e0fefb3f5df241ba5175c5e0907199bb01 (patch) | |
tree | 81a8ddac77b481ef700ed63ccbe7899d824f5633 /test/LTO | |
parent | 3c1a9a04858a6ea0558fcbbd480df662fe400c54 (diff) |
Linker: Create a function declaration when moving a non-prevailing alias of function type.
We were previously creating a global variable of function type,
which is invalid IR. This issue was exposed by r304690, in which we
started asserting that global variables were of a valid type.
Fixes PR33462.
Differential Revision: https://reviews.llvm.org/D36438
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310543 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/LTO')
-rw-r--r-- | test/LTO/Resolution/X86/function-alias-non-prevailing.ll | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/LTO/Resolution/X86/function-alias-non-prevailing.ll b/test/LTO/Resolution/X86/function-alias-non-prevailing.ll new file mode 100644 index 000000000000..ab2cefebb42b --- /dev/null +++ b/test/LTO/Resolution/X86/function-alias-non-prevailing.ll @@ -0,0 +1,17 @@ +; RUN: llvm-as -o %t %s +; RUN: llvm-lto2 run %t -r %t,foo, -r %t,baz,p -o %t2 -save-temps +; RUN: llvm-dis -o - %t2.0.0.preopt.bc | FileCheck %s + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64--fuchsia" + +; CHECK: declare void @foo() +@foo = weak alias void(), void()* @bar + +define internal void @bar() { + ret void +} + +define void()* @baz() { + ret void()* @foo +} |