From 7c76b4cc6ebe70f35f527b25ecfb608fa252954f Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Thu, 4 Jun 2015 20:27:42 +0000 Subject: [PATCH] MC: Remove obsolete MachO UseAggressiveSymbolFolding. Fix the FIXME and remove this old as(1) compat option. It was useful for bringup of the integrated assembler to diff object files, but now it's just causing more relocations than strictly necessary to be generated. rdar://21201804 llvm-svn: 239084 --- llvm/include/llvm/MC/MCMachObjectWriter.h | 7 +-- llvm/lib/MC/MCMachObjectTargetWriter.cpp | 13 ++---- llvm/lib/MC/MachObjectWriter.cpp | 3 -- .../MCTargetDesc/AArch64MachObjectWriter.cpp | 3 +- .../ARM/MCTargetDesc/ARMMachObjectWriter.cpp | 6 +-- .../MCTargetDesc/PPCMachObjectWriter.cpp | 3 +- .../X86/MCTargetDesc/X86MachObjectWriter.cpp | 6 +-- llvm/test/MC/MachO/absolutize.s | 46 +++++-------------- llvm/test/MC/MachO/reloc-diff.s | 22 ++------- 9 files changed, 28 insertions(+), 81 deletions(-) diff --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h index 63c2a28a7c9c..ee0a002ba968 100644 --- a/llvm/include/llvm/MC/MCMachObjectWriter.h +++ b/llvm/include/llvm/MC/MCMachObjectWriter.h @@ -27,15 +27,11 @@ class MCMachObjectTargetWriter { const unsigned Is64Bit : 1; const uint32_t CPUType; const uint32_t CPUSubtype; - // FIXME: Remove this, we should just always use it once we no longer care - // about Darwin 'as' compatibility. - const unsigned UseAggressiveSymbolFolding : 1; unsigned LocalDifference_RIT; protected: MCMachObjectTargetWriter(bool Is64Bit_, uint32_t CPUType_, - uint32_t CPUSubtype_, - bool UseAggressiveSymbolFolding_ = false); + uint32_t CPUSubtype_); void setLocalDifferenceRelocationType(unsigned Type) { LocalDifference_RIT = Type; @@ -55,7 +51,6 @@ public: /// @{ bool is64Bit() const { return Is64Bit; } - bool useAggressiveSymbolFolding() const { return UseAggressiveSymbolFolding; } uint32_t getCPUType() const { return CPUType; } uint32_t getCPUSubtype() const { return CPUSubtype; } unsigned getLocalDifferenceRelocationType() const { diff --git a/llvm/lib/MC/MCMachObjectTargetWriter.cpp b/llvm/lib/MC/MCMachObjectTargetWriter.cpp index 146cebf01a3a..4ffd6a78a61f 100644 --- a/llvm/lib/MC/MCMachObjectTargetWriter.cpp +++ b/llvm/lib/MC/MCMachObjectTargetWriter.cpp @@ -11,12 +11,9 @@ using namespace llvm; -MCMachObjectTargetWriter::MCMachObjectTargetWriter( - bool Is64Bit_, uint32_t CPUType_, uint32_t CPUSubtype_, - bool UseAggressiveSymbolFolding_) - : Is64Bit(Is64Bit_), CPUType(CPUType_), CPUSubtype(CPUSubtype_), - UseAggressiveSymbolFolding(UseAggressiveSymbolFolding_) { -} +MCMachObjectTargetWriter::MCMachObjectTargetWriter(bool Is64Bit_, + uint32_t CPUType_, + uint32_t CPUSubtype_) + : Is64Bit(Is64Bit_), CPUType(CPUType_), CPUSubtype(CPUSubtype_) {} -MCMachObjectTargetWriter::~MCMachObjectTargetWriter() { -} +MCMachObjectTargetWriter::~MCMachObjectTargetWriter() {} diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp index 3d06d0ff32fe..07a6038c1897 100644 --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -703,9 +703,6 @@ bool MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl( SA.isTemporary() && SA.isInSection() && &SecA == &SecB){ return true; } - } else { - if (!TargetObjectWriter->useAggressiveSymbolFolding()) - return false; } // If they are not in the same section, we can't compute the diff. diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp index 338fad8e0b1e..8a6b2215aa47 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp @@ -31,8 +31,7 @@ class AArch64MachObjectWriter : public MCMachObjectTargetWriter { public: AArch64MachObjectWriter(uint32_t CPUType, uint32_t CPUSubtype) - : MCMachObjectTargetWriter(true /* is64Bit */, CPUType, CPUSubtype, - /*UseAggressiveSymbolFolding=*/true) {} + : MCMachObjectTargetWriter(true /* is64Bit */, CPUType, CPUSubtype) {} void RecordRelocation(MachObjectWriter *Writer, MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment, diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp index f1a6d111194b..5d9b32779813 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp @@ -49,10 +49,8 @@ class ARMMachObjectWriter : public MCMachObjectTargetWriter { const MCSymbol &S, uint64_t FixedValue); public: - ARMMachObjectWriter(bool Is64Bit, uint32_t CPUType, - uint32_t CPUSubtype) - : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype, - /*UseAggressiveSymbolFolding=*/true) {} + ARMMachObjectWriter(bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype) + : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype) {} void RecordRelocation(MachObjectWriter *Writer, MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment, diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp index e14ff50e46b3..4c0965afff16 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp @@ -38,8 +38,7 @@ class PPCMachObjectWriter : public MCMachObjectTargetWriter { public: PPCMachObjectWriter(bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype) - : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype, - /*UseAggressiveSymbolFolding=*/Is64Bit) {} + : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype) {} void RecordRelocation(MachObjectWriter *Writer, MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment, diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp index 1bf80834f551..71b8e436c851 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp @@ -54,10 +54,8 @@ class X86MachObjectWriter : public MCMachObjectTargetWriter { MCValue Target, uint64_t &FixedValue); public: - X86MachObjectWriter(bool Is64Bit, uint32_t CPUType, - uint32_t CPUSubtype) - : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype, - /*UseAggressiveSymbolFolding=*/Is64Bit) {} + X86MachObjectWriter(bool Is64Bit, uint32_t CPUType, uint32_t CPUSubtype) + : MCMachObjectTargetWriter(Is64Bit, CPUType, CPUSubtype) {} void RecordRelocation(MachObjectWriter *Writer, MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment, diff --git a/llvm/test/MC/MachO/absolutize.s b/llvm/test/MC/MachO/absolutize.s index 19917e3bae1c..8947c0f65e53 100644 --- a/llvm/test/MC/MachO/absolutize.s +++ b/llvm/test/MC/MachO/absolutize.s @@ -6,9 +6,9 @@ _text_b: xorl %eax,%eax Ltext_c: xorl %eax,%eax -Ltext_d: +Ltext_d: xorl %eax,%eax - + movl $(_text_a - _text_b), %eax Ltext_expr_0 = _text_a - _text_b movl $(Ltext_expr_0), %eax @@ -30,9 +30,9 @@ _data_b: .long 0 Ldata_c: .long 0 -Ldata_d: +Ldata_d: .long 0 - + .long _data_a - _data_b Ldata_expr_0 = _data_a - _data_b .long Ldata_expr_0 @@ -75,7 +75,7 @@ Ldata_expr_2 = Ldata_d - Ldata_c // CHECK: ('offset', 324) // CHECK: ('alignment', 0) // CHECK: ('reloc_offset', 412) -// CHECK: ('num_reloc', 7) +// CHECK: ('num_reloc', 3) // CHECK: ('flags', 0x80000400) // CHECK: ('reserved1', 0) // CHECK: ('reserved2', 0) @@ -85,21 +85,9 @@ Ldata_expr_2 = Ldata_d - Ldata_c // CHECK: (('word-0', 0xa0000027), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 1 -// CHECK: (('word-0', 0xa400001d), -// CHECK: ('word-1', 0x6)), -// CHECK: # Relocation 2 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x4)), -// CHECK: # Relocation 3 -// CHECK: (('word-0', 0xa4000013), -// CHECK: ('word-1', 0x4)), -// CHECK: # Relocation 4 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x2)), -// CHECK: # Relocation 5 // CHECK: (('word-0', 0xa4000009), // CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 6 +// CHECK: # Relocation 2 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x2)), // CHECK: ]) @@ -111,8 +99,8 @@ Ldata_expr_2 = Ldata_d - Ldata_c // CHECK: ('size', 44) // CHECK: ('offset', 367) // CHECK: ('alignment', 0) -// CHECK: ('reloc_offset', 468) -// CHECK: ('num_reloc', 7) +// CHECK: ('reloc_offset', 436) +// CHECK: ('num_reloc', 3) // CHECK: ('flags', 0x0) // CHECK: ('reserved1', 0) // CHECK: ('reserved2', 0) @@ -122,21 +110,9 @@ Ldata_expr_2 = Ldata_d - Ldata_c // CHECK: (('word-0', 0xa0000028), // CHECK: ('word-1', 0x2b)), // CHECK: # Relocation 1 -// CHECK: (('word-0', 0xa4000020), -// CHECK: ('word-1', 0x37)), -// CHECK: # Relocation 2 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x33)), -// CHECK: # Relocation 3 -// CHECK: (('word-0', 0xa4000018), -// CHECK: ('word-1', 0x33)), -// CHECK: # Relocation 4 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x2f)), -// CHECK: # Relocation 5 // CHECK: (('word-0', 0xa4000010), // CHECK: ('word-1', 0x2b)), -// CHECK: # Relocation 6 +// CHECK: # Relocation 2 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x2f)), // CHECK: ]) @@ -146,9 +122,9 @@ Ldata_expr_2 = Ldata_d - Ldata_c // CHECK: # Load Command 1 // CHECK: (('command', 2) // CHECK: ('size', 24) -// CHECK: ('symoff', 524) +// CHECK: ('symoff', 460) // CHECK: ('nsyms', 4) -// CHECK: ('stroff', 572) +// CHECK: ('stroff', 508) // CHECK: ('strsize', 36) // CHECK: ('_string_data', '\x00_text_b\x00_data_b\x00_text_a\x00_data_a\x00\x00\x00\x00') // CHECK: ('_symbols', [ diff --git a/llvm/test/MC/MachO/reloc-diff.s b/llvm/test/MC/MachO/reloc-diff.s index 601edba47b42..a63a413f24b6 100644 --- a/llvm/test/MC/MachO/reloc-diff.s +++ b/llvm/test/MC/MachO/reloc-diff.s @@ -1,39 +1,27 @@ // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s // CHECK: # Relocation 0 -// CHECK: (('word-0', 0xa2000014), +// CHECK: (('word-0', 0xa4000010), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 1 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 2 -// CHECK: (('word-0', 0xa4000010), +// CHECK: (('word-0', 0xa4000008), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 3 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 4 -// CHECK: (('word-0', 0xa400000c), +// CHECK: (('word-0', 0xa4000004), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 5 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x0)), // CHECK: # Relocation 6 -// CHECK: (('word-0', 0xa4000008), -// CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 7 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 8 -// CHECK: (('word-0', 0xa4000004), -// CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 9 -// CHECK: (('word-0', 0xa1000000), -// CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 10 // CHECK: (('word-0', 0xa2000000), // CHECK: ('word-1', 0x0)), -// CHECK: # Relocation 11 +// CHECK: # Relocation 7 // CHECK: (('word-0', 0xa1000000), // CHECK: ('word-1', 0x0)), // CHECK-NEXT: ]) @@ -43,7 +31,7 @@ _local_def: _external_def: Ltemp: ret - + .data .long _external_def - _local_def .long Ltemp - _local_def