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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr63743.c | 11 |
4 files changed, 24 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4c97e87..07430ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-03-09 Thomas Preud'homme <thomas.preudhomme@arm.com> + + PR tree-optimization/63743 + * cfgexpand.c (reorder_operands): Also reorder if only second operand + had its definition forwarded by TER. + 2015-03-08 Jan Hubicka <hubicka@ucw.cz> PR lto/65316 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), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 50fc5d6..8256fc3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-09 Thomas Preud'homme <thomas.preudhomme@arm.com> + + PR tree-optimization/63743 + * gcc.dg/pr63743.c: New test. + 2015-03-08 Jan Hubicka <hubicka@ucw.cz> PR lto/65316 diff --git a/gcc/testsuite/gcc.dg/pr63743.c b/gcc/testsuite/gcc.dg/pr63743.c new file mode 100644 index 0000000..87254ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr63743.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fdump-rtl-expand-details" } */ + +double +libcall_dep (double x, double y) +{ + return x * (x + y); +} + +/* { dg-final { scan-rtl-dump-times "Swap operands" 1 "expand" } } */ +/* { dg-final { cleanup-rtl-dump "expand" } } */ |