From: Andrew Pinski Date: Sat, 23 Jul 2005 02:20:30 +0000 (+0000) Subject: re PR tree-optimization/22625 (-ftree-vrp produces wrong code) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=452f9012f4f080c48e297470903b330416328e3c;p=gcc.git re PR tree-optimization/22625 (-ftree-vrp produces wrong code) 2005-07-22 Andrew Pinski PR tree-opt/22625 * g++.dg/opt/vrp2.C: New test. From-SVN: r102303 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64a5887655a..0bc99d01ad7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-07-22 Andrew Pinski + + PR tree-opt/22625 + * g++.dg/opt/vrp2.C: New test. + 2005-07-22 Mark Mitchell PR debug/21828 diff --git a/gcc/testsuite/g++.dg/opt/vrp2.C b/gcc/testsuite/g++.dg/opt/vrp2.C new file mode 100644 index 00000000000..2568f646ddd --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/vrp2.C @@ -0,0 +1,20 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +/* VRP was miscompiling the following as it thought &a->b was a dereference + and therfore a was non-null. + Reduced from Mozilla by Serge Belyshev . */ + +extern "C" void abort (void); +struct T { int i; } t; +struct A : T { int j; } q, *p = &q; + +int main (void) +{ + if (p == &t) + return 0; + if (p) + abort (); + return 0; +} +