diff options
| author | mueller <mueller@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-23 23:02:21 +0000 |
|---|---|---|
| committer | mueller <mueller@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-23 23:02:21 +0000 |
| commit | 5d19e882b52b64f9f4fa8c9eca4fc303459f18da (patch) | |
| tree | c2bed6268f34a3f711cee93ae89b98112aa01a61 | |
| parent | 731b672f9ac80010fb48738d2eaac9768b32efe1 (diff) | |
| download | ppe42-gcc-5d19e882b52b64f9f4fa8c9eca4fc303459f18da.tar.gz ppe42-gcc-5d19e882b52b64f9f4fa8c9eca4fc303459f18da.zip | |
2007-11-23 Dirk Mueller <dmueller@suse.de>
Richard Guenther <rguenther@suse.de>
PR middle-end/34197
* tree-vrp.c (check_array_ref): Move check for valid location..
(check_array_bounds) here. Use EXPR_HAS_LOCATION().
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130385 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/tree-vrp.c | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 730dec33329..4c34686d782 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-11-23 Dirk Mueller <dmueller@suse.de> + Richard Guenther <rguenther@suse.de> + + PR middle-end/34197 + * tree-vrp.c (check_array_ref): Move check for valid location.. + (check_array_bounds) here. Use EXPR_HAS_LOCATION(). + 2007-11-23 Hans-Peter Nilsson <hp@axis.com> * reload.c (find_reloads_address_1) <autoincdec cases>: diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index dfb28203948..00264d9a12c 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -4339,7 +4339,7 @@ check_array_ref (tree ref, location_t* locus, bool ignore_off_by_one) low_sub = up_sub = TREE_OPERAND (ref, 1); - if (!up_bound || !locus || TREE_NO_WARNING (ref) + if (!up_bound || TREE_NO_WARNING (ref) || TREE_CODE (up_bound) != INTEGER_CST /* Can not check flexible arrays. */ || (TYPE_SIZE (TREE_TYPE (ref)) == NULL_TREE @@ -4441,6 +4441,12 @@ check_array_bounds (tree *tp, int *walk_subtree, void *data) tree stmt = (tree)data; location_t *location = EXPR_LOCUS (stmt); + if (!EXPR_HAS_LOCATION (stmt)) + { + *walk_subtree = FALSE; + return NULL_TREE; + } + *walk_subtree = TRUE; if (TREE_CODE (t) == ARRAY_REF) |

