From 4befd127ca7e68a5b418e54e3e9eb9e5eef5a193 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 19 Sep 2013 13:52:52 +0200 Subject: [PATCH] omp-low.c (expand_omp_sections): Always pass len - 1 to GOMP_sections_start, even if !exit_reachable. * omp-low.c (expand_omp_sections): Always pass len - 1 to GOMP_sections_start, even if !exit_reachable. libgomp/ * testsuite/libgomp.c/sections-2.c: New test. From-SVN: r202738 --- gcc/ChangeLog | 5 ++++ gcc/omp-low.c | 3 +-- libgomp/ChangeLog | 4 ++++ libgomp/testsuite/libgomp.c/sections-2.c | 29 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 libgomp/testsuite/libgomp.c/sections-2.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad70c24516e..99218e29f3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-09-19 Jakub Jelinek + + * omp-low.c (expand_omp_sections): Always pass len - 1 to + GOMP_sections_start, even if !exit_reachable. + 2013-09-18 Vladimir Makarov * lra-constraints.c (need_for_all_save_p): Use macro diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 221ae71a1c3..304ea363600 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -5869,8 +5869,7 @@ expand_omp_sections (struct omp_region *region) { /* If we are not inside a combined parallel+sections region, call GOMP_sections_start. */ - t = build_int_cst (unsigned_type_node, - exit_reachable ? len - 1 : len); + t = build_int_cst (unsigned_type_node, len - 1); u = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_START); stmt = gimple_build_call (u, 1, t); } diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 6687169f1ce..67ce62795b0 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2013-09-19 Jakub Jelinek + + * testsuite/libgomp.c/sections-2.c: New test. + 2013-06-28 Marcus Shawcroft * testsuite/libgomp.fortran/strassen.f90: diff --git a/libgomp/testsuite/libgomp.c/sections-2.c b/libgomp/testsuite/libgomp.c/sections-2.c new file mode 100644 index 00000000000..38216befe0b --- /dev/null +++ b/libgomp/testsuite/libgomp.c/sections-2.c @@ -0,0 +1,29 @@ +/* { dg-do run } */ + +#include +#include + +__attribute__((noinline, noclone, noreturn)) +void +foo () +{ + sleep (4); + exit (0); +} + +int +main () +{ + #pragma omp parallel + { + #pragma omp sections + { + foo (); + #pragma omp section + foo (); + #pragma omp section + foo (); + } + } + return 0; +}