Viewing file: 20020529-1.c (1.37 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR target/6838 from cato@df.lth.se. cris-elf got an ICE with -O2: the insn matching (insn 49 48 52 (parallel[ (set (mem/s:HI (plus:SI (reg/v/f:SI 0 r0 [24]) (const_int 8 [0x8])) [5 <variable>.c+0 S2 A8]) (reg:HI 2 r2 [27])) (set (reg/f:SI 2 r2 [31]) (plus:SI (reg/v/f:SI 0 r0 [24]) (const_int 8 [0x8]))) ] ) 24 {*mov_sidehi_mem} (nil) (nil)) forced a splitter through the output pattern "#", but there was no matching splitter. */
/* The ptx assembler appears to clobber 'b' inside foo during the f1 call. Reported to nvidia 2016-05-18. */ /* { dg-skip-if "PTX assembler bug" { nvptx-*-* } { "-O0" } { "" } } */
struct xx { int a; struct xx *b; short c; };
int f1 (struct xx *); void f2 (void);
int foo (struct xx *p, int b, int c, int d) { int a;
for (;;) { a = f1(p); if (a) return (0); if (b) continue; p->c = d; if (p->a) f2 (); if (c) f2 (); d = p->c; switch (a) { case 1: if (p->b) f2 (); if (c) f2 (); default: break; } } return d; }
int main (void) { struct xx s = {0, &s, 23}; if (foo (&s, 0, 0, 0) != 0 || s.a != 0 || s.b != &s || s.c != 0) abort (); exit (0); }
int f1 (struct xx *p) { static int beenhere = 0; if (beenhere++ > 1) abort (); return beenhere > 1; }
void f2 (void) { abort (); }
|