diff options
author | Richard Biener <rguenther@suse.de> | 2016-05-12 13:46:26 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-05-12 13:46:26 +0000 |
commit | 1ef33ef304cedbeca446e79d677cd18036a5dc66 (patch) | |
tree | 08146efd808e84c14b2bdd4c476c5540b75f9f33 /gcc/testsuite | |
parent | 763baff6f54ec6070e0ec6497363f5116ab4c874 (diff) | |
download | gcc-1ef33ef304cedbeca446e79d677cd18036a5dc66.zip gcc-1ef33ef304cedbeca446e79d677cd18036a5dc66.tar.gz gcc-1ef33ef304cedbeca446e79d677cd18036a5dc66.tar.bz2 |
re PR tree-optimization/71059 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "vn_nary_op_insert_into")
2016-05-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/71059
* tree-ssa-pre.c (phi_translate_1): Fully fold translated
nary before looking up or entering the expression into the VN
hashes.
* tree-ssa-sccvn.c (vn_nary_build_or_lookup): Fix comment typo.
Make sure to re-use NARYs without result as inserted by
phi-translation.
* gcc.dg/torture/pr71059.c: New testcase.
From-SVN: r236175
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr71059.c | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6dca22f..5ecb1a3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2016-05-12 Richard Biener <rguenther@suse.de> + PR tree-optimization/71059 + * gcc.dg/torture/pr71059.c: New testcase. + +2016-05-12 Richard Biener <rguenther@suse.de> + PR tree-optimization/71062 * gcc.dg/torture/pr71062.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/torture/pr71059.c b/gcc/testsuite/gcc.dg/torture/pr71059.c new file mode 100644 index 0000000..7c0ab7f --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr71059.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +short a, c; +union { + unsigned f0; + unsigned short f1; +} b; +volatile int d; +short fn1(short p1) { return p1 + a; } +void fn2() +{ + b.f0 = 0; + for (;; b.f0 = fn1(b.f0)) + (c && b.f1) || d; +} |