llvm/lib/Transforms/Scalar
Matt Arsenault fe6b2045f8 StructurizeCFG: Directly invert cmp instructions
The most common case for a branch condition is
a single use compare. Directly invert the branch
predicate rather than adding a lot of xor i1 true
which the DAG will have to fold later.

This produces nicer to read structurizer output.

This produces some random changes in codegen
due to the DAG swapping branch conditions itself,
and then does a poor job of dealing with those
inverts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300732 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-19 18:29:07 +00:00
..
ADCE.cpp [ADCE] Remove redundent code [NFC] 2017-03-16 03:59:23 +00:00
AlignmentFromAssumptions.cpp [PH] Replace uses of AssertingVH from members of analysis results with 2017-01-24 12:55:57 +00:00
BDCE.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
CMakeLists.txt NVPTX: Move InferAddressSpaces to generic code 2017-01-31 01:10:58 +00:00
ConstantHoisting.cpp [Constant Hoisting] Avoid inserting instructions before EH pads 2017-03-01 22:41:12 +00:00
ConstantProp.cpp Don't remove side effecting instructions due to ConstantFoldInstruction 2016-07-22 04:54:44 +00:00
CorrelatedValuePropagation.cpp [IR] Make paramHasAttr to use arg indices instead of attr indices 2017-04-14 20:19:02 +00:00
DCE.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
DeadStoreElimination.cpp Cleanup in preparation for D30703. NFCI 2017-03-29 14:42:27 +00:00
EarlyCSE.cpp MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
FlattenCFGPass.cpp
Float2Int.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
GuardWidening.cpp Add a wrapper around copy_if in STLExtras; NFC 2017-02-21 00:38:44 +00:00
GVN.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
GVNHoist.cpp [GVNHoist] Mark GlobalsAA as preserved by GVNHoist. 2017-04-18 13:25:49 +00:00
InductiveRangeCheckElimination.cpp [IRCE] Add a missing invariant check 2017-02-07 23:59:07 +00:00
IndVarSimplify.cpp Use MutableArrayRef for APFloat::convertToInteger 2017-03-20 14:40:12 +00:00
InferAddressSpaces.cpp AMDGPU: Add all atomicrmw fields to atomic.inc/dec 2017-03-30 22:21:40 +00:00
IVUsersPrinter.cpp [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
JumpThreading.cpp Revert r300657 due to crashes in stage2 of bootstraps: 2017-04-19 06:23:20 +00:00
LICM.cpp [LICM] Hoist fp division from the loops and replace by a reciprocal 2017-04-11 02:22:54 +00:00
LLVMBuild.txt
LoadCombine.cpp [LoadCombine] Avoid analysing dead basic blocks 2017-04-12 08:07:55 +00:00
LoopAccessAnalysisPrinter.cpp [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
LoopDataPrefetch.cpp Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
LoopDeletion.cpp [LoopDeletion] Modernize and simplify a bit. NFCI. 2017-02-26 07:08:20 +00:00
LoopDistribute.cpp Add a wrapper around copy_if in STLExtras; NFC 2017-02-21 00:38:44 +00:00
LoopIdiomRecognize.cpp Module::getOrInsertFunction is using C-style vararg instead of variadic templates. 2017-04-11 15:01:18 +00:00
LoopInstSimplify.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
LoopInterchange.cpp Remove inclusion of SSAUpdater from several passes. 2017-01-29 01:55:24 +00:00
LoopLoadElimination.cpp Add a getPointerOperandType() helper to LoadInst and StoreInst; NFC 2017-04-18 22:00:54 +00:00
LoopPassManager.cpp [PM] Teach LoopUnroll to update the LPM infrastructure as it unrolls 2017-01-25 02:49:01 +00:00
LoopPredication.cpp Loop predication expand both sides of the widened condition 2017-02-27 15:44:49 +00:00
LoopRerollPass.cpp [LoopReroll] Prefer hasNUses/hasNUses or more as they're cheaper. NFCI. 2017-04-18 21:42:21 +00:00
LoopRotation.cpp [LoopRotate] Propagate dbg.value intrinsics 2017-03-08 09:56:22 +00:00
LoopSimplifyCFG.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
LoopSink.cpp [PM] Port LoopSink to the new pass manager. 2017-01-20 08:42:19 +00:00
LoopStrengthReduce.cpp Tighten the API for ScalarEvolutionNormalization 2017-04-14 15:49:59 +00:00
LoopUnrollPass.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
LoopUnswitch.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
LoopVersioningLICM.cpp [LoopVersioning] Require loop-simplify form for loop versioning. 2016-12-19 17:13:37 +00:00
LowerAtomic.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LowerExpectIntrinsic.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
LowerGuardIntrinsic.cpp [PM] Port LowerGuardIntrinsic to the new PM. 2016-07-28 22:08:41 +00:00
MemCpyOptimizer.cpp [MemCpyOpt] Only replace memcpy with bitcast if address spaces match 2017-04-10 19:00:25 +00:00
MergedLoadStoreMotion.cpp Remove inclusion of SSAUpdater from several passes. 2017-01-29 01:55:24 +00:00
NaryReassociate.cpp [PH] Replace uses of AssertingVH from members of analysis results with 2017-01-24 12:55:57 +00:00
NewGVN.cpp NewGVN: Fix memory congruence verification. The return true should be a return false. Merge the appropriate if statements so it doesn't happen again. 2017-04-18 20:15:47 +00:00
PartiallyInlineLibCalls.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
PlaceSafepoints.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
Reassociate.cpp [Reassociate] Add negated value of negative constant to the Duplicates list. 2017-02-23 18:49:03 +00:00
Reg2Mem.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
RewriteStatepointsForGC.cpp [SystemZ] TargetTransformInfo cost functions implemented. 2017-04-12 11:49:08 +00:00
Scalar.cpp Split the SimplifyCFG pass into two variants. 2017-03-26 06:44:08 +00:00
Scalarizer.cpp [Scalarizer] Handle scalar arguments in vector GEP 2017-03-31 06:29:49 +00:00
SCCP.cpp [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
SeparateConstOffsetFromGEP.cpp Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
SimplifyCFGPass.cpp Split the SimplifyCFG pass into two variants. 2017-03-26 06:44:08 +00:00
Sink.cpp Remove unnecessary IDom check 2017-03-20 00:30:19 +00:00
SpeculativeExecution.cpp SpeculativeExecution: Allow speculating more inst types 2016-10-28 20:00:33 +00:00
SROA.cpp Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
StraightLineStrengthReduce.cpp IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
StructurizeCFG.cpp StructurizeCFG: Directly invert cmp instructions 2017-04-19 18:29:07 +00:00
TailRecursionElimination.cpp [TRE] Remove dead code 2016-11-07 22:17:37 +00:00