mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
5e5115bbd0
This patch fixes a variety of crashes resulting from the `MemCpyOptPass` casting `TypeSize` to a constant integer, whether implicitly or explicitly. Since the `MemsetRanges` requires a constant size to work, all but one of the fixes in this patch simply involve skipping the various optimizations for scalable types as cleanly as possible. The optimization of `byval` parameters, however, has been updated to work on scalable types in theory. In practice, this optimization is only valid when the length of the `memcpy` is known to be larger than the scalable type size, which is currently never the case. This could perhaps be done in the future using the `vscale_range` attribute. Some implicit casts have been left as they were, under the knowledge they are only called on aggregate types. These should never be scalably-sized. Reviewed By: nikic, tra Differential Revision: https://reviews.llvm.org/D109329 (cherry-picked from commit 7fb66d4) |
||
---|---|---|
.. | ||
ADCE.h | ||
AlignmentFromAssumptions.h | ||
AnnotationRemarks.h | ||
BDCE.h | ||
CallSiteSplitting.h | ||
ConstantHoisting.h | ||
ConstraintElimination.h | ||
CorrelatedValuePropagation.h | ||
DCE.h | ||
DeadStoreElimination.h | ||
DFAJumpThreading.h | ||
DivRemPairs.h | ||
EarlyCSE.h | ||
Float2Int.h | ||
GuardWidening.h | ||
GVN.h | ||
GVNExpression.h | ||
InductiveRangeCheckElimination.h | ||
IndVarSimplify.h | ||
InferAddressSpaces.h | ||
InstSimplifyPass.h | ||
IVUsersPrinter.h | ||
JumpThreading.h | ||
LICM.h | ||
LoopAccessAnalysisPrinter.h | ||
LoopBoundSplit.h | ||
LoopDataPrefetch.h | ||
LoopDeletion.h | ||
LoopDistribute.h | ||
LoopFlatten.h | ||
LoopFuse.h | ||
LoopIdiomRecognize.h | ||
LoopInstSimplify.h | ||
LoopInterchange.h | ||
LoopLoadElimination.h | ||
LoopPassManager.h | ||
LoopPredication.h | ||
LoopReroll.h | ||
LoopRotation.h | ||
LoopSimplifyCFG.h | ||
LoopSink.h | ||
LoopStrengthReduce.h | ||
LoopUnrollAndJamPass.h | ||
LoopUnrollPass.h | ||
LoopVersioningLICM.h | ||
LowerAtomic.h | ||
LowerConstantIntrinsics.h | ||
LowerExpectIntrinsic.h | ||
LowerGuardIntrinsic.h | ||
LowerMatrixIntrinsics.h | ||
LowerWidenableCondition.h | ||
MakeGuardsExplicit.h | ||
MemCpyOptimizer.h | ||
MergedLoadStoreMotion.h | ||
MergeICmps.h | ||
NaryReassociate.h | ||
NewGVN.h | ||
PartiallyInlineLibCalls.h | ||
Reassociate.h | ||
Reg2Mem.h | ||
RewriteStatepointsForGC.h | ||
ScalarizeMaskedMemIntrin.h | ||
Scalarizer.h | ||
SCCP.h | ||
SeparateConstOffsetFromGEP.h | ||
SimpleLoopUnswitch.h | ||
SimplifyCFG.h | ||
Sink.h | ||
SpeculativeExecution.h | ||
SROA.h | ||
StraightLineStrengthReduce.h | ||
StructurizeCFG.h | ||
TailRecursionElimination.h | ||
WarnMissedTransforms.h |