diff options
author | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-12-19 21:00:50 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-12-19 21:00:50 -0800 |
commit | 7954dc21214b87ad8b3cf26994af00f968fcba78 (patch) | |
tree | df882d04a823c13b4fd210d1da5ce8af48652fef /gcc | |
parent | 69a0f8c61ea99c4cc9dc551e7523180e197d525f (diff) | |
download | gcc-7954dc21214b87ad8b3cf26994af00f968fcba78.zip gcc-7954dc21214b87ad8b3cf26994af00f968fcba78.tar.gz gcc-7954dc21214b87ad8b3cf26994af00f968fcba78.tar.bz2 |
re PR tree-optimization/30045 (ICE in nonnull_arg_p with the CHAIN decl)
2006-12-19 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/30045
* tree-vrp.c (nonnull_arg_p): Treat the static decl as always
non null.
2006-12-19 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/30045
* gcc.dg/pr30045.c: New test
From-SVN: r120069
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr30045.c | 15 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 4 |
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d692458..a5aadaf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-12-19 Andrew Pinski <pinskia@gmail.com> + + PR tree-opt/30045 + * tree-vrp.c (nonnull_arg_p): Treat the static decl as always + non null. + 2006-12-20 Ben Elliston <bje@au.ibm.com> * doc/invoke.texi (Optimize Options): Typo fix. @@ -18,8 +24,8 @@ 2006-12-19 Paolo Bonzini <bonzini@gnu.org> PR bootstrap/29544 - * gcc/Makefile.in (STAGE1_CHECKING): Rename to... - (STAGE1_CHECKING_CFLAGS): ... this. + * gcc/Makefile.in (STAGE1_CHECKING): Rename to... + (STAGE1_CHECKING_CFLAGS): ... this. 2006-12-18 Andrew Pinski <pinskia@gmail.com> diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 538cba6..2f5d6b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-19 Andrew Pinski <pinskia@gmail.com> + + PR tree-opt/30045 + * gcc.dg/pr30045.c: New test. + 2006-12-20 Ben Elliston <bje@au.ibm.com> * gcc.dg/20020312-2.c: Add a case for __SPU__. diff --git a/gcc/testsuite/gcc.dg/pr30045.c b/gcc/testsuite/gcc.dg/pr30045.c new file mode 100644 index 0000000..6dd22a1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr30045.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-inline" } */ +int f(int *a) +{ + int __attribute__((nonnull(1))) g(int *b) + { + int **c = &a; + if (b) + return *a + **c; + return *b; + } + if (a) + return g(a); + return 1; +} diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 483607e..302a620 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -102,6 +102,10 @@ nonnull_arg_p (tree arg) gcc_assert (TREE_CODE (arg) == PARM_DECL && POINTER_TYPE_P (TREE_TYPE (arg))); + /* The static chain decl is always non null. */ + if (arg == cfun->static_chain_decl) + return true; + fntype = TREE_TYPE (current_function_decl); attrs = lookup_attribute ("nonnull", TYPE_ATTRIBUTES (fntype)); |