diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-07-07 16:25:22 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-07-07 16:25:22 +0000 |
commit | 5a3d2e18fddd767cb3cc29b2ab846604ade2c55b (patch) | |
tree | 6d1a0ad67ce5b56c22276557f6944f258bcb30d6 /libgomp | |
parent | 4d7c6f77e37b332553459d24d4424f26375b91e5 (diff) | |
download | gcc-5a3d2e18fddd767cb3cc29b2ab846604ade2c55b.tar.gz |
Add empty loop exit block in transform_to_exit_first_loop_alt
2015-07-07 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/66642
* tree-parloops.c (transform_to_exit_first_loop_alt): Update function
header comment. Rename split_edge variable to edge_at_split. Split
exit edge to create new loop exit bb. Insert loop exit phis in new loop
exit bb.
* testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c (main): Test low
iteration count case.
* testsuite/libgomp.c/parloops-exit-first-loop-alt.c (init): New
function, factor out of ...
(main): ... here. Test low iteration count case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225521 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 9 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c | 28 |
3 files changed, 40 insertions, 2 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index b52a29bc2ff..cac45ab3e00 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,12 @@ +2015-07-07 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/66642 + * testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c (main): Test low + iteration count case. + * testsuite/libgomp.c/parloops-exit-first-loop-alt.c (init): New + function, factor out of ... + (main): ... here. Test low iteration count case. + 2015-07-06 Sebastian Huber <sebastian.huber@embedded-brains.de> * libgomp.h (gomp_thread_pool): Comment last_team field. diff --git a/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c b/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c index 7de1377cd56..958e554649c 100644 --- a/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c +++ b/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c @@ -36,5 +36,10 @@ main (void) if (res != 11995) abort (); + /* Test low iteration count case. */ + res = f (10); + if (res != 25) + abort (); + return 0; } diff --git a/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c b/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c index d67a4f67ece..557764d3293 100644 --- a/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c +++ b/libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c @@ -22,8 +22,8 @@ f (unsigned int n, unsigned int *__restrict__ a, unsigned int *__restrict__ b, c[i] = a[i] + b[i]; } -int -main (void) +static void __attribute__((noclone,noinline)) +init (void) { int i, j; @@ -36,6 +36,14 @@ main (void) b[k] = (k * 3) % 7; c[k] = k * 2; } +} + +int +main (void) +{ + int i; + + init (); f (N, a, b, c); @@ -47,5 +55,21 @@ main (void) abort (); } + /* Test low iteration count case. */ + + init (); + + f (10); + + for (i = 0; i < N; i++) + { + unsigned int actual = c[i]; + unsigned int expected = (i < 10 + ? i + ((i * 3) % 7) + : i * 2); + if (actual != expected) + abort (); + } + return 0; } |