[llvm-commits] [llvm] r146054 - in /llvm/trunk: lib/MC/MachObjectWriter.cpp lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp test/MC/MachO/ARM/darwin-ARM-reloc.s test/MC/MachO/reloc-pcrel-offset.s test/MC/MachO/reloc-pcrel.s

Eli Friedman eli.friedman at gmail.com
Wed Dec 7 11:54:03 PST 2011


On Wed, Dec 7, 2011 at 11:46 AM, Jim Grosbach <grosbach at apple.com> wrote:
> Author: grosbach
> Date: Wed Dec  7 13:46:59 2011
> New Revision: 146054
>
> URL: http://llvm.org/viewvc/llvm-project?rev=146054&view=rev
> Log:
> Darwin assembler improved relocs when w/o subsections_via_symbols.
>
> When the file isn't being built with subsections-via-symbols, symbol
> differences involving non-local symbols can be resolved more aggressively.
> Needed for gas compatibility.
>
>
> Modified:
>    llvm/trunk/lib/MC/MachObjectWriter.cpp
>    llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
>    llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s
>    llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s
>    llvm/trunk/test/MC/MachO/reloc-pcrel.s
>
> Modified: llvm/trunk/lib/MC/MachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MachObjectWriter.cpp?rev=146054&r1=146053&r2=146054&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/MachObjectWriter.cpp Wed Dec  7 13:46:59 2011
> @@ -584,9 +584,14 @@
>     // requires the compiler to use .set to absolutize the differences between
>     // symbols which the compiler knows to be assembly time constants, so we
>     // don't need to worry about considering symbol differences fully resolved.
> +    //
> +    // If the file isn't using sub-sections-via-symbols, we can make the
> +    // same assumptions about any symbol that we normally make about
> +    // assembler locals.
>
>     if (!Asm.getBackend().hasReliableSymbolDifference()) {
> -      if (!SA.isTemporary() || !SA.isInSection() || &SecA != &SecB)
> +      if ((!SA.isTemporary() && Asm.getSubsectionsViaSymbols()) ||
> +           !SA.isInSection() || &SecA != &SecB)
>         return false;
>       return true;
>     }
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp?rev=146054&r1=146053&r2=146054&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp Wed Dec  7 13:46:59 2011
> @@ -62,6 +62,9 @@
>   default:
>     return false;
>
> +  case ARM::fixup_t2_condbranch:
> +    assert(0);
> +    return false;

Did you intend to commit this bit?

-Eli




More information about the llvm-commits mailing list