* gcc.c-torture/execute/20020529-1.c: New test.

From-SVN: r53998
This commit is contained in:
Hans-Peter Nilsson 2002-05-29 16:09:09 +00:00 committed by Hans-Peter Nilsson
parent 4d4d89e283
commit 5a3bb17d71
2 changed files with 82 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2002-05-29 Hans-Peter Nilsson <hp@axis.com>
* gcc.c-torture/execute/20020529-1.c: New test.
2002-05-27 Richard Henderson <rth@redhat.com>
* g++.dg/ext/attrib6.C: New test case.

View File

@ -0,0 +1,78 @@
/* 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. */
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 ();
}