[PATCH] D41349: Thread MCSubtargetInfo through Target::createMCAsmBackend

Alex Bradbury via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 18 05:33:33 PST 2017


asb created this revision.
asb added reviewers: craig.topper, rengolin, t.p.northover, lhames, dsanders.
Herald added subscribers: sabuasal, apazos, jordy.potman.lists, simoncook, johnrusso, rbar, JDevlieghere, fedor.sergeev, kbarton, kristof.beyls, arichardson, javed.absar, nhaehnle, nemanjai, sdardis, jyknight, arsenm, aemerson.
Herald added a reviewer: JDevlieghere.

Currently it's not possible to access MCSubtargetInfo from a TgtMCAsmBackend. https://reviews.llvm.org/D20830 threaded an MCSubtargetInfo reference through MCAsmBackend::relaxInstruction, but this isn't the only function that would benefit from access. This patch removes the Triple and CPUString arguments from createMCAsmBackend and replaces them with MCSubtargetInfo.

This patch just changes the interface without making any intentional functional changes. Once in, several cleanups are possible:

- Get rid of the awkward MCSubtargetInfo handling in ARMAsmBackend
- Support 16-bit instructions when valid in MipsAsmBackend::writeNopData
- Get rid of the CPU string parsing in X86AsmBackend and just use a SubtargetFeature for HasNopl
- Emit 16-bit nops in RISCVAsmBackend::writeNopData if the compressed instruction set extension is enabled (see https://reviews.llvm.org/D41221)

I'm not sure who to tag as reviewer, but given this enables useful ARM and X86 cleanups I'm tagging code owners for those targets. Also Lang Hames and Daniel Sanders for touching TargetRegistry recently. Feel free to add yourself as a reviewer to tag anyone else you think would be appropriate.

X86 maintainers: This currently causes some test failures related to the X86 HasNopl code which looks to me like I'm just exposing an existing bug. HasNopl is false if the CPU string is "generic", "i386", and a bunch of others. However, the CPU string is empty when passing llvm-mc arguments like `-arch=x86 -triple=i686-pc-linux-gnu`. This patch means it will be "generic", as selected by createX86MCSubtargetInfo and so HasNopl is false. CC @rafael, who last touched that HasNopl code.


https://reviews.llvm.org/D41349

Files:
  include/llvm/Support/TargetRegistry.h
  lib/CodeGen/LLVMTargetMachine.cpp
  lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
  lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
  lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
  lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h
  lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
  lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
  lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
  lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.h
  lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
  lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h
  lib/Target/Lanai/MCTargetDesc/LanaiAsmBackend.cpp
  lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h
  lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
  lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
  lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
  lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
  lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
  lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.h
  lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
  lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h
  lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp
  lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
  lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
  lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
  tools/dsymutil/DwarfLinker.cpp
  tools/llvm-dwp/llvm-dwp.cpp
  tools/llvm-mc/llvm-mc.cpp
  unittests/DebugInfo/DWARF/DwarfGenerator.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41349.127338.patch
Type: text/x-patch
Size: 35035 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171218/f3200c91/attachment.bin>


More information about the llvm-commits mailing list