arm64/isel: Avoid signed overflow when handling immediates
[qbe.git] / test / abi4.ssa
blob47255bf9ea08c3b1019d4c060815e929e136468c
1 # return a large struct to C
3 type :mem = { b 17 }
5 function $alpha(l %p, w %l, l %n) {
6 @ini
7         %pe =l add %p, %n
8 @lop
9         %p1 =l phi @ini %p, @lop %p2
10         %l1 =w phi @ini %l, @lop %l2
11         storeb %l1, %p1
12         %p2 =l add %p1, 1
13         %l2 =w add %l1, 1
14         %c1 =w ceql %p1, %pe
15         jnz %c1, @end, @lop
16 @end
17         storeb 0, %pe
18         ret
21 export
22 function :mem $test() {
23 @ini
24         %p =l alloc4 17
25         %r0 =w call $alpha(l %p, w 65, l 16)
26         ret %p
30 # >>> driver
31 # #include <stdio.h>
32 # typedef struct { char t[17]; } mem;
33 # extern mem test(void);
34 # int main() { mem m = test(); printf("%s\n", m.t); return 0; }
35 # <<<
37 # >>> output
38 # ABCDEFGHIJKLMNOP
39 # <<<