--TEST-- Simple CALL with VADDR --TARGET-- aarch64 --ARGS-- -S --run --CODE-- { uintptr_t c_1 = 0; bool c_2 = 0; bool c_3 = 1; int32_t c_4 = 42; char h = 'h'; char i = 'i'; char sp = ' '; char pc = '%'; char d = 'd'; char nl = '\n'; char zero = 0; uintptr_t one = 1; uintptr_t c_5 = func(printf, 4); l_1 = START(l_4); uint64_t var_1 = VAR(l_1, "str"); uintptr_t a_0 = VADDR(var_1); s_1 = STORE(l_1, a_0, h); uintptr_t a_1 = ADD(a_0, one); s_2 = STORE(s_1, a_1, i); uintptr_t a_2 = ADD(a_1, one); s_3 = STORE(s_2, a_2, sp); uintptr_t a_3 = ADD(a_2, one); s_4 = STORE(s_3, a_3, pc); uintptr_t a_4 = ADD(a_3, one); s_5 = STORE(s_4, a_4, d); uintptr_t a_5 = ADD(a_4, one); s_6 = STORE(s_5, a_5, nl); uintptr_t a_6 = ADD(a_5, one); s_7 = STORE(s_6, a_6, zero); int32_t d_2, l_2 = CALL/2(s_7, c_5, a_0, c_4); l_4 = RETURN(l_2, d_2); } --EXPECT-- main: stp x29, x30, [sp, #-0x20]! mov x29, sp add x0, x29, #0x10 movz w1, #0x68 strb w1, [x0] movz w1, #0x69 strb w1, [x0, #1] movz w1, #0x20 strb w1, [x0, #2] movz w1, #0x25 strb w1, [x0, #3] movz w1, #0x64 strb w1, [x0, #4] movz w1, #0xa strb w1, [x0, #5] strb wzr, [x0, #6] movz w1, #0x2a bl printf ldp x29, x30, [sp], #0x20 ret hi 42 exit code = 6