From: Jakub Jelinek Date: Thu, 9 Jan 2014 23:39:06 +0000 (+0100) Subject: re PR middle-end/59670 (ICE: expected gimple_call(error_mark), have gimple_assign... X-Git-Tag: releases/gcc-4.9.0~1732 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd4447e235c721a54746936f4ce9265c754af7f1;p=thirdparty%2Fgcc.git re PR middle-end/59670 (ICE: expected gimple_call(error_mark), have gimple_assign(plus_expr) in gimple_call_internal_p, at gimple.h:2432) PR middle-end/59670 * tree-vect-data-refs.c (vect_analyze_data_refs): Check is_gimple_call before calling gimple_call_internal_p. * gcc.dg/pr59670.c: New test. From-SVN: r206503 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3d66bcb187cd..ad1f55e10dac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-10 Jakub Jelinek + + PR middle-end/59670 + * tree-vect-data-refs.c (vect_analyze_data_refs): Check + is_gimple_call before calling gimple_call_internal_p. + 2014-01-09 Steve Ellcey * Makefile.in (TREE_FLOW_H): Remove. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3379e902d48d..9176d95ebe0b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-10 Jakub Jelinek + + PR middle-end/59670 + * gcc.dg/pr59670.c: New test. + 2014-01-09 Steve Ellcey * gcc.dg/delay-slot-1.c: Restrict -mabi=64 to 64 bit processors. diff --git a/gcc/testsuite/gcc.dg/pr59670.c b/gcc/testsuite/gcc.dg/pr59670.c new file mode 100644 index 000000000000..a68253b4b637 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59670.c @@ -0,0 +1,15 @@ +/* PR middle-end/59670 */ +/* { dg-do compile } */ +/* { dg-options "-O1 -fopenmp-simd" } */ + +int d[1024]; + +int +foo (int j, int b) +{ + int l, c = 0; +#pragma omp simd reduction(+: c) + for (l = 0; l < b; ++l) + c += d[j + l]; + return c; +} diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index ae9189cf476b..165e41faff14 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -3320,9 +3320,10 @@ again: { gimple def = SSA_NAME_DEF_STMT (off); tree reft = TREE_TYPE (DR_REF (newdr)); - if (gimple_call_internal_p (def) - && gimple_call_internal_fn (def) - == IFN_GOMP_SIMD_LANE) + if (is_gimple_call (def) + && gimple_call_internal_p (def) + && (gimple_call_internal_fn (def) + == IFN_GOMP_SIMD_LANE)) { tree arg = gimple_call_arg (def, 0); gcc_assert (TREE_CODE (arg) == SSA_NAME);