c++: normalizing ttp constraints [PR115656]
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / pr54009.c
blob9af98ab6c8b7eeb664c682c74954f5bb6b87c78d
1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-require-effective-target powerpc_fprs } */
3 /* { dg-options "-O2" } */
4 /* { dg-final { scan-assembler-not "\[\+\]32768" } } */
6 /* -O2 -m32 store to x.d in w was
7 lis 9,x+32764@ha
8 stw 10,x+32764@l(9)
9 stw 11,x+32768@l(9) <-- wrap! */
11 struct big {
12 char a[32764];
13 double d __attribute__ ((aligned (4)));
14 } __attribute__ ((packed));
16 extern struct big x;
17 double y;
19 void r (void)
21 double tmp = x.d;
22 #if 1
23 asm ("#": "+r" (tmp)
24 : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
25 "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
26 "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
27 "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
28 #endif
29 y = tmp;
32 void w (void)
34 double tmp = y;
35 #if 1
36 asm ("#": "+r" (tmp)
37 : : "fr0", "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7",
38 "fr8", "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15",
39 "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23",
40 "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31");
41 #endif
42 x.d = tmp;