diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a95ea89aa1aedbae161aa28cb42cf42d716fe986..30ae24e08b3f44d02cf244a031968d09c870646a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2010-07-30 Joseph Myers <joseph@codesourcery.com> + + * common.opt (-G): Don't define option here. + * config/g.opt: New. + * config.gcc: Use g.opt for alpha, frv, ia64, lm32, m32r, mips, + rs6000/powerpc and score targets. + * opts.c (common_handle_option): Don't handle -G here. + * config/alpha/alpha.c (alpha_handle_option): Handle -G. + * config/frv/frv.c (frv_handle_option): Handle -G. + * config/ia64/ia64.c (ia64_handle_option): Handle -G. + * config/lm32/lm32.c (lm32_handle_option, TARGET_HANDLE_OPTION): + New. + * config/m32r/m32r.c (m32r_handle_option): Handle -G. + * config/mips/mips.c (mips_handle_option): Handle -G. + * config/rs6000/rs6000.c (rs6000_handle_option) Handle -G. + * config/score/score.c (score_handle_option): Handle -G. + 2010-07-30 Anatoly Sokolov <aesok@post.ru> * config/mmix/mmix.c: Include basic-block.h. diff --git a/gcc/common.opt b/gcc/common.opt index 59ab3b1b341261c710d21c3f2224da2aa28eebca..78dc1ba382d74f6a5793531a1258b8c8d1bb5158 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -57,10 +57,6 @@ Common Separate -version Common -G -Common Joined Separate UInteger --G<number> Put global and static data smaller than <number> bytes into a special section (on some targets) - O Common JoinedOrMissing Optimization -O<number> Set optimization level to <number> diff --git a/gcc/config.gcc b/gcc/config.gcc index 47c1fb528028dd0fbae524bc9864db42812a3e12..9170fc819c747d7309caaa6964f19a50d5470f24 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -267,6 +267,7 @@ m32c*-*-*) alpha*-*-*) cpu_type=alpha need_64bit_hwint=yes + extra_options="${extra_options} g.opt" ;; am33_2.0-*-linux*) cpu_type=mn10300 @@ -289,6 +290,7 @@ crisv32-*) cpu_type=cris ;; frv*) cpu_type=frv + extra_options="${extra_options} g.opt" ;; moxie*) cpu_type=moxie ;; @@ -322,12 +324,17 @@ x86_64-*-*) ia64-*-*) extra_headers=ia64intrin.h need_64bit_hwint=yes + extra_options="${extra_options} g.opt" ;; hppa*-*-*) cpu_type=pa ;; +lm32*) + extra_options="${extra_options} g.opt" + ;; m32r*-*-*) cpu_type=m32r + extra_options="${extra_options} g.opt" ;; m68k-*-*) extra_headers=math-68881.h @@ -336,6 +343,7 @@ mips*-*-*) cpu_type=mips need_64bit_hwint=yes extra_headers="loongson.h" + extra_options="${extra_options} g.opt" ;; picochip-*-*) cpu_type=picochip @@ -349,12 +357,15 @@ powerpc*-*-*) cpu_is_64bit=yes ;; esac + extra_options="${extra_options} g.opt" ;; rs6000*-*-*) need_64bit_hwint=yes + extra_options="${extra_options} g.opt" ;; score*-*-*) cpu_type=score + extra_options="${extra_options} g.opt" ;; sparc*-*-*) cpu_type=sparc diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 336c107be513f95196c33444980ef800c1519cd2..35d66b64a0a94fd408f14f9939bcaf340f707397 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -215,6 +215,11 @@ alpha_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + break; + case OPT_mfp_regs: if (value == 0) target_flags |= MASK_SOFT_FP; diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c index 10768fb81c5b5871eaa161df2d473e627919e51e..49133f764a54c34030f87281138fbf5ec2dd1063 100644 --- a/gcc/config/frv/frv.c +++ b/gcc/config/frv/frv.c @@ -589,10 +589,15 @@ frv_cannot_force_const_mem (rtx x ATTRIBUTE_UNUSED) /* Implement TARGET_HANDLE_OPTION. */ static bool -frv_handle_option (size_t code, const char *arg, int value ATTRIBUTE_UNUSED) +frv_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + case OPT_mcpu_: if (strcmp (arg, "simple") == 0) frv_cpu_type = FRV_CPU_SIMPLE; diff --git a/gcc/config/g.opt b/gcc/config/g.opt new file mode 100644 index 0000000000000000000000000000000000000000..346a4d1af9282adcf01771399b4912f27134b648 --- /dev/null +++ b/gcc/config/g.opt @@ -0,0 +1,30 @@ +; -G option (small data, some targets only). + +; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +; Free Software Foundation, Inc. +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify it under +; the terms of the GNU General Public License as published by the Free +; Software Foundation; either version 3, or (at your option) any later +; version. +; +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +; WARRANTY; without even the implied warranty of MERCHANTABILITY or +; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +; for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; <http://www.gnu.org/licenses/>. + +; See the GCC internals manual (options.texi) for a description of this file's format. + +; Please try to keep this file in ASCII collating order. + +G +Target Joined Separate UInteger +-G<number> Put global and static data smaller than <number> bytes into a special section (on some targets) + +; This comment is to ensure we retain the blank line above. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 475f3d9b5873af06efa4655a51a111f5e215f9d4..45a68cf5f443f3ecdf80da5a0b4e8a405487a6be 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -5528,6 +5528,11 @@ ia64_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + case OPT_mfixed_range_: fix_range (arg); return true; diff --git a/gcc/config/lm32/lm32.c b/gcc/config/lm32/lm32.c index a40df6f0655a6d1c6c942ebad154e964b56f6250..2bcbe679950d9b2856b2707efe62ed3564625798 100644 --- a/gcc/config/lm32/lm32.c +++ b/gcc/config/lm32/lm32.c @@ -1,7 +1,7 @@ /* Subroutines used for code generation on the Lattice Mico32 architecture. Contributed by Jon Beniston <jon@beniston.com> - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -75,7 +75,10 @@ static bool lm32_can_eliminate (const int, const int); static bool lm32_legitimate_address_p (enum machine_mode mode, rtx x, bool strict); static HOST_WIDE_INT lm32_compute_frame_size (int size); +static bool lm32_handle_option (size_t code, const char *arg, int value); +#undef TARGET_HANDLE_OPTION +#define TARGET_HANDLE_OPTION lm32_handle_option #undef TARGET_ADDRESS_COST #define TARGET_ADDRESS_COST hook_int_rtx_bool_0 #undef TARGET_RTX_COSTS @@ -696,6 +699,23 @@ lm32_setup_incoming_varargs (CUMULATIVE_ARGS * cum, enum machine_mode mode, } } +/* Implement TARGET_HANDLE_OPTION. */ + +static bool +lm32_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) +{ + switch (code) + { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + + default: + return true; + } +} + /* Override command line options. */ void lm32_override_options (void) diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c index 3895138233cfe77daf3f0cfe7786b3fe2f8d9367..6d0437342639b714ddbf3ff8e7684be4b340e894 100644 --- a/gcc/config/m32r/m32r.c +++ b/gcc/config/m32r/m32r.c @@ -1,6 +1,6 @@ /* Subroutines used for code generation on the Renesas M32R cpu. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -178,6 +178,11 @@ m32r_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + case OPT_m32r: target_flags &= ~(MASK_M32R2 | MASK_M32RX); return true; diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 0892c3e1d9fd040f8b7d1e2789b4140083a6df10..468a424a33cd2c835c4e9e4c0f984a65da7b5cc8 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -15379,10 +15379,15 @@ mips_set_tune (const struct mips_cpu_info *info) /* Implement TARGET_HANDLE_OPTION. */ static bool -mips_handle_option (size_t code, const char *arg, int value ATTRIBUTE_UNUSED) +mips_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + case OPT_mabi_: if (strcmp (arg, "32") == 0) mips_abi = ABI_32; diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 92da9f049044f820be30c161738d903df31e69cf..0f1f04052e6f6a337f24b7d8c8a01de2e403ea1b 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3782,6 +3782,11 @@ rs6000_handle_option (size_t code, const char *arg, int value) switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + break; + case OPT_mno_power: target_flags &= ~(MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING); diff --git a/gcc/config/score/score.c b/gcc/config/score/score.c index 3bddc041ffe87233e251990a23f5d15ecf22997e..e7e56003a4e59f89c0022a5c0655b40fde643dfd 100644 --- a/gcc/config/score/score.c +++ b/gcc/config/score/score.c @@ -1,5 +1,5 @@ /* Output routines for Sunplus S+CORE processor - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Sunnorth. This file is part of GCC. @@ -287,10 +287,15 @@ score_asm_file_end (void) /* Implement TARGET_HANDLE_OPTION. */ static bool -score_handle_option (size_t code, const char *arg, int value ATTRIBUTE_UNUSED) +score_handle_option (size_t code, const char *arg, int value) { switch (code) { + case OPT_G: + g_switch_value = value; + g_switch_set = true; + return true; + case OPT_mscore7d: target_flags &= ~(MASK_ALL_CPU_BITS); target_flags |= MASK_SCORE7 | MASK_SCORE7D; diff --git a/gcc/opts.c b/gcc/opts.c index eaa31c5b572c6a243e179005cea04f10fe03ecb3..ebb3f38056a4907b0645b5451c8b95c3d54c35bd 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1560,11 +1560,6 @@ common_handle_option (size_t scode, const char *arg, int value, exit_after_options = true; break; - case OPT_G: - g_switch_value = value; - g_switch_set = true; - break; - case OPT_O: case OPT_Os: case OPT_Ofast: