diff options
author | Richard Guenther <rguenther@suse.de> | 2012-05-18 12:09:49 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-18 12:09:49 +0000 |
commit | 7595989bb427bc128b6752ee312d4d1b7b945f99 (patch) | |
tree | 9aae7ac764f8a15c859e29be337d0f35b644b903 /gcc | |
parent | 917a52020ad1cc0d799476bffcc900a1a14824f5 (diff) | |
download | gcc-7595989bb427bc128b6752ee312d4d1b7b945f99.zip gcc-7595989bb427bc128b6752ee312d4d1b7b945f99.tar.gz gcc-7595989bb427bc128b6752ee312d4d1b7b945f99.tar.bz2 |
re PR tree-optimization/53390 (ICE: tree check: expected integer_cst, have nop_expr in vect_compute_data_ref_alignmen on 32-bit x86 host)
2012-05-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53390
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Ignore
strided loads.
* gcc.dg/torture/pr53390.c: New testcase.
From-SVN: r187653
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr53390.c | 21 | ||||
-rw-r--r-- | gcc/tree-vect-data-refs.c | 5 |
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d91248..70571cd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-18 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/53390 + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Ignore + strided loads. + 2012-05-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * tree-ssa-reassoc.c (bip_map): Remove decl. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64a011c..fb6ede6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-18 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/53390 + * gcc.dg/torture/pr53390.c: New testcase. + 2012-05-18 Meador Inge <meadori@codesourcery.com> PR rtl-optimization/53352 diff --git a/gcc/testsuite/gcc.dg/torture/pr53390.c b/gcc/testsuite/gcc.dg/torture/pr53390.c new file mode 100644 index 0000000..72a25c5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr53390.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ + +extern unsigned short var1; +extern int var2; + +extern struct { + int f1; + unsigned short *f2; +} *my_table; + +void foo(void) +{ + unsigned short *local_vec + = __builtin_malloc(var1 * var2 * sizeof(unsigned short)); + unsigned short i; + + my_table[0].f2 = __builtin_malloc(var1 * sizeof(unsigned short)); + + for (i = 0; i < var1; ++i) + my_table[0].f2[i] = local_vec[i * var2]; +} diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index c8882ae..a5ed053 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -824,6 +824,11 @@ vect_compute_data_ref_alignment (struct data_reference *dr) /* Initialize misalignment to unknown. */ SET_DR_MISALIGNMENT (dr, -1); + /* Strided loads perform only component accesses, misalignment information + is irrelevant for them. */ + if (STMT_VINFO_STRIDE_LOAD_P (stmt_info)) + return true; + misalign = DR_INIT (dr); aligned_to = DR_ALIGNED_TO (dr); base_addr = DR_BASE_ADDRESS (dr); |