[PATCH] D88094: [lld][test][ELF] Expand a couple of test cases for LTO behaviour

James Henderson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 03:49:57 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rGa4e42601d44b: [lld][ELF][test] Add a couple of test cases for LTO behaviour (authored by jhenderson).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88094/new/

https://reviews.llvm.org/D88094

Files:
  lld/test/ELF/lto/weak.ll
  lld/test/ELF/reproduce-lto.s


Index: lld/test/ELF/reproduce-lto.s
===================================================================
--- lld/test/ELF/reproduce-lto.s
+++ lld/test/ELF/reproduce-lto.s
@@ -1,4 +1,7 @@
 # REQUIRES: x86
+## Show that bitcode files and inputs to LTO-related options are stored in the
+## reproduce package and that intermediate files (such as the LTO-compiled
+## object) are not.
 
 # RUN: rm -rf %t.dir
 # RUN: mkdir -p %t.dir/build1
@@ -6,5 +9,9 @@
 # RUN: echo > %t.dir/build1/empty_profile.txt
 # RUN: cd %t.dir
 # RUN: ld.lld build1/foo.o -o /dev/null --reproduce repro1.tar --lto-sample-profile=%t.dir/build1/empty_profile.txt
-# RUN: tar tvf repro1.tar | FileCheck %s
-# CHECK: repro1/{{.*}}/empty_profile.txt
+# RUN: tar tvf repro1.tar | FileCheck %s --implicit-check-not={{.}}
+
+# CHECK-DAG: {{.*}} repro1/{{.*}}/empty_profile.txt
+# CHECK-DAG: {{.*}} repro1/response.txt
+# CHECK-DAG: {{.*}} repro1/version.txt
+# CHECK-DAG: {{.*}} repro1/{{.*}}/foo.o
Index: lld/test/ELF/lto/weak.ll
===================================================================
--- lld/test/ELF/lto/weak.ll
+++ lld/test/ELF/lto/weak.ll
@@ -1,22 +1,48 @@
 ; REQUIRES: x86
 
-;; Test weak symbols are supported in LTO.
+;; Test weak symbols are supported in LTO. The first definition should be
+;; used regardless of whether it is from a bitcode file or native object.
 
-; RUN: llvm-as %s -o %t.o
-; RUN: ld.lld %t.o %t.o -o %t.so -shared
-; RUN: llvm-readobj --symbols %t.so | FileCheck %s
+; RUN: split-file %s %t
 
-target triple = "x86_64-unknown-linux-gnu"
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+; RUN: llvm-as %t/size1.ll -o %t-size1.bc
+; RUN: llvm-as %t/size2.ll -o %t-size2.bc
+; RUN: llc %t/size4.ll -o %t-size4.o -filetype=obj
+
+; RUN: ld.lld %t-size1.bc %t-size2.bc -o %t.so -shared
+; RUN: llvm-readobj --symbols %t.so | FileCheck %s -DSIZE=1
+
+; RUN: ld.lld %t-size2.bc %t-size1.bc -o %t2.so -shared
+; RUN: llvm-readobj --symbols %t2.so | FileCheck %s -DSIZE=2
+
+; RUN: ld.lld %t-size1.bc %t-size4.o -o %t3.so -shared
+; RUN: llvm-readobj --symbols %t3.so | FileCheck %s -DSIZE=1
 
-define weak void @f() {
-  ret void
-}
+; RUN: ld.lld %t-size4.o %t-size1.bc -o %t4.so -shared
+; RUN: llvm-readobj --symbols %t4.so | FileCheck %s -DSIZE=4
 
-; CHECK:      Name: f
+; CHECK:      Name: a
 ; CHECK-NEXT: Value:
-; CHECK-NEXT: Size: 1
+; CHECK-NEXT: Size: [[SIZE]]
 ; CHECK-NEXT: Binding: Weak
-; CHECK-NEXT: Type: Function
+; CHECK-NEXT: Type: Object
 ; CHECK-NEXT: Other: 0
-; CHECK-NEXT: Section: .text
+; CHECK-NEXT: Section: .data
+
+;--- size1.ll
+target triple = "x86_64-unknown-linux-gnu"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+ at a = weak global i8 1
+
+;--- size2.ll
+target triple = "x86_64-unknown-linux-gnu"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+ at a = weak global i16 1
+
+;--- size4.ll
+target triple = "x86_64-unknown-linux-gnu"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+ at a = weak global i32 1


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88094.294007.patch
Type: text/x-patch
Size: 3134 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200924/bead7485/attachment.bin>


More information about the llvm-commits mailing list