diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/m32c/m32c.c | 15 |
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 */ |