mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
321b5c87a4
Summary: Amend MS offset operator implementation, to more closely fit with its MS counterpart: 1. InlineAsm: evaluate non-local source entities to their (address) location 2. Provide a mean with which one may acquire the address of an assembly label via MS syntax, rather than yielding a memory reference (i.e. "offset asm_label" and "$asm_label" should be synonymous 3. address PR32530 Based on http://llvm.org/D37461 Fix broken test where the break appears unrelated. - Set up appropriate memory-input rewrites for variable references. - Intel-dialect assembly printing now correctly handles addresses by adding "offset". - Pass offsets as immediate operands (using "r" constraint for offsets of locals). Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D71436
16 lines
591 B
LLVM
16 lines
591 B
LLVM
; RUN: llc -mtriple=x86_64-unknown-linux-gnu -x86-asm-syntax=intel -relocation-model=static < %s | FileCheck %s
|
|
|
|
; Test we are emitting the 'offset' operator upon an immediate reference of a label:
|
|
; The emitted 'att-equivalent' of this one is "movl $.L.str, %eax"
|
|
|
|
@.str = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
|
|
|
|
define i8* @test_offset_operator() {
|
|
; CHECK-LABEL: test_offset_operator:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: mov eax, offset .L.str
|
|
; CHECK-NEXT: ret
|
|
entry:
|
|
ret i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)
|
|
}
|