diff mbox

[committed] Make -fno-delayed-branch imply -Wa,-O1 on MIPS

Message ID 87ipt24dz4.fsf@firetop.home
State New
Headers show

Commit Message

Richard Sandiford May 22, 2011, 9:33 p.m. UTC
Following the discussion here:

   http://gcc.gnu.org/ml/gcc/2011-05/msg00216.html

this patch makes -fno-delayed-branch imply -Wa,-O1.  It also makes
sure that we explicitly assemble with -O0 by default.  (Previously,
we'd assemble with -O0 if the user specified -O0, but assemble with
the default -O2 if the user specified no -O option at all.)

Tested on mipsisa64-elf and mips-linux-gnu.  Also tested by
examining the objects produced by -fno-delayed-branch, and by
various other option combinations.  Applied to trunk.

Richard


gcc/
	* config/mips/mips.h (SUBTARGET_ASM_OPTIMIZING_SPEC): Delete.
	(ASM_SPEC): Add a -O* option here.  Pass -O0 for -noasmopt,
	-O1 for -fno-delayed-branch, -O2 if optimization is enabled,
	and -O0 otherwise.
	(EXTRA_SPECS): Remove subtarget_asm_optimizing_spec.

Comments

Richard Sandiford May 22, 2011, 9:49 p.m. UTC | #1
Richard Sandiford <rdsandiford@googlemail.com> writes:
> this patch makes -fno-delayed-branch imply -Wa,-O1.  It also makes
> sure that we explicitly assemble with -O0 by default.

Um, I meant -O1.  The point is that -Wa,-O0 vs -Wa,-O1 isn't really an
optimization decision; -O0 just inserts nops that weren't even implied
by the source code (at least, not unless you happen to know the GAS
internals).

Richard
diff mbox

Patch

Index: gcc/config/mips/mips.h
===================================================================
--- gcc/config/mips/mips.h	2011-05-22 22:19:08.000000000 +0100
+++ gcc/config/mips/mips.h	2011-05-22 22:29:17.000000000 +0100
@@ -1079,14 +1079,6 @@  #define NM_FLAGS "-Bn"
 #endif
 
 
-/* SUBTARGET_ASM_OPTIMIZING_SPEC handles passing optimization options
-   to the assembler.  It may be overridden by subtargets.  */
-#ifndef SUBTARGET_ASM_OPTIMIZING_SPEC
-#define SUBTARGET_ASM_OPTIMIZING_SPEC "\
-%{noasmopt:-O0} \
-%{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}}"
-#endif
-
 /* SUBTARGET_ASM_DEBUGGING_SPEC handles passing debugging options to
    the assembler.  It may be overridden by subtargets.
 
@@ -1123,7 +1115,7 @@  #define ASM_SPEC "\
 %{mmt} %{mno-mt} \
 %{mfix-vr4120} %{mfix-vr4130} \
 %{mfix-24k} \
-%(subtarget_asm_optimizing_spec) \
+%{noasmopt:-O0; O0|fno-delayed-branch:-O1; O*:-O2; :-O1} \
 %(subtarget_asm_debugging_spec) \
 %{mabi=*} %{!mabi=*: %(asm_abi_default_spec)} \
 %{mgp32} %{mgp64} %{march=*} %{mxgot:-xgot} \
@@ -1181,7 +1173,6 @@  #define CPP_SPEC "%(subtarget_cpp_spec)"
 #define EXTRA_SPECS							\
   { "subtarget_cc1_spec", SUBTARGET_CC1_SPEC },				\
   { "subtarget_cpp_spec", SUBTARGET_CPP_SPEC },				\
-  { "subtarget_asm_optimizing_spec", SUBTARGET_ASM_OPTIMIZING_SPEC },	\
   { "subtarget_asm_debugging_spec", SUBTARGET_ASM_DEBUGGING_SPEC },	\
   { "subtarget_asm_spec", SUBTARGET_ASM_SPEC },				\
   { "asm_abi_default_spec", "-" MULTILIB_ABI_DEFAULT },			\