This patch expands two LTO test cases to check other aspects. 1) weak.ll has been expanded to show that it doesn't matter whether the first appearance of a weak symbol appears in a bitcode file or native object - that one is picked. 2) reproduce-lto.ll has been expanded to show that the bitcode files are stored in the reproduce package and that intermediate files (such as the LTO-compiled object) are not. Differential Revision: https://reviews.llvm.org/D88094 Reviewed by: grimar, MaskRay
49 lines
1.5 KiB
LLVM
49 lines
1.5 KiB
LLVM
; REQUIRES: x86
|
|
|
|
;; 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: split-file %s %t
|
|
|
|
; 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
|
|
|
|
; 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: a
|
|
; CHECK-NEXT: Value:
|
|
; CHECK-NEXT: Size: [[SIZE]]
|
|
; CHECK-NEXT: Binding: Weak
|
|
; CHECK-NEXT: Type: Object
|
|
; CHECK-NEXT: Other: 0
|
|
; 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"
|
|
|
|
@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"
|
|
|
|
@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"
|
|
|
|
@a = weak global i32 1
|