From: Eric Botcazou Date: Thu, 26 May 2011 12:46:47 +0000 (+0000) Subject: sparc-protos.h (sparc_optimization_options): Declare. X-Git-Tag: releases/gcc-4.5.4~621 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=16f716164e9d1cc94cc1b0d8ce5ececab7aee54e;p=thirdparty%2Fgcc.git sparc-protos.h (sparc_optimization_options): Declare. * config/sparc/sparc-protos.h (sparc_optimization_options): Declare. * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define. * config/sparc/sparc.c (sparc_optimization_options): New function. Set flag_ira_share_save_slots to 0. From-SVN: r174280 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ec4e5e952cc..5f20ec89f0a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-05-26 Eric Botcazou + * config/sparc/sparc-protos.h (sparc_optimization_options): Declare. + * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define. + * config/sparc/sparc.c (sparc_optimization_options): New function. + Set flag_ira_share_save_slots to 0. + Backport from mainline 2011-01-21 Jeff Law diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h index fc6a990dc268..88aca6fa4310 100644 --- a/gcc/config/sparc/sparc-protos.h +++ b/gcc/config/sparc/sparc-protos.h @@ -48,6 +48,7 @@ extern bool sparc_can_use_return_insn_p (void); extern int check_pic (int); extern int short_branch (int, int); extern void sparc_profile_hook (int); +extern void sparc_optimization_options (int, int); extern void sparc_override_options (void); extern void sparc_output_scratch_registers (FILE *); diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 949c4734f9e3..619faad38766 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -627,6 +627,17 @@ sparc_handle_option (size_t code, const char *arg, int value ATTRIBUTE_UNUSED) return true; } +/* Specify default optimizations. */ + +void +sparc_optimization_options (int l ATTRIBUTE_UNUSED, int s ATTRIBUTE_UNUSED) +{ + /* Disable save slot sharing for call-clobbered registers by default. + The IRA sharing algorithm works on single registers only and this + pessimizes for double floating-point registers. */ + flag_ira_share_save_slots = 0; +} + /* Validate and override various options, and do some machine dependent initialization. */ diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index 470ca9f4efd0..488a3e6c23e0 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -501,7 +501,8 @@ extern enum cmodel sparc_cmodel; #define CAN_DEBUG_WITHOUT_FP /* Option handling. */ - +#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \ + sparc_optimization_options ((LEVEL), (SIZE)) #define OVERRIDE_OPTIONS sparc_override_options () /* Mask of all CPU selection flags. */