aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2010-10-20 16:37:54 -0400
committerDJ Delorie <dj@gcc.gnu.org>2010-10-20 16:37:54 -0400
commitd123bf41c91c7eeb4672ad126317dfbb2930b034 (patch)
tree3472f0a527c8959b7c1b3332ff8443bd77ad9582 /gcc
parent582346ed66a6dc53e22426ae66d01d935e3595bc (diff)
downloadgcc-d123bf41c91c7eeb4672ad126317dfbb2930b034.zip
gcc-d123bf41c91c7eeb4672ad126317dfbb2930b034.tar.gz
gcc-d123bf41c91c7eeb4672ad126317dfbb2930b034.tar.bz2
m32c.c (m32c_option_override): Always disable function-cse in 16-bit mode.
* config/m32c/m32c.c (m32c_option_override): Always disable function-cse in 16-bit mode. Indirect calls are always worse than direct calls as there is no 16-bit indirect call opcode. (m32c_override_options_after_change): New, likewise. From-SVN: r165737
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/m32c/m32c.c15
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index beed454..7a67b09 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-20 DJ Delorie <dj@redhat.com>
+
+ * config/m32c/m32c.c (m32c_option_override): Always disable
+ function-cse in 16-bit mode. Indirect calls are always worse than
+ direct calls as there is no 16-bit indirect call opcode.
+ (m32c_override_options_after_change): New, likewise.
+
2010-10-20 Nathan Froyd <froydnj@codesourcery.com>
* ifcvt.c (noce_emit_cmove): If both of the values are SUBREGs, try
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index d62b4f2..39b3393 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -429,6 +429,21 @@ m32c_option_override (void)
/* This target defaults to strict volatile bitfields. */
if (flag_strict_volatile_bitfields < 0)
flag_strict_volatile_bitfields = 1;
+
+ /* r8c/m16c have no 16-bit indirect call, so thunks are involved.
+ This is always worse than an absolute call. */
+ if (TARGET_A16)
+ flag_no_function_cse = 1;
+}
+
+#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
+#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE m32c_override_options_after_change
+
+static void
+m32c_override_options_after_change (void)
+{
+ if (TARGET_A16)
+ flag_no_function_cse = 1;
}
/* Defining data structures for per-function information */