diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 965c6556534..118e96a90e7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-08-01 Richard Sandiford + + * doc/invoke.texi: In the MIPS options section, remove the passage + saying that -mexplicit-relocs is usually disabled for -mabicalls + -fno-unit-at-a-time. + * config/mips/mips.c (override_options): Remove the code that enforced + this rule. + 2004-08-01 Richard Sandiford * config/mips/mips.md (cprestore): Provide two alternatives, one for diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 825172b0058..b77fcbd88e2 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -4476,28 +4476,6 @@ override_options (void) && (target_flags_explicit & MASK_EXPLICIT_RELOCS) == 0) target_flags &= ~MASK_EXPLICIT_RELOCS; - /* Make -mabicalls -fno-unit-at-a-time imply -mno-explicit-relocs - unless the user says otherwise. - - There are two problems here: - - (1) The value of an R_MIPS_GOT16 relocation depends on whether - the symbol is local or global. We therefore need to know - a symbol's binding before referring to it using %got(). - - (2) R_MIPS_CALL16 can only be applied to global symbols. - - When not using -funit-at-a-time, a symbol's binding may change - after it has been used. For example, the C++ front-end will - initially assume that the typeinfo for an incomplete type will be - comdat, on the basis that the type could be completed later in the - file. But if the type never is completed, the typeinfo will become - local instead. */ - if (!flag_unit_at_a_time - && TARGET_ABICALLS - && (target_flags_explicit & MASK_EXPLICIT_RELOCS) == 0) - target_flags &= ~MASK_EXPLICIT_RELOCS; - /* -mvr4130-align is a "speed over size" optimization: it usually produces faster code, but at the expense of more nops. Enable it at -O3 and above. */ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 58eaaa3e9e5..902df3e61f0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -9193,14 +9193,8 @@ Use (do not use) assembler relocation operators when dealing with symbolic addresses. The alternative, selected by @option{-mno-explicit-relocs}, is to use assembler macros instead. -@option{-mexplicit-relocs} is usually the default if GCC was configured -to use an assembler that supports relocation operators. However, the -combination of @option{-mabicalls} and @option{-fno-unit-at-a-time} -implies @option{-mno-explicit-relocs} unless explicitly overridden. -This is because, when generating abicalls, the choice of relocation -depends on whether a symbol is local or global. In some rare cases, -GCC will not be able to decide this until the whole compilation unit -has been read. +@option{-mexplicit-relocs} is the default if GCC was configured +to use an assembler that supports relocation operators. @item -mcheck-zero-division @itemx -mno-check-zero-division