aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-01-10 00:39:06 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-01-10 00:39:06 +0100
commitcd4447e235c721a54746936f4ce9265c754af7f1 (patch)
tree3376cef8332c75e667c4d25c2edd75bf0515e2de /gcc
parent4bc44ceb91c0f7ad3250b8b01bdebe4e8b003f86 (diff)
downloadgcc-cd4447e235c721a54746936f4ce9265c754af7f1.zip
gcc-cd4447e235c721a54746936f4ce9265c754af7f1.tar.gz
gcc-cd4447e235c721a54746936f4ce9265c754af7f1.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr59670.c15
-rw-r--r--gcc/tree-vect-data-refs.c7
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3d66bcb..ad1f55e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <sellcey@mips.com>
* Makefile.in (TREE_FLOW_H): Remove.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3379e90..9176d95 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/59670
+ * gcc.dg/pr59670.c: New test.
+
2014-01-09 Steve Ellcey <sellcey@mips.com>
* 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 0000000..a68253b
--- /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 ae9189c..165e41f 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);