From: Richard Guenther Date: Fri, 18 May 2012 12:09:49 +0000 (+0000) Subject: re PR tree-optimization/53390 (ICE: tree check: expected integer_cst, have nop_expr... X-Git-Tag: misc/gccgo-go1_1_2~2821 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7595989bb427bc128b6752ee312d4d1b7b945f99;p=thirdparty%2Fgcc.git 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 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d91248aedd5..70571cd4b580 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-18 Richard Guenther + + PR tree-optimization/53390 + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Ignore + strided loads. + 2012-05-18 Bill Schmidt * tree-ssa-reassoc.c (bip_map): Remove decl. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64a011c0e876..fb6ede643aa9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-05-18 Richard Guenther + + PR tree-optimization/53390 + * gcc.dg/torture/pr53390.c: New testcase. + 2012-05-18 Meador Inge 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 000000000000..72a25c52eac2 --- /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 c8882ae39d48..a5ed0533db6c 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);