1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/LTO/X86/inline-asm-lto-discard2.ll
Yuanfang Chen f44fb33098 [LTO][MC] Discard non-prevailing defined symbols in module-level assembly
This is the alternative approach to D96931.

In LTO, for each module with inlineasm block, prepend directive ".lto_discard <sym>, <sym>*" to the beginning of the inline
asm.  ".lto_discard" is both a module inlineasm block marker and (optionally) provides a list of symbols to be discarded.

In MC while emitting for inlineasm, discard symbol binding & symbol
definitions according to ".lto_disard".

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D98762
2021-03-18 15:33:42 -07:00

30 lines
777 B
LLVM

; Check that
; 1. ".lto_discard" works as module inlineasm marker and its argument symbols
; are discarded.
; 2. there is no reassignment error in the presence of ".lto_discard"
; RUN: llc < %s | FileCheck %s
; CHECK: .data
; CHECK-NOT: .weak foo
; CHECK-NOT: .set foo, bar
; CHECK: .globl foo
; CHECK: foo:
; CHECK: .byte 1
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
module asm ".lto_discard foo"
module asm " .text"
module asm "bar:"
module asm " .data"
module asm ".weak foo"
module asm ".set foo, bar"
module asm ".weak foo"
module asm ".set foo, bar"
module asm ".lto_discard"
module asm ".globl foo"
module asm "foo:"
module asm " .byte 1"