aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@arm.com>2015-03-09 01:31:42 +0000
committerThomas Preud'homme <thopre01@gcc.gnu.org>2015-03-09 01:31:42 +0000
commit68ca4ac90b7413e7007ae6b08d372205e42bdb7d (patch)
tree470809846ffc5e7e1097aca2bab964a3faa37b96 /gcc
parent609570b49e5b138416d6e46531586d4e93c6a429 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/cfgexpand.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr63743.c11
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" } } */