diff options
author | Thomas Preud'homme <thomas.preudhomme@arm.com> | 2015-03-09 01:31:42 +0000 |
---|---|---|
committer | Thomas Preud'homme <thopre01@gcc.gnu.org> | 2015-03-09 01:31:42 +0000 |
commit | 68ca4ac90b7413e7007ae6b08d372205e42bdb7d (patch) | |
tree | 470809846ffc5e7e1097aca2bab964a3faa37b96 /gcc/cfgexpand.c | |
parent | 609570b49e5b138416d6e46531586d4e93c6a429 (diff) | |
download | gcc-68ca4ac90b7413e7007ae6b08d372205e42bdb7d.zip gcc-68ca4ac90b7413e7007ae6b08d372205e42bdb7d.tar.gz gcc-68ca4ac90b7413e7007ae6b08d372205e42bdb7d.tar.bz2 |
re PR middle-end/63743 (Thumb1: big regression for float operators by r216728)
2015-03-09 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
PR tree-optimization/63743
* cfgexpand.c (reorder_operands): Also reorder if only second operand
had its definition forwarded by TER.
gcc/testsuite/
PR tree-optimization/63743
* gcc.dg/pr63743.c: New test.
From-SVN: r221276
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 569cd0d..93d894f 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -5124,13 +5124,11 @@ reorder_operands (basic_block bb) continue; /* Swap operands if the second one is more expensive. */ def0 = get_gimple_for_ssa_name (op0); - if (!def0) - continue; def1 = get_gimple_for_ssa_name (op1); if (!def1) continue; swap = false; - if (lattice[gimple_uid (def1)] > lattice[gimple_uid (def0)]) + if (!def0 || lattice[gimple_uid (def1)] > lattice[gimple_uid (def0)]) swap = true; if (swap) { @@ -5139,7 +5137,7 @@ reorder_operands (basic_block bb) fprintf (dump_file, "Swap operands in stmt:\n"); print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM); fprintf (dump_file, "Cost left opnd=%d, right opnd=%d\n", - lattice[gimple_uid (def0)], + def0 ? lattice[gimple_uid (def0)] : 0, lattice[gimple_uid (def1)]); } swap_ssa_operands (stmt, gimple_assign_rhs1_ptr (stmt), |