1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 22:12:57 +02:00
llvm-mirror/include/llvm/CodeGen
Sanjay Patel a84e4eb51a propagate fast-math-flags on DAG nodes
After D10403, we had FMF in the DAG but disabled by default. Nick reported no crashing errors after some stress testing, 
so I enabled them at r243687. However, Escha soon notified us of a bug not covered by any in-tree regression tests: 
if we don't propagate the flags, we may fail to CSE DAG nodes because differing FMF causes them to not match. There is
one test case in this patch to prove that point.

This patch hopes to fix or leave a 'TODO' for all of the in-tree places where we create nodes that are FMF-capable. I 
did this by putting an assert in SelectionDAG.getNode() to find any FMF-capable node that was being created without FMF
( D11807 ). I then ran all regression tests and test-suite and confirmed that everything passes.

This patch exposes remaining work to get DAG FMF to be fully functional: (1) add the flags to non-binary nodes such as
FCMP, FMA and FNEG; (2) add the flags to intrinsics; (3) use the flags as conditions for transforms rather than the
current global settings.

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

llvm-svn: 247815
2015-09-16 16:31:21 +00:00
..
MIRParser Re-commit r247216: "Fix Clang-tidy misc-use-override warnings, other minor fixes" 2015-09-10 16:49:58 +00:00
PBQP Add more missing #includes, found by modules build. 2015-05-11 22:41:07 +00:00
Analysis.h Fix some comment typos. 2015-08-08 18:27:36 +00:00
AsmPrinter.h Make AsmPrinter::EmitJumpTableInfo virtual 2015-09-14 19:44:29 +00:00
AtomicExpandUtils.h Refactor AtomicExpand::expandAtomicRMWToCmpXchg into a standalone function. 2015-08-03 15:29:47 +00:00
BasicTTIImpl.h [TTI] Fix default costs for interleaved accesses 2015-08-03 14:00:58 +00:00
CalcSpillWeights.h Trace copies when checking for rematerializability in spill weight calculation 2015-08-10 11:59:44 +00:00
CallingConvLower.h Remove 3 includes from MCInstrDesc.h and explicitly include them where needed 2015-05-15 21:58:42 +00:00
CommandFlags.h llvm/CodeGen/CommandFlags.h: Prune doubleslash in #include. 2015-09-16 00:10:43 +00:00
DAGCombine.h Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum. 2012-12-27 06:47:41 +00:00
DFAPacketizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
DIE.h AsmPrinter: Stop inheriting from DIE 2015-08-02 20:54:50 +00:00
DIEValue.def Reapply "AsmPrinter: Change DIEValue to be stored by value" 2015-05-27 22:14:58 +00:00
DwarfStringPoolEntry.h AsmPrinter: Avoid creating symbols in DwarfStringPool 2015-05-24 16:58:59 +00:00
EdgeBundles.h [modules] "Specialize" a function by actually specializing a function template 2014-04-24 18:27:29 +00:00
FastISel.h FastISel: Factor out common code; NFC intended 2015-08-26 01:38:00 +00:00
FaultMaps.h Revert "[FaultMaps] Move FaultMapParser to Object/" 2015-06-23 20:09:03 +00:00
FunctionLoweringInfo.h [WinEH] Add some support for code generating catchpad 2015-08-27 23:27:47 +00:00
GCMetadata.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCMetadataPrinter.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCs.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCStrategy.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
IntrinsicLowering.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ISDOpcodes.h [WinEH] Add codegen support for cleanuppad and cleanupret 2015-09-10 00:25:23 +00:00
LatencyPriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LexicalScopes.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LinkAllAsmWriterComponents.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
LinkAllCodegenComponents.h Add a GCStrategy for CoreCLR 2015-05-20 01:07:23 +00:00
LiveInterval.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LiveIntervalAnalysis.h VirtRegMap: Improve addMBBLiveIns() using SlotIndex::MBBIndexIterator; NFC 2015-09-09 18:07:54 +00:00
LiveIntervalUnion.h RAGreedy: Keep track of allocated PhysRegs internally 2015-07-14 17:38:17 +00:00
LivePhysRegs.h Typo. NFC. 2015-09-04 12:34:55 +00:00
LiveRangeEdit.h [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
LiveRegMatrix.h MachineRegisterInfo: Remove UsedPhysReg infrastructure 2015-07-14 17:52:07 +00:00
LiveStackAnalysis.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LiveVariables.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBasicBlock.h Save LaneMask with livein registers 2015-09-09 18:08:03 +00:00
MachineBlockFrequencyInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBranchProbabilityInfo.h Revert r244154 which causes some build failure. See https://llvm.org/bugs/show_bug.cgi?id=24377. 2015-08-06 18:17:29 +00:00
MachineCombinerPattern.h MachineCombiner Pass for selecting faster instruction 2014-08-03 21:35:39 +00:00
MachineConstantPool.h Redirect DataLayout from TargetMachine to Module in MachineFunction 2015-07-07 18:20:57 +00:00
MachineDominanceFrontier.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineDominators.h NFC. 2015-08-07 18:04:17 +00:00
MachineFrameInfo.h MIR Serialization: Serialize the frame information's stack protector index. 2015-08-18 22:26:26 +00:00
MachineFunction.h PseudoSourceValue: Replace global manager with a manager in a machine function. 2015-08-11 23:09:45 +00:00
MachineFunctionAnalysis.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineFunctionInitializer.h MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
MachineFunctionPass.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineInstr.h [X86] Fix emitEpilogue() to make less assumptions about pops 2015-09-16 11:18:25 +00:00
MachineInstrBuilder.h don't repeat function names in comments; NFC 2015-07-31 15:10:44 +00:00
MachineInstrBundle.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineJumpTableInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineLoopInfo.h Remove macro guards for extern template instantiations. 2015-07-13 17:21:31 +00:00
MachineMemOperand.h PseudoSourceValue: Replace global manager with a manager in a machine function. 2015-08-11 23:09:45 +00:00
MachineModuleInfo.h [EH] Handle non-Function personalities like unknown personalities 2015-08-31 20:02:16 +00:00
MachineModuleInfoImpls.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineOperand.h CodeGen: Push the ModuleSlotTracker through MachineOperands 2015-06-26 22:06:47 +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 macro guards for extern template instantiations. 2015-07-13 17:21:31 +00:00
MachineRegisterInfo.h MachineRegisterInfo: Introduce isPhysRegUsed() 2015-08-18 18:54:27 +00:00
MachineScheduler.h [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
MachineSSAUpdater.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineTraceMetrics.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MachineValueType.h [TableGen] Allow TokenTy in intrinsic signatures 2015-09-02 13:36:25 +00:00
MachORelocation.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MIRYamlMapping.h MIR Serialization: Serialize MMI's variable debug information. 2015-08-19 00:13:25 +00:00
ParallelCG.h CodeGen: Introduce splitCodeGen and teach LTOCodeGenerator to use it. 2015-08-27 23:37:36 +00:00
Passes.h Rework of the new interface for shrink wrapping 2015-08-31 18:26:45 +00:00
PBQPRAConstraint.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PseudoSourceValue.h MIR Serialization: Serialize the external symbol call entry pseudo source 2015-08-14 21:14:50 +00:00
RegAllocPBQP.h Fix some comment typos. 2015-08-08 18:27:36 +00:00
RegAllocRegistry.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
RegisterClassInfo.h [C++11] Replace OwningPtr with std::unique_ptr in places where it doesn't break the API. 2014-04-21 09:34:48 +00:00
RegisterPressure.h RegisterPressure: constify getRegSetPressureAtPos() 2015-09-14 21:06:37 +00:00
RegisterScavenging.h Save LaneMask with livein registers 2015-09-09 18:08:03 +00:00
ResourcePriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
RuntimeLibcalls.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ScheduleDAG.h [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
ScheduleDAGInstrs.h Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:43:39 +00:00
ScheduleDFS.h Move remaining LLVM_ENABLE_DUMP conditionals out of the headers 2014-07-01 21:19:13 +00:00
ScheduleHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SchedulerRegistry.h Move the Target way of overriding DAG Scheduler to a target hook 2015-07-28 06:18:04 +00:00
ScoreboardHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SelectionDAG.h propagate fast-math-flags on DAG nodes 2015-09-16 16:31:21 +00:00
SelectionDAGISel.h [WinEH] Add some support for code generating catchpad 2015-08-27 23:27:47 +00:00
SelectionDAGNodes.h propagate fast-math-flags on DAG nodes 2015-09-16 16:31:21 +00:00
SlotIndexes.h Fix typos. 2015-09-12 01:17:08 +00:00
StackMaps.h [StackMap] Use lambdas to specify the sort and erase conditions. NFC. 2015-07-09 17:11:15 +00:00
StackProtector.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetLoweringObjectFileImpl.h Remove DataLayout from TargetLoweringObjectFile, redirect to Module 2015-07-16 06:04:17 +00:00
TargetSchedule.h [MachineCombiner] Work with itineraries 2015-07-15 08:22:23 +00:00
ValueTypes.h SelectionDAG: Support Expand of f16 extloads 2015-09-09 01:12:27 +00:00
ValueTypes.td [TableGen] Allow TokenTy in intrinsic signatures 2015-09-02 13:36:25 +00:00
VirtRegMap.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
WinEHFuncInfo.h [WinEH] Add codegen support for cleanuppad and cleanupret 2015-09-10 00:25:23 +00:00