mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
f44fb33098
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
30 lines
777 B
LLVM
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"
|