diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-07-07 16:25:22 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-07-07 16:25:22 +0000 |
commit | 712cb0bbf3228eb87d18d98c34dc19c9cfb4dd18 (patch) | |
tree | 6d1a0ad67ce5b56c22276557f6944f258bcb30d6 /libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c | |
parent | 338392ed0fd9ca466905860e931b7a480179bce4 (diff) | |
download | gcc-712cb0bbf3228eb87d18d98c34dc19c9cfb4dd18.zip gcc-712cb0bbf3228eb87d18d98c34dc19c9cfb4dd18.tar.gz gcc-712cb0bbf3228eb87d18d98c34dc19c9cfb4dd18.tar.bz2 |
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.
From-SVN: r225521
Diffstat (limited to 'libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c')
-rw-r--r-- | libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c | 28 |
1 files changed, 26 insertions, 2 deletions
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 d67a4f6..557764d 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; } |