llvm-project/llvm/test/Transforms
Sanjay Patel e5606b4fa5 [ConstantFold] fp_binop AnyConstant, undef --> NaN
With the updated LangRef ( D44216 / rL327138 ) in place, we can proceed with more constant folding.

I'm intentionally taking the conservative path here: no matter what the constant or the FMF, we can 
always fold to NaN. This is because the undef operand can be chosen as NaN, and in our simplified 
default FP env, nothing else happens - NaN just propagates to the result. If we find some way/need 
to propagate undef instead, that can be added subsequently.

The tests show that we always choose the same quiet NaN constant (0x7FF8000000000000 in IR text). 
There were suggestions to improve that with a 'NaN' string token or not always print a 64-bit hex 
value, but those are independent changes. We might also consider setting/propagating the payload of 
NaN constants as an enhancement.

Differential Revision: https://reviews.llvm.org/D44308

llvm-svn: 327208
2018-03-10 15:56:25 +00:00
..
ADCE
AddDiscriminators Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
AggressiveInstCombine [AggressiveInstCombine] Fixed TruncCombine class to handle TruncInst leaf node correctly. 2018-01-31 22:39:05 +00:00
AlignmentFromAssumptions [AlignmentFromAssumptions] Set source and dest alignments of memory intrinsiscs separately 2018-02-22 18:55:59 +00:00
ArgumentPromotion [ArgumentPromotion] don't break musttail invariant PR36543 2018-03-02 00:59:27 +00:00
AtomicExpand
BDCE [BDCE] Salvage debug info from dying insts 2018-02-21 01:55:33 +00:00
BlockExtractor [llvm-extract] Support extracting basic blocks 2018-01-23 21:51:34 +00:00
BranchFolding
CallSiteSplitting [CallSiteSplitting] Do not crash when BB's terminator changes. 2018-03-06 14:00:58 +00:00
CalledValuePropagation Add CalledValuePropagation pass 2017-10-25 13:40:08 +00:00
CodeExtractor [PartialInlining] Use isInlineViable to detect constructs preventing inlining. 2018-03-10 14:53:44 +00:00
CodeGenPrepare [AMDGPU] Switch to the new addr space mapping by default 2018-02-02 16:07:16 +00:00
ConstProp [TargetLibraryInfo] fix finite mathlib function availability 2018-01-08 17:38:09 +00:00
ConstantHoisting Fix out-of-order stepping behavior in programs with hoisted constants. 2017-11-09 20:01:31 +00:00
ConstantMerge
Coroutines [Coroutines] Don't move stores for allocator args 2018-02-15 19:31:45 +00:00
CorrelatedValuePropagation Re-land: Teach CorrelatedValuePropagation to reduce the width of udiv/urem instructions. 2018-03-07 16:56:49 +00:00
CrossDSOCFI
DCE [DCE] Salvage debug info from dead insts 2018-02-15 22:26:18 +00:00
DeadArgElim [DAE] don't remove args of musttail target/caller 2018-03-01 00:09:35 +00:00
DeadStoreElimination [DSE] Don't DSE stores that subsequent memmove calls read from 2018-02-20 23:19:34 +00:00
DivRemPairs
EarlyCSE [EarlyCSE] Salvage debug info during DCE 2018-01-09 15:08:37 +00:00
EliminateAvailableExternally
EntryExitInstrumenter EntryExitInstrumenter: set DebugLocs on the inserted call instructions (PR35412) 2017-11-28 18:44:26 +00:00
ExpandMemCmp/X86 [x86, MemCmpExpansion] allow 2 pairs of loads per block (PR33325) 2018-01-06 16:16:04 +00:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs [FunctionAttrs][ArgumentPromotion][GlobalOpt] Disable some optimisations passes for naked functions 2018-02-22 14:42:08 +00:00
FunctionImport Revert "[ThinLTO] Keep available_externally symbols live" 2018-03-09 01:25:18 +00:00
GCOVProfiling
GVN Mark MergedLoadStoreMotion as not preserving MemDep results 2018-02-23 10:41:57 +00:00
GVNHoist [GVNHoist] Fix: PR35222 gvn-hoist incorrectly erases load in case of a loop 2018-01-04 07:47:24 +00:00
GVNSink Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
GlobalDCE
GlobalMerge
GlobalOpt [GlobalOpt] don't change CC of musttail calle(e|r) 2018-02-28 22:28:44 +00:00
GlobalSplit
GuardWidening
IPConstantProp [IPSCCP] do not break musttail invariant (PR36485) 2018-03-01 01:19:18 +00:00
IRCE [SCEV] Smart range calculation for SCEVUnknown Phis 2018-03-01 06:56:48 +00:00
IndVarSimplify [NFC] Fix metadata placement in test 2018-02-15 07:13:18 +00:00
IndirectBrExpand Introduce the "retpoline" x86 mitigation technique for variant #2 of the speculative execution vulnerabilities disclosed today, specifically identified by CVE-2017-5715, "Branch Target Injection", and is one of the two halves to Spectre.. 2018-01-22 22:05:25 +00:00
InferAddressSpaces [AMDGPU] Switch to the new addr space mapping by default 2018-02-02 16:07:16 +00:00
InferFunctionAttrs
Inline [NFC] fix trivial typos in comments and documents 2018-01-29 05:17:03 +00:00
InstCombine [ConstantFold] fp_binop AnyConstant, undef --> NaN 2018-03-10 15:56:25 +00:00
InstMerge
InstNamer
InstSimplify [ConstantFold] fp_binop AnyConstant, undef --> NaN 2018-03-10 15:56:25 +00:00
InterleavedAccess
Internalize
JumpThreading [JumpThreading] Don't restrict cast-traversal to i1 2018-03-09 16:43:46 +00:00
LCSSA [Test] Fix the test to output to /dev/null instead of redirecting. 2018-02-23 19:03:04 +00:00
LICM [LICM] update BlockColors after splitting predecessors 2018-02-12 17:56:55 +00:00
LoadStoreVectorizer [AMDGPU] Supported ds_read_b128 generation; Widened vector length for local address-space. 2018-03-09 17:41:39 +00:00
LoopDataPrefetch
LoopDeletion [LoopDeletion] Handle users in unreachable block 2018-01-12 07:24:43 +00:00
LoopDistribute
LoopIdiom Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
LoopInterchange DA: remove uses of GEP, only ask SCEV 2018-03-06 21:55:59 +00:00
LoopLoadElim
LoopPredication [Loop Predication] Teach LP about reverse loops with uge and sge latch conditions 2018-02-08 10:34:08 +00:00
LoopReroll
LoopRotate [LoopRotate] Detect loops with indirect branches better (we're giving up on them). 2018-01-09 23:54:35 +00:00
LoopSimplify [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation 2018-01-02 16:25:50 +00:00
LoopSimplifyCFG
LoopStrengthReduce Revert "[PowerPC] LSR tunings for PowerPC" 2018-03-09 16:08:55 +00:00
LoopUnroll LoopUnroll: respect pragma unroll when AllowRemainder is disabled 2018-03-02 16:22:32 +00:00
LoopUnswitch [SimplifyCFG] Re-apply Relax restriction for folding unconditional branches 2018-02-08 07:16:29 +00:00
LoopVectorize [LV] Adding test for r327109 2018-03-09 18:02:36 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00
Mem2Reg [Debugify] Add a pass to test debug info preservation 2017-12-08 21:57:28 +00:00
MemCpyOpt Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
MergeFunc Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
MergeICmps [MergeICmp] We can discard initial blocks that do other work 2018-03-05 13:54:47 +00:00
MetaRenamer Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
NameAnonGlobals
NaryReassociate Add early exit on reassociation of 0 expression. 2018-03-07 02:17:08 +00:00
NewGVN [InstCombine, NewGVN] remove FP undef from tests 2018-03-08 14:57:08 +00:00
ObjCARC [ObjCARC] Do not turn a call to @objc_autoreleaseReturnValue into a call 2018-01-19 23:51:13 +00:00
PGOProfile [ThinLTO] Revert r325320: Import global variables 2018-03-02 23:40:08 +00:00
PartiallyInlineLibCalls [PartiallyInlineLibCalls][x86] add TTI hook to allow sqrt inlining to depend on arg rather than result 2017-11-27 21:15:43 +00:00
PhaseOrdering Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
PlaceSafepoints Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
PreISelIntrinsicLowering
PruneEH
Reassociate [Reassociate] fix test to be independent of FP undef 2018-03-08 22:05:27 +00:00
Reg2Mem
RewriteStatepointsForGC [RewriteStatepoints] Fix stale parse points 2018-03-05 22:27:30 +00:00
SCCP [IPSCCP] Add getCompare which returns either true, false, undef or null. 2018-03-05 17:33:50 +00:00
SLPVectorizer [SLP] Additional tests for stores vectorization, NFC. 2018-03-05 20:20:12 +00:00
SROA [Transforms] Propagate TBAA info in SROA 2018-02-16 10:10:29 +00:00
SafeStack [SafeStack] Use updated CreateMemCpy API to set more accurate source and destination alignments. 2018-02-12 22:39:47 +00:00
SampleProfile Profiling tests: Endianess XFAIL for powerpc- (32-bit) 2018-01-09 20:09:23 +00:00
Scalarizer
SeparateConstOffsetFromGEP [AMDGPU] Change constant addr space to 4 2018-02-13 18:00:25 +00:00
SimpleLoopUnswitch [PM/Unswitch] Teach SimpleLoopUnswitch to do non-trivial unswitching, 2017-11-17 19:58:36 +00:00
SimplifyCFG Revert "[Debug] Retain both sets of debug intrinsics in HoistThenElseCodeToIf" 2018-03-09 22:00:10 +00:00
Sink [Sink] Really really fix predicate in legality check 2018-01-11 21:28:57 +00:00
SpeculateAroundPHIs Add a new pass to speculate around PHI nodes with constant (integer) operands when profitable. 2017-11-28 11:32:31 +00:00
SpeculativeExecution
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG [StructurizeCFG] fix test to be independent of FP undef 2018-03-08 17:13:57 +00:00
SyntheticCountsPropagation Add a pass to generate synthetic function entry counts. 2018-01-09 19:39:35 +00:00
TailCallElim Remove this test 2017-11-28 22:39:38 +00:00
ThinLTOBitcodeWriter [ThinLTO] fix test failure without x86 backend 2018-02-06 07:03:09 +00:00
Util LowerDbgDeclare: ignore dbg.declares for allocas with volatile access 2018-03-09 00:45:04 +00:00
WholeProgramDevirt Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00