diff options
author | Richard Guenther <rguenther@suse.de> | 2010-07-02 12:05:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-07-02 12:05:59 +0000 |
commit | 19368333588ed6b99b62b0a48e54e007db380286 (patch) | |
tree | f8bf11107b22f897df0742d75fe33c354e2249c7 /gcc/tree-data-ref.c | |
parent | 2334baf4907c77615b44d9ce15a6ae95246b548b (diff) | |
download | gcc-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.c | 9 |
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; |