diff options
Diffstat (limited to 'llvm/test/LTO/Resolution/X86')
-rw-r--r-- | llvm/test/LTO/Resolution/X86/Inputs/appending-var-2.ll | 14 | ||||
-rw-r--r-- | llvm/test/LTO/Resolution/X86/appending-var.ll | 16 |
2 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/LTO/Resolution/X86/Inputs/appending-var-2.ll b/llvm/test/LTO/Resolution/X86/Inputs/appending-var-2.ll new file mode 100644 index 00000000000..29bc8433d3e --- /dev/null +++ b/llvm/test/LTO/Resolution/X86/Inputs/appending-var-2.ll @@ -0,0 +1,14 @@ +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"foo" = type { i8 } + +@llvm.used = appending global [1 x i8*] [i8* bitcast (i32 (%"foo"*)* @bar to i8*)], section "llvm.metadata" + +; Function Attrs: norecurse nounwind readnone uwtable +define dso_local i32 @bar(%"foo"* nocapture readnone %this) align 2 !type !0 { +entry: + ret i32 0 +} + +!0 = !{i64 0, !"typeid1"} diff --git a/llvm/test/LTO/Resolution/X86/appending-var.ll b/llvm/test/LTO/Resolution/X86/appending-var.ll new file mode 100644 index 00000000000..4d259d7f8db --- /dev/null +++ b/llvm/test/LTO/Resolution/X86/appending-var.ll @@ -0,0 +1,16 @@ +; Check we don't crash when linking a global variable with appending linkage +; if the types in their elements don't have a straightforward mapping, forcing +; us to use bitcasts. + +; RUN: opt %s -o %t1.o +; RUN: opt %p/Inputs/appending-var-2.ll -o %t2.o + +; RUN: llvm-lto2 run -o %t3.o %t1.o %t2.o -r %t1.o,bar, -r %t2.o,bar,px + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"foo.1" = type { i8, i8 } +declare dso_local i32 @bar(%"foo.1"* nocapture readnone %this) local_unnamed_addr + +@llvm.used = appending global [1 x i8*] [i8* bitcast (i32 (%"foo.1"*)* @bar to i8*)], section "llvm.metadata" |