aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m32c/m32c.c
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/config/m32c/m32c.c
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/config/m32c/m32c.c')
-rw-r--r--gcc/config/m32c/m32c.c15
1 files changed, 15 insertions, 0 deletions
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 */