llvm-project/llvm/lib/MC
Daniel Sanders fe98b2f54b [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations.
Summary:
This is much closer to the way MIPS relocation expressions work
(%hi(foo + 2) rather than %hi(foo) + 2) and removes the need for the
various bodges in MipsAsmParser::evaluateRelocExpr().

Removing those bodges ensures that the constant stored in MCValue is the
full 32 or 64-bit (depending on ABI) offset from the symbol. This will be used
to correct the %hi/%lo matching needed to sort the relocation table correctly.

As part of this:
* Gave MCExpr::print() the ability to omit parenthesis when emitting a
  symbol reference inside a MipsMCExpr operator like %hi(X). Without this
  we print things like %lo(($L1)).
* %hi(%neg(%gprel(X))) is now three MipsMCExpr's instead of one. Most of
  the related special cases have been removed or moved to MipsMCExpr. We
  can remove the rest as we gain support for the less common relocations
  when they are not part of this specific combination.
* Renamed MipsMCExpr::VariantKind and the enum prefix ('VK_') to avoid confusion
  with MCSymbolRefExpr::VariantKind and its prefix (also 'VK_').
* fixup_Mips_GOT_Local and fixup_Mips_GOT_Global were found to be identical
  and merged into fixup_Mips_GOT.
* MO_GOT16 and MO_GOT turned out to be identical and have been merged into
  MO_GOT.
* VK_Mips_GOT and VK_Mips_GOT16 turned out to be the same thing so they
  have been merged into MEK_GOT

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

Differential Revision: http://reviews.llvm.org/D19716

llvm-svn: 268379
2016-05-03 13:35:44 +00:00
..
MCDisassembler One more batch of self-containing headers. 2016-01-27 19:29:56 +00:00
MCParser ARM: put extern __thread stubs in a special section. 2016-04-25 21:12:04 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
ConstantPools.cpp [ARM,AArch64] Store source location of asm constant pool entries 2015-11-16 16:25:47 +00:00
ELFObjectWriter.cpp [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
LLVMBuild.txt
MCAsmBackend.cpp MachO: enable .data_region directives everywhere 2016-04-21 23:00:17 +00:00
MCAsmInfo.cpp [MachO] Add MachO alt-entry directive support. 2016-03-15 01:43:05 +00:00
MCAsmInfoCOFF.cpp [MC] Use LShr for constant evaluation of ">>" on non-arm64 darwin. 2015-11-11 00:51:36 +00:00
MCAsmInfoDarwin.cpp ARM: put extern __thread stubs in a special section. 2016-04-25 21:12:04 +00:00
MCAsmInfoELF.cpp [WebAssembly] Don't create a needless .note.GNU-stack section 2016-01-15 23:59:13 +00:00
MCAsmStreamer.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MCAssembler.cpp [MCAssembler] Allow backend to finalize layout post-relaxation. 2016-04-27 21:26:13 +00:00
MCCodeEmitter.cpp
MCCodeGenInfo.cpp MC: MCCodeGenInfo naming update. NFC. 2015-05-15 19:13:31 +00:00
MCCodeView.cpp [codeview] Fix emission of file changes in inline line tables 2016-02-19 23:55:38 +00:00
MCContext.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MCDwarf.cpp Read discriminators correctly from object file. 2016-04-28 22:09:37 +00:00
MCELFObjectTargetWriter.cpp Always sort by offset first. NFC. 2015-12-17 15:08:24 +00:00
MCELFStreamer.cpp [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
MCExpr.cpp [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
MCFragment.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MCInst.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
MCInstPrinter.cpp [llvm] Parameterizing the output stream for dumpbytes and outputting directly to stream. 2015-05-28 18:39:50 +00:00
MCInstrAnalysis.cpp
MCInstrDesc.cpp Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef. 2015-12-05 07:13:35 +00:00
MCLabel.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
MCLinkerOptimizationHint.cpp MC: Tidy up LOH naming a bit. NFC. 2015-06-01 23:55:06 +00:00
MCMachOStreamer.cpp MachO: enable .data_region directives everywhere 2016-04-21 23:00:17 +00:00
MCMachObjectTargetWriter.cpp MC: Remove obsolete MachO UseAggressiveSymbolFolding. 2015-06-04 20:27:42 +00:00
MCNullStreamer.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MCObjectFileInfo.cpp Add accidentally deleted "break" 2016-04-25 21:28:52 +00:00
MCObjectStreamer.cpp [MC] Add support for encoding CodeView variable definition ranges 2016-02-05 01:55:49 +00:00
MCObjectWriter.cpp Fix pr24486. 2015-10-05 12:07:05 +00:00
MCRegisterInfo.cpp [codeview] Bail on a DBG_VALUE register operand with no register 2016-02-16 21:49:26 +00:00
MCSchedule.cpp Add <type_traits> for is_pod, fixing r241947 2015-07-10 22:17:49 +00:00
MCSection.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
MCSectionCOFF.cpp Sink COFF.h MC include into .cpp files 2015-09-03 16:41:50 +00:00
MCSectionELF.cpp Bring r252305 back with a test fix. 2015-11-06 15:30:45 +00:00
MCSectionMachO.cpp [ADT] Switch a bunch of places in LLVM that were doing single-character 2015-09-10 06:12:31 +00:00
MCStreamer.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MCSubtargetInfo.cpp (NFC) Change SubtargetFeatures::ToggleFeature and 2016-01-05 10:25:56 +00:00
MCSymbol.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
MCSymbolELF.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MCTargetOptions.cpp [MC, COFF] Support link /incremental conditionally 2015-12-21 22:09:27 +00:00
MCValue.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
MCWin64EH.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MCWinEH.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MachObjectWriter.cpp Reapply: "ARM: put correct symbol index on indirect pointers in __thread_ptr."" 2016-04-26 18:29:16 +00:00
StringTableBuilder.cpp Add support for merging strings with alignment larger than one char. 2016-02-19 14:13:52 +00:00
SubtargetFeature.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
WinCOFFObjectWriter.cpp [MC] Add support for encoding CodeView variable definition ranges 2016-02-05 01:55:49 +00:00
WinCOFFStreamer.cpp [Object] Make .alt_entry directive parsing MachO specific. 2016-04-11 18:33:45 +00:00