* gcc.c-torture/execute/20020529-1.c: New test.
From-SVN: r53998
This commit is contained in:
parent
4d4d89e283
commit
5a3bb17d71
@ -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>
|
2002-05-27 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* g++.dg/ext/attrib6.C: New test case.
|
* g++.dg/ext/attrib6.C: New test case.
|
||||||
|
78
gcc/testsuite/gcc.c-torture/execute/20020529-1.c
Normal file
78
gcc/testsuite/gcc.c-torture/execute/20020529-1.c
Normal 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 ();
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user