llvm-project/llvm/lib/Transforms/Scalar
Craig Topper 3ad8fbd205 [Reassociate] Teach ConvertShiftToMul to preserve nsw flag if the shift amount is not bitwidth - 1.
Multiply and shl have different signed overflow behavior in
some cases. But it looks like we should be ok as long as the
shift amount is less than bitwidth - 1.

Alive2: http://volta.cs.utah.edu:8080/z/MM4WZP

Differential Revision: https://reviews.llvm.org/D81189
2020-06-04 14:51:34 -07:00
..
ADCE.cpp [ADCE] Fix incorrect reporting of CFG changes 2020-04-14 20:26:13 +07:00
AlignmentFromAssumptions.cpp [Alignment] Remove unnecessary getValueOrABITypeAlignment calls (NFC) 2020-05-17 22:19:15 +02:00
BDCE.cpp Clang-trunk Generates Wrong Debug values with -O1 2019-11-21 13:53:10 -08:00
CMakeLists.txt [Matrix] Add first set of matrix intrinsics and initial lowering pass. 2019-12-12 15:42:18 +00:00
CallSiteSplitting.cpp [CallSite removal][CallSiteSplitting] Use CallBase instead of CallSite. NFC 2020-04-15 15:38:02 -07:00
ConstantHoisting.cpp [NewPassManager] Add assertions when getting statefull cached analysis. 2020-05-13 12:38:38 -07:00
ConstantProp.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
CorrelatedValuePropagation.cpp [llvm][NFC][CallSite] Removed CallSite from few implementation details 2020-04-23 10:36:36 -07:00
DCE.cpp [AssumeBundles] preserve knowledge in DCE 2020-04-14 12:48:15 +02:00
DeadStoreElimination.cpp [DSE] Remove noop stores in MSSA. 2020-05-30 09:57:30 -07:00
DivRemPairs.cpp [DivRemPairs] Freeze operands if they can be undef values 2020-03-25 03:46:14 +09:00
EarlyCSE.cpp [EarlyCSE] Common gc.relocate calls. 2020-06-02 12:25:43 +03:00
FlattenCFGPass.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
Float2Int.cpp [Float2Int] Stop passing around a reference to the class member Roots. NFC 2020-04-16 15:24:13 +02:00
GVN.cpp [GVN] Reduce expression size (NFC) 2020-04-26 09:43:35 +02:00
GVNHoist.cpp AllocaInst should store Align instead of MaybeAlign. 2020-05-16 14:53:16 -07:00
GVNSink.cpp [GVNSink] Simplify code. NFC. 2020-04-01 13:13:00 +02:00
GuardWidening.cpp Broaden the definition of a "widenable branch" 2019-11-21 10:46:16 -08:00
IVUsersPrinter.cpp
IndVarSimplify.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
InductiveRangeCheckElimination.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
InferAddressSpaces.cpp InferAddressSpaces: Handle ptrmask intrinsic 2020-05-28 10:04:02 -04:00
InstSimplifyPass.cpp [Utils] Use WeakTrackingVH in vector used as scratch storage. 2020-01-23 16:04:57 -08:00
JumpThreading.cpp [JumpThreading] Simplify FindMostPopularDest (NFC) 2020-06-02 18:43:31 -07:00
LICM.cpp [LICM] When promoting loads to the preheader, drop the location. 2020-05-14 17:05:23 -07:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
LoopDeletion.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LoopDistribute.cpp [LAA] Move CheckingPtrGroup/PointerCheck outside class (NFC). 2020-04-28 21:47:31 +01:00
LoopFuse.cpp [LoopFusion] Remove unreachable blocks from DT and LI after fusion 2020-05-07 16:44:40 -07:00
LoopIdiomRecognize.cpp [CostModel] Unify Intrinsic Costs. 2020-05-26 09:48:26 +01:00
LoopInstSimplify.cpp [Utils] Use WeakTrackingVH in vector used as scratch storage. 2020-01-23 16:04:57 -08:00
LoopInterchange.cpp [LoopInterchange] Fix interchanging contents of preheader BBs 2020-03-13 15:59:37 -04:00
LoopLoadElimination.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
LoopPassManager.cpp Extend TimeTrace to LLVM's new pass manager 2020-03-06 14:45:19 -08:00
LoopPredication.cpp [Transforms] Fix typos. NFC 2020-05-25 22:34:08 +02:00
LoopRerollPass.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
LoopRotation.cpp [LoopRotate] Get and update MSSA only if available in legacy pass manager. 2020-02-14 10:47:26 -08:00
LoopSimplifyCFG.cpp [IVDescriptors] Remove IRBuilder.h include; NFC 2020-04-04 12:07:57 +02:00
LoopSink.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LoopStrengthReduce.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
LoopUnrollAndJamPass.cpp [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels 2020-05-06 21:47:44 +00:00
LoopUnrollPass.cpp [NewPassManager] Add assertions when getting statefull cached analysis. 2020-05-13 12:38:38 -07:00
LoopUnswitch.cpp [llvm][NFC][CallSite] Remove CallSite from a few trivial locations 2020-04-22 08:39:21 -07:00
LoopVersioningLICM.cpp [CallSite removal] Remove unneeded includes of CallSite.h. NFC 2020-04-23 21:01:48 -07:00
LowerAtomic.cpp [Transforms] Simplify with make_early_inc_range 2020-02-02 00:54:32 -08:00
LowerConstantIntrinsics.cpp InstructionSimplify.h - remove unnecessary includes. NFC. 2020-05-25 13:45:03 +01:00
LowerExpectIntrinsic.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LowerGuardIntrinsic.cpp Move widenable branch formation into makeGuardControlFlowExplicit helper 2019-11-20 12:54:05 -08:00
LowerMatrixIntrinsics.cpp [llvm] [MatrixIntrinsics] Add row-major support for llvm.matrix.transpose 2020-05-28 12:13:32 -07:00
LowerWidenableCondition.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MakeGuardsExplicit.cpp D'oh. Fix assert after a84922916e. 2019-11-20 22:22:51 -05:00
MemCpyOptimizer.cpp [Align] Remove operations on MaybeAlign that asserted that it had a defined value. 2020-05-22 21:54:28 -07:00
MergeICmps.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MergedLoadStoreMotion.cpp [Transforms] Simplify with make_early_inc_range 2020-02-02 00:54:32 -08:00
NaryReassociate.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
NewGVN.cpp [AssumeBundles] preserve information in NewGVN 2020-04-14 12:48:14 +02:00
PartiallyInlineLibCalls.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
PlaceSafepoints.cpp [Statepoint] Replace uses of isX functions with idiomatic isa<X> 2020-05-27 18:32:28 -07:00
Reassociate.cpp [Reassociate] Teach ConvertShiftToMul to preserve nsw flag if the shift amount is not bitwidth - 1. 2020-06-04 14:51:34 -07:00
Reg2Mem.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
RewriteStatepointsForGC.cpp [Statepoint] Sink actual_args and gc_args to GCStatepointInst [NFC] 2020-05-28 13:51:59 -07:00
SCCP.cpp [SCCP] Switch to widen at PHIs, stores and call edges. 2020-05-29 11:59:17 +01:00
SROA.cpp Process gep (phi ptr1, ptr2) in SROA 2020-06-01 08:41:05 -07:00
Scalar.cpp [BasicBlockUtils] Add utility to remove redundant dbg.value instrs 2019-12-16 11:41:21 +01:00
Scalarizer.cpp [Scalarizer] Fix a non-deterministic scatter order problem 2020-04-20 16:05:33 +02:00
SeparateConstOffsetFromGEP.cpp Remove getNumUses() comparisons (NFC) 2020-05-02 11:05:19 +02:00
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch] Drop uses of instructions before block deletion 2020-05-27 18:25:18 +07:00
SimplifyCFGPass.cpp SimplifyCFG: Clean up optforfuzzing implementation 2020-05-23 13:49:50 -04:00
Sink.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
SpeculateAroundPHIs.cpp [NFC][CostModel] Add TargetCostKind to relevant APIs 2020-05-05 10:35:54 +01:00
SpeculativeExecution.cpp [TTI] Add TargetCostKind argument to getUserCost 2020-04-28 08:57:45 +01:00
StraightLineStrengthReduce.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
StructurizeCFG.cpp [StructurizeCFG] Fix an incorrect comment, NFC. 2020-06-01 17:42:09 +03:00
TailRecursionElimination.cpp [TRE] Allow accumulator elimination when base case returns non-constant 2020-06-04 10:34:42 -07:00
WarnMissedTransforms.cpp [TTI] Clean up includes (NFC). 2020-04-19 20:11:59 +01:00