openmp: Avoid ICEs with declare simd; declare simd inbranch [PR93555]
authorJakub Jelinek <jakub@redhat.com>
Wed, 5 Feb 2020 10:32:37 +0000 (11:32 +0100)
committerJakub Jelinek <jakub@redhat.com>
Wed, 5 Feb 2020 10:32:37 +0000 (11:32 +0100)
commitb843bcb89519293404bb00d2ed09aae529b54d7f
treebcc9c051915ffe04939c1c31d9460d9bcf97d08f
parent27736735f6fcba464b90c3a9dff13b7e5c8bdc6e
openmp: Avoid ICEs with declare simd; declare simd inbranch [PR93555]

The testcases ICE because when processing the declare simd inbranch,
we don't create the i == 0 clone as it already exists, which means
clone_info->nargs is not adjusted, but we then rely on it being adjusted
when trying other clones.

2020-02-05  Jakub Jelinek  <jakub@redhat.com>

PR middle-end/93555
* omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
simd_clone_create failed when i == 0, adjust clone->nargs by
clone->inbranch.

* c-c++-common/gomp/pr93555-1.c: New test.
* c-c++-common/gomp/pr93555-2.c: New test.
* gfortran.dg/gomp/pr93555.f90: New test.
gcc/ChangeLog
gcc/omp-simd-clone.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/gomp/pr93555-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/pr93555-2.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/pr93555.f90 [new file with mode: 0644]