diff options
author | Bernd Schmidt <bschmidt@redhat.com> | 2017-01-27 19:40:44 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 2017-01-27 19:40:44 +0000 |
commit | 5649f66eef8e37ec2f1afde6a9f4f84344188b0b (patch) | |
tree | ca7cde97f4490a97543164b3e3dafa8d30b47a09 | |
parent | 4f45ad95de01cfe0da7f08c69ccf96df2a766eeb (diff) |
2017-01-27 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/79194
* cprop.c (one_cprop_pass): Move deletion of code after unconditional
traps before call to bypass_conditional_jumps.
PR rtl-optimization/79194
* gcc.dg/torture/pr79194.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@244993 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cprop.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr79194.c | 42 |
4 files changed, 55 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4de9c0245be..39e6c1fb86d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-01-27 Bernd Schmidt <bschmidt@redhat.com> + + PR rtl-optimization/79194 + * cprop.c (one_cprop_pass): Move deletion of code after unconditional + traps before call to bypass_conditional_jumps. + 2017-01-27 Vladimir Makarov <vmakarov@redhat.com> PR tree-optimization/71374 diff --git a/gcc/cprop.c b/gcc/cprop.c index ae2f19d6f72..f704a0d1f5e 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1863,8 +1863,6 @@ one_cprop_pass (void) } } - changed |= bypass_conditional_jumps (); - while (!uncond_traps.is_empty ()) { rtx_insn *insn = uncond_traps.pop (); @@ -1873,6 +1871,8 @@ one_cprop_pass (void) emit_barrier_after_bb (to_split); } + changed |= bypass_conditional_jumps (); + FREE_REG_SET (reg_set_bitmap); free_cprop_mem (); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f2d9dfb7274..eb63091bbda 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-27 Bernd Schmidt <bschmidt@redhat.com> + + PR rtl-optimization/79194 + * gcc.dg/torture/pr79194.c: New test. + 2017-01-27 Vladimir Makarov <vmakarov@redhat.com> PR tree-optimization/71374 diff --git a/gcc/testsuite/gcc.dg/torture/pr79194.c b/gcc/testsuite/gcc.dg/torture/pr79194.c new file mode 100644 index 00000000000..e7df6902291 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr79194.c @@ -0,0 +1,42 @@ +/* { dg-do compile } */ + +int iw, vr; + +void +d9 (unsigned int j3, long long int f5, int kp) +{ + int *qb = &kp; + + if (kp != 0) + { + long long int oq; + unsigned int tl = 0; + + for (j3 = 0; j3 < 1; ++j3) + qb = &tl; + goto ed; + + l7: + oq = 1; + while (oq < 2) + oq *= j3; + + ed: + do + { + oq -= *qb; + if (oq != 0) + { + long long int ie = j3 & f5; + int ws = (j3 != 0 && kp != 0); + + tl = ie > ws; + iw = vr = tl; + } + else + tl = (kp != 0 && (0 % 0) != 0); /* { dg-warning "division by zero" } */ + } + while (tl != 0); + } + goto l7; +} |