llvm-6502/include/llvm/CodeGen
Sanjay Patel 2a7841dd4d move IR-level optimization flags into their own struct
This is a preliminary step to using the IR-level floating-point fast-math-flags in the SDAG (D8900).

In this patch, we introduce the optimization flags as their own struct. As noted in the TODO comment, 
we should eventually share this data between the IR passes and the backend.

We also switch the existing nsw / nuw / exact bit functionality of the BinaryWithFlagsSDNode class to
use the new struct.

The tradeoff is that instead of using the free but limited space of SDNode's SubclassData, we add a
data member to the subclass. This means we don't have to repeat all of the get/set methods per flag,
but we're potentially adding size to all nodes of this subclassi type.

In practice on 64-bit systems (measured on Linux and MacOS X), there is no size difference between an
SDNode and BinaryWithFlagsSDNode after this change: they're both 80 bytes. This means that we had at
least one free byte to play with due to struct alignment.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235997 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-28 16:39:12 +00:00
..
PBQP
Analysis.h
AsmPrinter.h [AsmPrinter] Make AsmPrinter's OutStreamer member a unique_ptr. 2015-04-24 19:11:51 +00:00
BasicTTIImpl.h Divergence analysis for GPU programs 2015-04-10 05:03:50 +00:00
CalcSpillWeights.h
CallingConvLower.h
CommandFlags.h Remove the FCFI option from TargetOptions as it is currently unused. 2015-04-19 03:21:08 +00:00
DAGCombine.h
DFAPacketizer.h
DIE.h Add DIEInteger::setValue() method. 2015-03-06 23:22:46 +00:00
EdgeBundles.h
FastISel.h
FunctionLoweringInfo.h [SEH] Implement GetExceptionCode in __except blocks 2015-04-24 20:25:05 +00:00
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h [gcroot] Remove unused items from an enum 2015-04-02 05:02:16 +00:00
IntrinsicLowering.h
ISDOpcodes.h Masked gather and scatter: Added code for SelectionDAG. 2015-04-28 07:57:37 +00:00
LatencyPriorityQueue.h
LexicalScopes.h DebugLoc: Remove getFromDILexicalBlock() 2015-03-30 23:47:26 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h
LiveIntervalAnalysis.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LiveIntervalUnion.h
LivePhysRegs.h Fix uses of reserved identifiers starting with an underscore followed by an uppercase letter 2015-03-16 18:06:57 +00:00
LiveRangeEdit.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LiveRegMatrix.h
LiveStackAnalysis.h
LiveVariables.h
MachineBasicBlock.h
MachineBlockFrequencyInfo.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineBranchProbabilityInfo.h
MachineCombinerPattern.h
MachineConstantPool.h
MachineDominanceFrontier.h
MachineDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineFrameInfo.h [WinEH] Sink UnwindHelp completely out of IR 2015-04-03 22:32:26 +00:00
MachineFunction.h
MachineFunctionAnalysis.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineFunctionPass.h
MachineInstr.h DebugInfo: Drop rest of DIDescriptor subclasses 2015-04-21 18:44:06 +00:00
MachineInstrBuilder.h DebugInfo: Drop rest of DIDescriptor subclasses 2015-04-21 18:44:06 +00:00
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineMemOperand.h [BranchFolding] Remove MMOs during tail merge to preserve dependencies. 2015-03-10 16:22:52 +00:00
MachineModuleInfo.h Re-commit "[SEH] Remove the old __C_specific_handler code now that WinEHPrepare works" 2015-04-23 23:22:33 +00:00
MachineModuleInfoImpls.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineOperand.h Change MachineOperand::OpKind from unsigned char to a bitfield. NFC. 2015-04-22 17:48:26 +00:00
MachinePassRegistry.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachinePostDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineRegionInfo.h Remove empty non-virtual destructors or mark them =default when non-public 2015-04-11 15:32:26 +00:00
MachineRegisterInfo.h MachineRegisterInfo: Make it clear that hints are for vregs 2015-04-03 00:18:33 +00:00
MachineScheduler.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineSSAUpdater.h
MachineTraceMetrics.h
MachineValueType.h Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
MachORelocation.h
Passes.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
PBQPRAConstraint.h
PseudoSourceValue.h
RegAllocPBQP.h
RegAllocRegistry.h
RegisterClassInfo.h
RegisterPressure.h Remove declarations for nonexistent methods 2015-04-01 21:16:02 +00:00
RegisterScavenging.h
ResourcePriorityQueue.h
RuntimeLibcalls.h
ScheduleDAG.h
ScheduleDAGInstrs.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDFS.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
SelectionDAGISel.h Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
SelectionDAGNodes.h move IR-level optimization flags into their own struct 2015-04-28 16:39:12 +00:00
SlotIndexes.h
StackMaps.h Remove dead calls and function arguments dealing with TRI in StackMaps. 2015-03-20 21:05:18 +00:00
StackProtector.h
TargetLoweringObjectFileImpl.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
TargetSchedule.h
ValueTypes.h
ValueTypes.td Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
VirtRegMap.h
WinEHFuncInfo.h [WinEHPrepare] Don't rely on the order of IR 2015-04-10 04:56:17 +00:00