llvm-mirror/lib/MC
Craig Topper c702d65b9c [Subtarget] Remove static global constructor call from the tablegened subtarget feature tables
Subtarget features are stored in a std::bitset that has been subclassed. There is a special constructor to allow the tablegen files to provide a list of bits to initialize the std::bitset to. This constructor isn't constexpr and std::bitset doesn't support many constexpr operations either. This results in a static global constructor being used to initialize the feature bitsets in these files at startup.

To fix this I've introduced a new FeatureBitArray class that holds three 64-bit values representing the initial bit values and taught tablegen to emit hex constants for them based on the feature enum values. This makes the tablegen files less readable than they were before. I can add the list of features back as a comment if we think that's important.

I've added a method to convert from this class into the std::bitset subclass we had before. I considered making the new FeatureBitArray class just implement the std::bitset interface we need instead, but thought I'd see how others felts about that first.

I've simplified the interfaces to SetImpliedBits and ClearImpliedBits a little minimize the number of times we need to convert to the bitset.

This removes about 27K from my local release+asserts build of llc.

Differential Revision: https://reviews.llvm.org/D58520

llvm-svn: 355167
2019-03-01 02:19:26 +00:00
..
MCDisassembler
MCParser [NFC] Fix typos: preceeding -> preceding 2019-02-23 01:28:32 +00:00
CMakeLists.txt
ConstantPools.cpp
ELFObjectWriter.cpp MC/ELF: Allow targets to set ABI version 2019-02-14 22:42:09 +00:00
LLVMBuild.txt
MachObjectWriter.cpp
MCAsmBackend.cpp
MCAsmInfo.cpp
MCAsmInfoCOFF.cpp
MCAsmInfoDarwin.cpp
MCAsmInfoELF.cpp
MCAsmInfoWasm.cpp [WebAssembly] Add symbol flag to the binary format llvm.used 2019-02-07 01:24:44 +00:00
MCAsmMacro.cpp
MCAsmStreamer.cpp
MCAssembler.cpp
MCCodeEmitter.cpp
MCCodePadder.cpp
MCCodeView.cpp
MCContext.cpp
MCDwarf.cpp
MCELFObjectTargetWriter.cpp MC/ELF: Allow targets to set ABI version 2019-02-14 22:42:09 +00:00
MCELFStreamer.cpp
MCExpr.cpp [WebAssembly] Remove unneeded MCSymbolRefExpr variants 2019-02-22 22:29:34 +00:00
MCFragment.cpp
MCInst.cpp
MCInstPrinter.cpp
MCInstrAnalysis.cpp
MCInstrDesc.cpp
MCLabel.cpp
MCLinkerOptimizationHint.cpp
MCMachObjectTargetWriter.cpp
MCMachOStreamer.cpp
MCNullStreamer.cpp
MCObjectFileInfo.cpp
MCObjectStreamer.cpp
MCObjectWriter.cpp
MCRegisterInfo.cpp
MCSchedule.cpp
MCSection.cpp
MCSectionCOFF.cpp [MC] Clean up unused inline function and non-anchor defaulted destructors; NFCI 2019-02-09 02:11:51 +00:00
MCSectionELF.cpp [MC] Clean up unused inline function and non-anchor defaulted destructors; NFCI 2019-02-09 02:11:51 +00:00
MCSectionMachO.cpp
MCSectionWasm.cpp [WebAssembly] Update MC for bulk memory 2019-02-19 22:56:19 +00:00
MCStreamer.cpp
MCSubtargetInfo.cpp
MCSymbol.cpp
MCSymbolELF.cpp
MCTargetOptions.cpp
MCValue.cpp
MCWasmObjectTargetWriter.cpp [WebAssembly] clang-tidy (NFC) 2019-02-04 19:13:39 +00:00
MCWasmStreamer.cpp [WebAssembly] Add symbol flag to the binary format llvm.used 2019-02-07 01:24:44 +00:00
MCWin64EH.cpp
MCWinCOFFStreamer.cpp
MCWinEH.cpp
StringTableBuilder.cpp
SubtargetFeature.cpp [Subtarget] Remove static global constructor call from the tablegened subtarget feature tables 2019-03-01 02:19:26 +00:00
WasmObjectWriter.cpp Fix "enumeral and non-enumeral type in conditional expression" gcc7 warning. NFCI. 2019-02-24 13:31:52 +00:00
WinCOFFObjectWriter.cpp