aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-09-22 13:17:24 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-09-22 13:17:24 +0200
commitcf352092e2ec219b0c841cb6e49d876a4b312bca (patch)
tree8f7885ede46d699c3f4c553dd975517f72352e04 /gcc/tree-inline.c
parent8a4c4f1273679f493dd513b3dc0e9e1952459bd4 (diff)
downloadgcc-cf352092e2ec219b0c841cb6e49d876a4b312bca.zip
gcc-cf352092e2ec219b0c841cb6e49d876a4b312bca.tar.gz
gcc-cf352092e2ec219b0c841cb6e49d876a4b312bca.tar.bz2
re PR tree-optimization/77665 (ICE in expand_GOMP_SIMD_VF, at internal-fn.c:172)
PR fortran/77665 * tree-inline.c (remap_gimple_stmt): Set has_simduid_loops for all IFN_GOMP_SIMD_* internal fns, not just for IFN_GOMP_SIMD_ORDERED_*. * gfortran.dg/gomp/pr77665.f90: New test. From-SVN: r240348
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 83ba423..8a06e29 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1644,11 +1644,19 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
gimple_call_set_tail (call_stmt, false);
if (gimple_call_from_thunk_p (call_stmt))
gimple_call_set_from_thunk (call_stmt, false);
- if (gimple_call_internal_p (call_stmt)
- && IN_RANGE (gimple_call_internal_fn (call_stmt),
- IFN_GOMP_SIMD_ORDERED_START,
- IFN_GOMP_SIMD_ORDERED_END))
- DECL_STRUCT_FUNCTION (id->dst_fn)->has_simduid_loops = true;
+ if (gimple_call_internal_p (call_stmt))
+ switch (gimple_call_internal_fn (call_stmt))
+ {
+ case IFN_GOMP_SIMD_LANE:
+ case IFN_GOMP_SIMD_VF:
+ case IFN_GOMP_SIMD_LAST_LANE:
+ case IFN_GOMP_SIMD_ORDERED_START:
+ case IFN_GOMP_SIMD_ORDERED_END:
+ DECL_STRUCT_FUNCTION (id->dst_fn)->has_simduid_loops = true;
+ break;
+ default:
+ break;
+ }
}
/* Remap the region numbers for __builtin_eh_{pointer,filter},