diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-09-07 20:19:47 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-09-07 20:19:47 +0000 |
commit | 8eb4629a6b9e82226a3a68640a5526478ba05187 (patch) | |
tree | 1a90c1b87338ba2a174420f9a01b209938ff11bd | |
parent | cda45e54690704301689e9d2b33ca378698538d3 (diff) | |
download | gcc-8eb4629a6b9e82226a3a68640a5526478ba05187.tar.gz |
Backported from mainline
2017-08-03 Jakub Jelinek <jakub@redhat.com>
PR middle-end/81052
* omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
(pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
* c-c++-common/pr81052.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251849 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/omp-low.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/pr81052.c | 28 |
4 files changed, 47 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96478229127..9a044ec40d5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-09-07 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2017-08-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/81052 + * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp. + (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd. + 2017-09-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Backport from mainline: diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 968075c3df5..4be948ce26c 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -9089,7 +9089,7 @@ diagnose_sb_0 (gimple_stmt_iterator *gsi_p, } if (kind == NULL) { - gcc_checking_assert (flag_openmp); + gcc_checking_assert (flag_openmp || flag_openmp_simd); kind = "OpenMP"; } @@ -9349,7 +9349,7 @@ public: /* opt_pass methods: */ virtual bool gate (function *) { - return flag_cilkplus || flag_openacc || flag_openmp; + return flag_cilkplus || flag_openacc || flag_openmp || flag_openmp_simd; } virtual unsigned int execute (function *) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ca8ce576a0b..a5d990b8a29 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2017-09-07 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2017-08-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/81052 + * c-c++-common/pr81052.c: New test. + 2017-09-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Backport from mainline: diff --git a/gcc/testsuite/c-c++-common/pr81052.c b/gcc/testsuite/c-c++-common/pr81052.c new file mode 100644 index 00000000000..6bc2879951e --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr81052.c @@ -0,0 +1,28 @@ +/* PR middle-end/81052 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp-simd -O2" } */ + +int +foo (int x, int y) +{ + int i; +#pragma omp simd + for (i = x; i < y; ++i) + return 0; /* { dg-error "invalid branch to/from OpenMP structured block" } */ + return 1; +} + +#ifdef __cplusplus +template <typename T> +T +bar (T x, T y) +{ + T i; +#pragma omp simd + for (i = x; i < y; ++i) + return 0; /* { dg-error "invalid branch to/from OpenMP structured block" "" { target c++ } } */ + return 1; +} + +int x = bar (1, 7); +#endif |