Modify return pseudo-instructions to have pairs of registers: virtual and real. This allows us to constrain the virtual registers to the real ones specified by the abi, instead of directly emitting moves to those real registers.
27 lines
555 B
Plaintext
27 lines
555 B
Plaintext
test compile precise-output
|
|
set tls_model=elf_gd
|
|
target s390x
|
|
|
|
function u0:0(i32) -> i64 {
|
|
gv0 = symbol colocated tls u1:0
|
|
|
|
block0(v0: i32):
|
|
v1 = global_value.i64 gv0
|
|
return v1
|
|
}
|
|
|
|
; stmg %r12, %r15, 96(%r15)
|
|
; aghi %r15, -160
|
|
; virtual_sp_offset_adjust 160
|
|
; block0:
|
|
; larl %r12, %ElfGlobalOffsetTable + 0
|
|
; bras %r1, 12 ; data userextname0@tlsgd ; lg %r2, 0(%r1)
|
|
; brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
|
|
; ear %r3, %a0
|
|
; sllg %r5, %r3, 32
|
|
; ear %r5, %a1
|
|
; agr %r2, %r5
|
|
; lmg %r12, %r15, 256(%r15)
|
|
; br %r14
|
|
|