From f064ebd17debbb055d5cb445176fea22ea1eedbb Mon Sep 17 00:00:00 2001 From: law Date: Thu, 23 Feb 2006 22:47:58 +0000 Subject: [PATCH] PR tree-optimization/26425 * tree-vrp.c (vrp_visit_assignment): If the LHS's type has a NULL min/max, then assume its varying. * gcc.c-torture/compile/pr26425.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111399 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.c-torture/compile/pr26425.c | 9 +++++++++ gcc/tree-vrp.c | 6 +++++- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr26425.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4400f9a6160..af10e692f11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-23 Jeff Law + + PR tree-optimization/26425 + * tree-vrp.c (vrp_visit_assignment): If the LHS's type has a NULL + min/max, then assume its varying. + 2006-02-23 Zdenek Dvorak PR rtl-optimization/26316 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d359f12314..b9efba3f62d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2006-02-23 Jeff Law + + * gcc.c-torture/compile/pr26425.c: New test. + 2006-02-23 Jakub Jelinek PR middle-end/26412 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26425.c b/gcc/testsuite/gcc.c-torture/compile/pr26425.c new file mode 100644 index 00000000000..8931b401426 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr26425.c @@ -0,0 +1,9 @@ +struct keyring_list { + struct key *keys[0]; +}; +void keyring_destroy(struct keyring_list *keyring, unsigned short a) +{ + int loop; + for (loop = a - 1; loop >= 0; loop--) + key_put(keyring->keys[loop]); +} diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 911ccb2e632..c0fb35a9e88 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -3375,7 +3375,11 @@ vrp_visit_assignment (tree stmt, tree *output_p) /* We only keep track of ranges in integral and pointer types. */ if (TREE_CODE (lhs) == SSA_NAME - && (INTEGRAL_TYPE_P (TREE_TYPE (lhs)) + && ((INTEGRAL_TYPE_P (TREE_TYPE (lhs)) + /* It is valid to have NULL MIN/MAX values on a type. See + build_range_type. */ + && TYPE_MIN_VALUE (TREE_TYPE (lhs)) + && TYPE_MAX_VALUE (TREE_TYPE (lhs))) || POINTER_TYPE_P (TREE_TYPE (lhs)))) { struct loop *l; -- 2.11.0