aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-data-ref.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-07-02 12:05:59 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-07-02 12:05:59 +0000
commit19368333588ed6b99b62b0a48e54e007db380286 (patch)
treef8bf11107b22f897df0742d75fe33c354e2249c7 /gcc/tree-data-ref.c
parent2334baf4907c77615b44d9ce15a6ae95246b548b (diff)
downloadgcc-19368333588ed6b99b62b0a48e54e007db380286.zip
gcc-19368333588ed6b99b62b0a48e54e007db380286.tar.gz
gcc-19368333588ed6b99b62b0a48e54e007db380286.tar.bz2
tree-data-ref.c (initialize_data_dependence_relation): Handle mismatching number of dimensions properly.
2010-07-02 Richard Guenther <rguenther@suse.de> * tree-data-ref.c (initialize_data_dependence_relation): Handle mismatching number of dimensions properly. * g++.dg/torture/20100702-1.C: New testcase. From-SVN: r161705
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r--gcc/tree-data-ref.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index 7ab7779..e7aa277 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -1452,7 +1452,14 @@ initialize_data_dependence_relation (struct data_reference *a,
return res;
}
- gcc_assert (DR_NUM_DIMENSIONS (a) == DR_NUM_DIMENSIONS (b));
+ /* If the number of dimensions of the access to not agree we can have
+ a pointer access to a component of the array element type and an
+ array access while the base-objects are still the same. Punt. */
+ if (DR_NUM_DIMENSIONS (a) != DR_NUM_DIMENSIONS (b))
+ {
+ DDR_ARE_DEPENDENT (res) = chrec_dont_know;
+ return res;
+ }
DDR_AFFINE_P (res) = true;
DDR_ARE_DEPENDENT (res) = NULL_TREE;