]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/59670 (ICE: expected gimple_call(error_mark), have gimple_assign...
authorJakub Jelinek <jakub@redhat.com>
Thu, 9 Jan 2014 23:39:06 +0000 (00:39 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 9 Jan 2014 23:39:06 +0000 (00:39 +0100)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr59670.c [new file with mode: 0644]
gcc/tree-vect-data-refs.c

index 3d66bcb187cd86cff7a29fdd38523c319baf1cda..ad1f55e10dac172cce4682e9cfec53d72195ec68 100644 (file)
@@ -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.
index 3379e902d48d11d42c042561a62a4af13b7cfee0..9176d95ebe0bce19a8673cd50636cb7f4eb41511 100644 (file)
@@ -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 (file)
index 0000000..a68253b
--- /dev/null
@@ -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;
+}
index ae9189cf476be2f8299056f0d37ae6c216a1360e..165e41faff1498b0f972bedad2e2b6e6938e84bd 100644 (file)
@@ -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);