summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-02-08 18:47:20 +0000
committerTeresa Johnson <tejohnson@google.com>2016-02-08 18:47:20 +0000
commitd7e88e515c19ccf7ca21d01f1762697a67e1da8e (patch)
treed3d3b67ac83886fbddbbb4c52623554783b5e978 /llvm/test
parent73fe6ce1187f5b4ec2636e5cb3c5120660fcb1e8 (diff)
downloadbcm5719-llvm-d7e88e515c19ccf7ca21d01f1762697a67e1da8e.tar.gz
bcm5719-llvm-d7e88e515c19ccf7ca21d01f1762697a67e1da8e.zip
[ThinLTO] Remove imported available externally defs from comdats.
Summary: Available externally definitions are considered declarations for the linker and eventually dropped. As such they are not allowed to be in comdats. Remove any such imported functions from comdats. Reviewers: rafael Subscribers: davidxl, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D16120 llvm-svn: 260122
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Linker/Inputs/funcimport_comdat.ll4
-rw-r--r--llvm/test/Linker/funcimport_comdat.ll28
2 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/Linker/Inputs/funcimport_comdat.ll b/llvm/test/Linker/Inputs/funcimport_comdat.ll
new file mode 100644
index 00000000000..9a4b9d728d4
--- /dev/null
+++ b/llvm/test/Linker/Inputs/funcimport_comdat.ll
@@ -0,0 +1,4 @@
+define i32 @main() #0 {
+entry:
+ ret i32 0
+}
diff --git a/llvm/test/Linker/funcimport_comdat.ll b/llvm/test/Linker/funcimport_comdat.ll
new file mode 100644
index 00000000000..22276b0e9a0
--- /dev/null
+++ b/llvm/test/Linker/funcimport_comdat.ll
@@ -0,0 +1,28 @@
+; Do setup work for all below tests: generate bitcode and combined index
+; RUN: llvm-as -function-summary %s -o %t.bc
+; RUN: llvm-as -function-summary %p/Inputs/funcimport_comdat.ll -o %t2.bc
+; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc
+
+; Ensure linking of comdat containing external linkage global and function
+; removes the imported available_externally defs from comdat.
+; RUN: llvm-link %t2.bc -functionindex=%t3.thinlto.bc -import=comdat1_func1:%t.bc -S | FileCheck %s --check-prefix=IMPORTCOMDAT
+; IMPORTCOMDAT-NOT: $comdat1 = comdat any
+; IMPORTCOMDAT-NOT: comdat($comdat1)
+
+; Ensure linking of comdat containing internal linkage function with alias
+; removes the imported and promoted available_externally defs from comdat.
+; RUN: llvm-link %t2.bc -functionindex=%t3.thinlto.bc -import=comdat2_func1:%t.bc -S | FileCheck %s --check-prefix=IMPORTCOMDAT2
+; IMPORTCOMDAT2-NOT: $comdat2 = comdat any
+; IMPORTCOMDAT2-NOT: comdat($comdat2)
+
+$comdat1 = comdat any
+@comdat1_glob = global i32 0, comdat($comdat1)
+define void @comdat1_func1() comdat($comdat1) {
+ ret void
+}
+
+$comdat2 = comdat any
+@comdat2_alias = alias void (), void ()* @comdat2_func1
+define internal void @comdat2_func1() comdat($comdat2) {
+ ret void
+}
OpenPOWER on IntegriCloud