aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2014-04-11 18:29:30 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2014-04-11 19:29:30 +0100
commitb5d0ecea7981806ffb1277f3087b242104722d36 (patch)
treea81e60300f3723695c12ae7ea4ce883b56af7835 /gcc
parent2a55e33d2587f7da8f3b20f69178f2300ce47369 (diff)
downloadgcc-b5d0ecea7981806ffb1277f3087b242104722d36.zip
gcc-b5d0ecea7981806ffb1277f3087b242104722d36.tar.gz
gcc-b5d0ecea7981806ffb1277f3087b242104722d36.tar.bz2
epiphany.c (epiphany_rtx_cost): Compare with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for its operands.
gcc: * config/epiphany/epiphany.c (epiphany_rtx_cost): Compare with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for its operands. gcc/testsuite: * gcc.target/epiphany/btst-1.c: New test. From-SVN: r209319
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/epiphany/epiphany.c13
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/epiphany/btst-1.c11
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 32ed05f..a9ecf69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com>
+ * config/epiphany/epiphany.c (epiphany_rtx_cost): Compare
+ with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for
+ its operands.
+
+2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com>
+
PR rtl-optimization/60651
* mode-switching.c (optimize_mode_switching): Make sure to emit
sets of a lower numbered entity before sets of a higher numbered
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index 59b2410..8e45ea7 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -763,6 +763,19 @@ epiphany_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED,
*total = COSTS_N_INSNS (1);
return true;
+ case COMPARE:
+ switch (GET_MODE (x))
+ {
+ /* There are a number of single-insn combiner patterns that use
+ the flag side effects of arithmetic. */
+ case CC_N_NEmode:
+ case CC_C_LTUmode:
+ case CC_C_GTUmode:
+ return true;
+ default:
+ return false;
+ }
+
default:
return false;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e7f800a..9c3c3e4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com>
+ * gcc.target/epiphany/btst-1.c: New test.
+
+2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com>
+
PR rtl-optimization/60651
* gcc.target/epiphany/mode-switch.c: New test.
diff --git a/gcc/testsuite/gcc.target/epiphany/btst-1.c b/gcc/testsuite/gcc.target/epiphany/btst-1.c
new file mode 100644
index 0000000..b5667cc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/epiphany/btst-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-common" } */
+/* { dg-final { scan-assembler-not "movt" } } */
+/* { dg-final { scan-assembler-not "and" } } */
+/* { dg-final { scan-assembler "lsl" } } */
+
+int
+tst (int i)
+{
+ return (i & (1<<21)) ? 6 : 9;
+}