re PR tree-optimization/36449 (Incorrect code generated for access to a large struct)
PR middle-end/36449 * g++.dg/opt/pr36449.C: New test. From-SVN: r139859
This commit is contained in:
parent
a64a8f2f26
commit
840018d9d1
2 changed files with 75 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-09-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/36449
|
||||
* g++.dg/opt/pr36449.C: New test.
|
||||
|
||||
2008-08-31 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c/37271
|
||||
|
|
70
gcc/testsuite/g++.dg/opt/pr36449.C
Normal file
70
gcc/testsuite/g++.dg/opt/pr36449.C
Normal file
|
@ -0,0 +1,70 @@
|
|||
// PR middle-end/36449
|
||||
// { dg-do run }
|
||||
// { dg-options "-O3" }
|
||||
|
||||
extern "C" void exit (int);
|
||||
extern "C" void abort ();
|
||||
|
||||
struct R
|
||||
{
|
||||
short a;
|
||||
short b;
|
||||
};
|
||||
|
||||
struct S
|
||||
{
|
||||
R e;
|
||||
long f;
|
||||
long g;
|
||||
};
|
||||
|
||||
struct T
|
||||
{
|
||||
short c;
|
||||
short d;
|
||||
};
|
||||
|
||||
struct U
|
||||
{
|
||||
long h[0x1ffffff + 1];
|
||||
T i;
|
||||
};
|
||||
|
||||
U *j;
|
||||
|
||||
void __attribute__((noinline))
|
||||
bar ()
|
||||
{
|
||||
exit (0);
|
||||
}
|
||||
|
||||
void __attribute__((noinline))
|
||||
foo ()
|
||||
{
|
||||
S s;
|
||||
|
||||
s.e.a = 36;
|
||||
s.e.b = 38;
|
||||
if (s.e.a == j->i.c && s.e.b == j->i.d)
|
||||
bar ();
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
try
|
||||
{
|
||||
j = new U;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
j->i.c = 36;
|
||||
j->i.d = 38;
|
||||
j->h[0] = 1;
|
||||
j->h[1] = 2;
|
||||
j->h[2] = 3;
|
||||
foo ();
|
||||
abort ();
|
||||
}
|
Loading…
Add table
Reference in a new issue