mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 06:29:05 +00:00
Generalize the API so we can distinguish symbols that are needed just for a DSO symbol table from those that are used from some native .o. The symbols that are only wanted for the dso symbol table can be dropped if llvm can prove every other dso has a copy (linkonce_odr) and the address is not important (unnamed_addr). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191922 91177308-0d34-0410-b5e6-96231b3b80d8
38 lines
1.2 KiB
LLVM
38 lines
1.2 KiB
LLVM
; RUN: llvm-as < %s >%t1
|
|
; RUN: llvm-lto -o %t2 %t1
|
|
; RUN: llvm-nm %t2 | FileCheck %s -check-prefix=NOEXPORT
|
|
; RUN: llvm-lto -o %t3 -exported-symbol=main %t1
|
|
; RUN: llvm-nm %t3 | FileCheck %s -check-prefix=EXPORT
|
|
|
|
; FIXME: we can now build LTO on windows, debug why this fails.
|
|
; XFAIL: win32
|
|
|
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
module asm ".text"
|
|
module asm ".align 16, 0x90"
|
|
module asm ".type PR14512, @function"
|
|
module asm "PR14512:.cfi_startproc"
|
|
module asm "ret"
|
|
module asm ".cfi_endproc"
|
|
|
|
declare void @PR14512()
|
|
|
|
; Without -exported-symbol, main should be eliminated by LTO.
|
|
; With -exported-symbol=main, main should be preserved by LTO.
|
|
define i32 @main(i32 %argc, i8** %argv) {
|
|
; NOEXPORT-NOT: main
|
|
; EXPORT: main
|
|
call void @PR14512()
|
|
ret i32 0
|
|
}
|
|
|
|
; RUN: llvm-lto -o %t -dso-symbol=zed1 -dso-symbol=zed2 %t1 -disable-opt
|
|
; RUN: llvm-nm %t | FileCheck %s -check-prefix=ZED1_AND_ZED2
|
|
; ZED1_AND_ZED2: V zed1
|
|
@zed1 = linkonce_odr global i32 42
|
|
|
|
; ZED1_AND_ZED2: d zed2
|
|
@zed2 = linkonce_odr unnamed_addr global i32 42
|