1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/include/llvm/CodeGen
Philip Reames 9c84b99ce5 [GC] Remove buggy untested optimization from statepoint lowering
A downstream test case (see included reduced test) revealed that we have a bug in how we handle duplicate relocations. If we have the same SDValue relocated twice, and that value happens to be a constant (such as null), we only export one of the two llvm::Values. Exporting on a per llvm::Value basis is required to allow lowering of gc.relocates in following basic blocks (e.g. invokes). Without it, we end up with a use of an undefined vreg and bad things happen.

Rather than fixing the optimization - which appears to be hard - I propose we simply remove it. There are no tests in tree that change with this code removed. If we find out later that this did matter for something, we can reimplement a variation of this in CodeGenPrepare to catch the easy cases without complicating the lowering code.

Thanks to Denis and Serguei who did all the hard work of figuring out what went wrong here. The patch is by far the easy part. :)

Differential Revision: https://reviews.llvm.org/D75964
2020-03-11 10:03:24 -07:00
..
GlobalISel GlobalISel: Add missing add/sub with carries to MachineIRBuilder 2020-03-10 22:39:55 -04:00
MIRParser Revert "Revert "[MIR] Target specific MIR formating and parsing"" 2020-01-08 20:03:29 -08:00
PBQP [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
AccelTable.h [AccelTable] Remove stale comment (NFC) 2019-10-07 20:33:20 +00:00
Analysis.h DAG: allow DAG pointer size different from memory representation. 2019-05-01 12:37:30 +00:00
AsmPrinter.h [AsmPrinter][XRay] Omit unique ID for xray_instr_map and xray_fn_idx 2020-02-14 21:10:46 -08:00
AsmPrinterHandler.h
AtomicExpandUtils.h
BasicTTIImpl.h [TTI][ARM][MVE] Refine gather/scatter cost model 2020-03-11 10:23:41 +00:00
BuiltinGCs.h
CalcSpillWeights.h
CallingConvLower.h [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
CommandFlags.inc Reland "[DebugInfo] Enable the debug entry values feature by default" 2020-03-10 09:15:06 +01:00
CostTable.h
CSEConfigBase.h [GlobalISel] Introduce a CSEConfigBase class to allow targets to define their own CSE configs. 2019-04-15 04:53:46 +00:00
DAGCombine.h
DbgEntityHistoryCalculator.h [DebugInfo] Track multiple registers in DbgEntityHistoryCalculator 2019-04-10 11:28:28 +00:00
DebugHandlerBase.h [DWARF] Emit DW_AT_call_return_pc as an address 2020-01-15 13:02:23 -08:00
DFAPacketizer.h [DFAPacketizer] Allow up to 64 functional units 2019-11-05 15:41:42 +00:00
DIE.h [MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex} 2020-02-14 23:08:40 -08:00
DIEValue.def [DebugInfo] Introduce DW_OP_LLVM_convert 2019-03-19 13:16:28 +00:00
DwarfStringPoolEntry.h
EdgeBundles.h
ExecutionDomainFix.h
ExpandReductions.h
FastISel.h [PGO][PGSO] DAG.shouldOptForSize part. 2019-11-21 14:16:00 -08:00
FaultMaps.h [FaultMaps] Make label formation a bit more explicit [NFC] 2019-12-19 12:38:44 -08:00
FunctionLoweringInfo.h [GC] Remove buggy untested optimization from statepoint lowering 2020-03-11 10:03:24 -07:00
GCMetadata.h
GCMetadataPrinter.h
GCStrategy.h
IntrinsicLowering.h [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
ISDOpcodes.h [SelectionDAG][PowerPC][AArch64][X86][ARM] Add chain input and output the ISD::FLT_ROUNDS_ 2020-02-25 16:58:23 -08:00
LatencyPriorityQueue.h
LazyMachineBlockFrequencyInfo.h
LexicalScopes.h
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
LiveIntervals.h LiveIntervals: Split live intervals on multiple dead defs 2019-10-30 08:50:46 -05:00
LiveIntervalUnion.h [LiveIntervalUnion] Expose extraction of last index in map for external users 2019-10-28 09:15:52 -07:00
LivePhysRegs.h Recommit "[MachineVerifier] Improve verification of live-in lists." 2020-01-08 16:58:54 -08:00
LiveRangeCalc.h Clang-formatting of some files in LiveRangeCalc header (LiveRangeCalc.h) 2019-10-17 03:12:58 +00:00
LiveRangeEdit.h CodeGen: Use Register 2020-01-30 15:01:56 -08:00
LiveRegMatrix.h
LiveRegUnits.h [LiveRegUnits] Add phys_regs_and_masks iterator range (NFC). 2019-12-11 09:34:42 +00:00
LiveStacks.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LiveVariables.h [PHIElimination] Compile time optimization for huge functions. 2020-02-05 18:10:03 -05:00
LoopTraversal.h
LowLevelType.h GlobalISel: Move getLLTForMVT/getMVTForLLT 2020-01-09 16:32:51 -05:00
MachineBasicBlock.h Allow "callbr" to return non-void values 2020-02-24 18:29:06 -08:00
MachineBlockFrequencyInfo.h [BFI] Fix missed BFI updates in MachineSink. 2020-02-21 09:50:54 -08:00
MachineBranchProbabilityInfo.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MachineCombinerPattern.h [AArch64] Fix over-eager fusing of NEON SIMD MUL/ADD 2019-12-03 15:48:37 +00:00
MachineConstantPool.h
MachineDominanceFrontier.h
MachineDominators.h [PGO][PGSO] SizeOpts changes. 2019-10-28 12:57:26 -07:00
MachineFrameInfo.h ArrayRef'ize spillCalleeSavedRegisters. NFCI. 2020-02-08 12:19:23 +01:00
MachineFunction.h [CallSiteInfo] Handle bundles when updating call site info 2020-02-27 13:57:06 +01:00
MachineFunctionPass.h
MachineInstr.h [CallSiteInfo] Handle bundles when updating call site info 2020-02-27 13:57:06 +01:00
MachineInstrBuilder.h [GlobalISel] Change representation of shuffle masks in MachineOperand. 2020-01-13 16:55:41 -08:00
MachineInstrBundle.h [MIBundle] Turn MachineOperandIteratorBase into a forward iterator. 2019-12-05 09:06:22 +00:00
MachineInstrBundleIterator.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
MachineJumpTableInfo.h
MachineLoopInfo.h Include static prof data when collecting loop BBs 2020-02-19 11:33:48 -08:00
MachineLoopUtils.h [ARM][LowOverheadLoops] Remove dead loop update instructions. 2019-12-11 10:20:19 +00:00
MachineMemOperand.h [MIR] Fix cyclic dependency of MIR formatter 2020-01-10 11:18:12 +01:00
MachineModuleInfo.h [AsmPrinter] Delete dead takeDeletedSymbsForFunction() 2020-01-18 17:08:00 -08:00
MachineModuleInfoImpls.h
MachineOperand.h [GlobalISel] Change representation of shuffle masks in MachineOperand. 2020-01-13 16:55:41 -08:00
MachineOptimizationRemarkEmitter.h [Remarks] Extend the RemarkStreamer to support other emitters 2020-02-04 17:16:02 -08:00
MachineOutliner.h [MachineOutliner] Fix uninitialized variable warnings. NFCI. 2019-11-05 15:15:14 +00:00
MachinePassRegistry.h
MachinePipeliner.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MachinePostDominators.h [Dominators][CodeGen] Add MachinePostDominatorTree verification 2019-10-01 15:23:27 +00:00
MachineRegionInfo.h [Dominators][AMDGPU] Don't use virtual exit node in findNearestCommonDominator. Cleanup MachinePostDominators. 2019-09-25 14:04:36 +00:00
MachineRegisterInfo.h CodeGen: Use Register 2020-01-30 15:01:56 -08:00
MachineScheduler.h [NFC] Move InPQueue into arguments of releaseNode 2020-01-08 22:15:32 +08:00
MachineSizeOpts.h [PGO][PGSO] Handle MBFIWrapper 2020-01-31 09:36:55 -08:00
MachineSSAUpdater.h
MachineTraceMetrics.h
MachORelocation.h
MacroFusion.h
MBFIWrapper.h [MBFI] Move BranchFolding::MBFIWrapper to its own files. NFC. 2020-01-28 10:58:46 -08:00
MIRFormatter.h Revert "Revert "[MIR] Target specific MIR formating and parsing"" 2020-01-08 20:03:29 -08:00
MIRPrinter.h Fix missing C++ mode comments 2019-03-12 20:42:14 +00:00
MIRYamlMapping.h [AArch64] Static (de)allocation of SVE stack objects. 2019-10-03 11:33:50 +00:00
ModuloSchedule.h [ModuloSchedule] Fix a bug in experimental expander 2019-11-23 16:01:47 -08:00
NonRelocatableStringpool.h [Dsymutil][Debuginfo][NFC] Reland: Refactor dsymutil to separate DWARF optimizing part. #2. 2020-01-08 14:15:31 +03:00
ParallelCG.h Move CodeGenFileType enum to Support/CodeGen.h 2019-11-13 16:39:34 -08:00
Passes.h [VE] Target-specific bit size for sjljehprepare 2020-03-10 17:51:16 +01:00
PBQPRAConstraint.h Fix misspelled filenames in file headers of llvm/{MC,Object,CodeGen}/*.h 2019-02-06 08:02:46 +00:00
PreISelIntrinsicLowering.h
PseudoSourceValue.h Reland "[StackColoring] Remap PseudoSourceValue frame indices via MachineFunction::getPSVManager()"" 2020-01-27 15:58:49 -08:00
ReachingDefAnalysis.h [RDA][ARM] collectKilledOperands across multiple blocks 2020-03-03 15:23:05 +00:00
RegAllocPBQP.h
RegAllocRegistry.h CodeGen: Make RegAllocRegistry a template class 2019-02-22 19:16:52 +00:00
Register.h Eliminate implicit Register->unsigned conversions in VirtRegMap. NFC 2019-08-13 00:55:24 +00:00
RegisterClassInfo.h Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
RegisterPressure.h [NFC] Add a couple of dump routines for RegisterPressure helper classes 2019-08-15 18:49:39 +00:00
RegisterScavenging.h RegScavenger: Use Register 2019-08-23 18:25:34 +00:00
RegisterUsageInfo.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
ResourcePriorityQueue.h
RuntimeLibcalls.h
ScheduleDAG.h [ScheduleDAGRRList] Recompute topological ordering on demand. 2019-04-17 15:05:29 +00:00
ScheduleDAGInstrs.h Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
ScheduleDAGMutation.h
ScheduleDFS.h Fix misspelled filenames in file headers of llvm/{MC,Object,CodeGen}/*.h 2019-02-06 08:02:46 +00:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h [MC] Widen the functional unit type from 32 to 64 bits. 2020-02-24 09:37:00 +01:00
SDNodeProperties.td
SelectionDAG.h [SDAG] simplify FP binops to undef 2020-03-04 10:42:16 -05:00
SelectionDAGAddressAnalysis.h [DAGCombiner] Unify Lifetime and memory Op aliasing. 2019-03-27 14:14:46 +00:00
SelectionDAGISel.h [AsmPrinter] De-capitalize Emit{Function,BasicBlock]* and Emit{Start,End}OfAsmFile 2020-02-13 13:22:49 -08:00
SelectionDAGNodes.h [SDAG] Add SDNode::values() = make_range(values_begin(), values_end()) 2020-02-26 12:07:38 -06:00
SelectionDAGTargetInfo.h Basic codegen for MTE stack tagging. 2019-07-17 19:24:02 +00:00
SlotIndexes.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
Spiller.h Fix indentation using clang-format for Spiller.h. NFC 2020-03-09 10:52:28 -07:00
StackMaps.h [StackMaps] Be explicit about label formation [NFC] (try 2) 2019-12-19 14:05:30 -08:00
StackProtector.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
SwiftErrorValueTracking.h GlobalISel: Remove unsigned variant of SrcOp 2019-06-24 16:16:12 +00:00
SwitchLoweringUtils.h [PGO][PGSO] TargetLowering/TargetTransformationInfo/SwitchLoweringUtils part. 2019-10-31 13:22:56 -07:00
TailDuplicator.h [MBP] Partial tail duplication into hot predecessors 2020-02-12 15:22:33 -08:00
TargetCallingConv.h [Alignment][NFC] Use Align for getMemcpy/Memmove/Memset 2020-02-03 17:13:19 +01:00
TargetFrameLowering.h ArrayRef'ize restoreCalleeSavedRegisters. NFCI. 2020-02-29 09:50:23 +01:00
TargetInstrInfo.h [MIR][ARM] MachineOperand comments 2020-02-24 14:19:21 +00:00
TargetLowering.h GlobalISel: Move Localizer::shouldLocalize(..) to TargetLowering 2020-03-02 09:15:40 -08:00
TargetLoweringObjectFileImpl.h [NFC][XCOFF] Refactor Csect creation into TargetLoweringObjectFile 2020-01-22 12:09:11 -05:00
TargetOpcodes.h
TargetPassConfig.h [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
TargetRegisterInfo.h [TargetRegisterInfo] Make the heuristic to skip region split overridable by the target 2020-02-03 11:30:35 -08:00
TargetSchedule.h Fix uninitialized variable warnings. NFCI. 2019-11-03 11:23:53 +00:00
TargetSubtargetInfo.h [Scheduling][ARM] Consistently enable PostRA Machine scheduling 2019-11-05 10:44:55 +00:00
UnreachableBlockElim.h
ValueTypes.h [SVE][CodeGen] Scalable vector MVT size queries 2019-11-18 12:30:59 +00:00
ValueTypes.td [MVT] Add v256i1 to MachineValueType 2019-09-20 15:19:20 +00:00
VirtRegMap.h Eliminate implicit Register->unsigned conversions in VirtRegMap. NFC 2019-08-13 00:55:24 +00:00
WasmEHFuncInfo.h [WebAssembly] Delete ThrowUnwindDest map from WasmEHFuncInfo 2019-03-03 22:35:56 +00:00
WinEHFuncInfo.h