llvm-project/llvm/test/Transforms
Teresa Johnson f9ca75f19b [Inliner] Inlining should honor nobuiltin attributes
Summary:
Final patch in series to fix inlining between functions with different
nobuiltin attributes/options, which was specifically an issue in LTO.
See discussion on D61634 for background.

The prior patch in this series (D67923) enabled per-Function TLI
construction that identified the nobuiltin attributes.

Here I have allowed inlining to proceed if the callee's nobuiltins are a
subset of the caller's nobuiltins, but not in the reverse case, which
should be conservatively correct. This is controlled by a new option,
-inline-caller-superset-nobuiltin, which is enabled by default.

Reviewers: hfinkel, gchatelet, chandlerc, davidxl

Subscribers: arsenm, jvesely, nhaehnle, mehdi_amini, eraman, hiraditya, haicheng, dexonsmith, kerbowa, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74162
2020-02-28 07:34:14 -08:00
..
ADCE Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
AddDiscriminators Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
AggressiveInstCombine [AggressiveInstCombine] Add test with baseline CHECKs for aggressive inst combine for ICmp instruction. 2020-02-12 15:09:38 +02:00
AlignmentFromAssumptions
ArgumentPromotion [ArgPromo][Tests] Run update_test_checks on all ArgumentPromotion tests 2019-12-14 00:29:38 -06:00
AtomicExpand AMDGPU: Fix copy-pasted test name error 2019-12-11 19:44:47 +05:30
Attributor [Attributor] Use AssumptionCache in AANonNullFloating::initialize 2020-02-25 13:00:03 +09:00
BDCE Clang-trunk Generates Wrong Debug values with -O1 2019-11-21 13:53:10 -08:00
BlockExtractor Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
BranchFolding
CallSiteSplitting
CalledValuePropagation
CanonicalizeAliases
CodeExtractor [LoopExtractor] Convert LoopExtractor from LoopPass to ModulePass 2020-02-09 12:25:21 +02:00
CodeGenPrepare Recommit "[PatternMatch] Match XOR variant of unsigned-add overflow check." 2020-02-23 18:33:18 +00:00
ConstProp Fix tests of constant folding of fp operations on NaN values 2020-01-21 21:48:07 +02:00
ConstantHoisting Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
ConstantMerge
Coroutines [Coroutines] CoroElide enhancement 2020-02-28 10:41:59 +08:00
CorrelatedValuePropagation [CVP] Simplify cmp of local phi node 2020-02-26 20:36:41 +01:00
CrossDSOCFI
DCE [BasicBlockUtils] Add utility to remove redundant dbg.value instrs 2019-12-16 11:41:21 +01:00
DeadArgElim [NFC] Fix trivial typos in comments 2020-01-06 10:50:26 +00:00
DeadStoreElimination Fix DSE miscompile when store is clobbered across loop iterations 2020-02-27 14:43:01 -08:00
DivRemPairs
EarlyCSE Let EarlyCSE fold equivalent freeze instructions 2020-02-28 20:35:20 +09:00
EliminateAvailableExternally
EntryExitInstrumenter
ExpandMemCmp [X86] Make memcmp vector lowering handle arbitrary expansions 2019-10-30 09:12:57 +02:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
FunctionImport Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
GCOVProfiling Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
GVN [GVN] Add GVNOption to control load-pre more fine-grained. 2020-02-03 23:00:58 -08:00
GVNHoist Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
GVNSink
GlobalDCE [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables 2020-01-23 11:36:01 -08:00
GlobalMerge
GlobalOpt [Transforms][GlobalSRA] huge array causes long compilation time and huge memory usage. 2020-01-04 16:42:38 +03:00
GlobalSplit [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables 2020-01-23 11:36:01 -08:00
GuardWidening Broaden the definition of a "widenable branch" 2019-11-21 10:46:16 -08:00
HardwareLoops Recommit "[HardwareLoops] Optimisation remarks" 2019-11-05 09:06:22 +00:00
HotColdSplit [HotColdSplit] Mark entire function cold when entry block is cold 2020-02-17 15:57:50 -08:00
IPConstantProp [SCCP] Do not mark unknown loads as overdefined. 2020-02-20 22:48:58 +01:00
IRCE [IRCE] Use SCEVExpander to modify loop bound 2020-02-06 12:44:43 +03:00
IndVarSimplify [IndVars] Fix sort comparator. 2020-02-27 17:25:18 -08:00
IndirectBrExpand
InferAddressSpaces
InferFunctionAttrs [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
Inline [Inliner] Inlining should honor nobuiltin attributes 2020-02-28 07:34:14 -08:00
InstCombine [InstCombine] DCE instructions earlier 2020-02-27 18:45:59 +01:00
InstMerge
InstNamer
InstSimplify [ConstantFold] add/move tests for FP with undef operand; NFC 2020-02-20 15:07:11 -05:00
InterleavedAccess [ARM] Disable VLD4 under MVE 2019-12-08 10:37:29 +00:00
Internalize Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
JumpThreading [JumpThreading] Skip unconditional PredBB when threading jumps through two basic blocks 2020-02-18 11:01:46 -08:00
LCSSA [SSAUpdater] Don't call ValueIsRAUWd upon single use replacement 2020-01-23 15:53:53 +07:00
LICM Revert "[LICM] Support hosting of dynamic allocas out of loops" 2020-02-25 09:05:31 -08:00
LoadStoreVectorizer AMDGPU: Don't report 2-byte alignment as fast 2020-02-11 18:35:00 -05:00
LoopDataPrefetch
LoopDeletion
LoopDistribute
LoopFusion [LoopFusion] Move instructions from FC1.GuardBlock to FC0.GuardBlock and 2020-01-30 18:02:22 +00:00
LoopIdiom Revert BCmp Loop Idiom recognition transform (PR43870) 2019-11-02 12:48:03 +03:00
LoopInstSimplify
LoopInterchange [DA] Delinearization of fixed-size multi-dimensional arrays 2020-02-27 10:29:01 -05:00
LoopLoadElim
LoopPredication [BasicBlock] fix looping in getPostdominatingDeoptimizeCall 2020-01-17 15:40:02 +03:00
LoopReroll Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
LoopRotate [LoopRotate] add ability to repeat loop rotation until non-deoptimizing exit is found 2020-01-23 15:56:24 +03:00
LoopSimplify [LoopSimplify] Regenerate test checks; NFC 2020-01-11 11:02:24 +01:00
LoopSimplifyCFG
LoopStrengthReduce Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
LoopTransformWarning
LoopUnroll [LoopUnroll] Avoid UB when converting from WeakVH to `Value *` 2020-01-23 10:36:39 -08:00
LoopUnrollAndJam [llvm] Make new pass manager's OptimizationLevel a class 2020-01-16 09:00:56 -08:00
LoopUnswitch
LoopVectorize [CostModel][X86] Improve extract/insert element costs (PR43605) 2020-02-27 15:54:13 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerConstantIntrinsics Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerMatrixIntrinsics [Matrix] Mark matrix memory intrinsics as argmemonly/write|read mem. 2020-02-04 12:32:45 +00:00
LowerSwitch
LowerTypeTests
LowerWidenableCondition
MakeGuardsExplicit
Mem2Reg
MemCpyOpt [Transform][MemCpyOpt] Add missing DebugLoc to %tmpbitcast 2020-02-28 15:20:51 +00:00
MergeFunc [NewPM] Port MergeFunctions pass 2020-01-14 20:55:41 +01:00
MergeICmps Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
ObjCARC [ObjC][ARC] Don't move a retain call living outside a loop into the loop 2020-02-25 13:00:10 -08:00
OpenMP [OpenMP][Opt] Combine `struct ident_t*` during deduplication 2020-02-25 14:07:14 -08:00
PGOProfile [PGO] Attach appropriate funclet operand bundles to value profiling instrumentation calls 2020-01-24 11:20:53 -08:00
PartiallyInlineLibCalls
PhaseOrdering [PhaseOrdering] add tests for missed CSE; NFC 2020-02-25 14:30:59 -05:00
PlaceSafepoints
PreISelIntrinsicLowering [ObjC] Override TailCallKind when lowering objc intrinsics 2019-11-11 08:30:06 -08:00
PruneEH
Reassociate Remove BinaryOperator::CreateFNeg 2020-02-27 09:06:03 -08:00
Reg2Mem
RewriteStatepointsForGC
SCCP [SCCP] Do not mark unknown loads as overdefined. 2020-02-20 22:48:58 +01:00
SLPVectorizer [CostModel][X86] Improve extract/insert element costs (PR43605) 2020-02-27 15:54:13 +00:00
SROA SROA: Don't drop atomic load/store alignments (PR45010) 2020-02-28 10:38:40 +01:00
SafeStack Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
SampleProfile Fix test for profile remapper 2020-02-18 17:58:32 -08:00
ScalarizeMaskedMemIntrin/X86
Scalarizer Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
SeparateConstOffsetFromGEP [SeparateConstOffsetFromGEP] Fix: sext(a) + sext(b) -> sext(a + b) matches add and sub instructions with one another 2020-01-17 12:22:52 -05:00
SimpleLoopUnswitch Revert "[SimpleLoopUnswitch] Fix introduction of UB when hoisted condition may be undef or poison" 2020-02-28 11:10:46 +09:00
SimplifyCFG [InstCombine] DCE instructions earlier 2020-02-27 18:45:59 +01:00
Sink
SpeculateAroundPHIs
SpeculativeExecution
StraightLineStrengthReduce Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
StripDeadPrototypes
StripSymbols
StructurizeCFG AMDGPU: Update more tests to use modern buffer intrinsics 2020-01-16 14:29:38 -05:00
SyntheticCountsPropagation
TailCallElim
ThinLTOBitcodeWriter
TypePromotion/ARM Revert "[ARM][TypePromotion] Enable by default" 2019-12-22 11:27:11 -08:00
Util Build assume from call 2020-02-02 19:43:36 +01:00
VectorCombine/X86 [VectorCombine] add tests for possible extract->shuffle; NFC 2020-02-25 08:41:59 -05:00
WholeProgramDevirt Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-02-11 10:48:05 -08:00