From 452f9012f4f080c48e297470903b330416328e3c Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Sat, 23 Jul 2005 02:20:30 +0000 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/vrp2.C | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/vrp2.C 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; +} + -- 2.30.2