diff options
author | Richard Biener <rguenther@suse.de> | 2016-08-09 07:40:50 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-08-09 07:40:50 +0000 |
commit | 50bf47fdc08807bf8fc0362d677c8fc7dd4514b0 (patch) | |
tree | 2bb2c9f41ad63b81575fdbde736acc6db6257acc /gcc/testsuite/gcc.dg | |
parent | fe7afdf5b55d1c3b8b00e7ea16b1b5df0537f45a (diff) | |
download | gcc-50bf47fdc08807bf8fc0362d677c8fc7dd4514b0.zip gcc-50bf47fdc08807bf8fc0362d677c8fc7dd4514b0.tar.gz gcc-50bf47fdc08807bf8fc0362d677c8fc7dd4514b0.tar.bz2 |
re PR tree-optimization/71802 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in expand_LOOP_VECTORIZED)
2016-08-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/71802
* tree-cfgcleanup.c (cleanup_tree_cfg_bb): Make sure to catch
all merge opportunities with the predecessor.
* gcc.dg/torture/pr71802.c: New testcase.
From-SVN: r239274
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr71802.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr71802.c b/gcc/testsuite/gcc.dg/torture/pr71802.c new file mode 100644 index 0000000..0dd1467 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr71802.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ + +int b, c; +long d, f; +void fn1() +{ + char g; + long long h = 0; + int *i; + if (0) { +L2: + b && (b = f); + d = 3; + for (; d;) { + char *j = &g; + c = *j = 0; +L3: + *j %= b; + for (; g <= 4;) + ; + } + goto L2; + } + for (; *i; *i = 1) { + if ((h -= 4) == (h != (b ?: d))) { + g = 3; + goto L3; + } + i = (int *)&h; + *i = f; + i = (int *)&f; + if ((h && 6) - (h = 0)) + goto L2; + } + for (; d;) + goto L3; +} |