aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDirk Mueller <dmueller@suse.de>2007-11-23 23:02:21 +0000
committerDirk Mueller <mueller@gcc.gnu.org>2007-11-23 23:02:21 +0000
commit88df9da15894541d19330b2f2d6cd301ce4f4cbf (patch)
treec2bed6268f34a3f711cee93ae89b98112aa01a61 /gcc
parentb96817da11c613095421177f06a1936a3e9bbf54 (diff)
downloadgcc-88df9da15894541d19330b2f2d6cd301ce4f4cbf.zip
gcc-88df9da15894541d19330b2f2d6cd301ce4f4cbf.tar.gz
gcc-88df9da15894541d19330b2f2d6cd301ce4f4cbf.tar.bz2
re PR middle-end/34197 (array overflow warning without line number)
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(). Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r130385
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vrp.c8
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 730dec3..4c34686 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 dfb2820..00264d9 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)