1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/include/llvm/Transforms/Utils
Nikita Popov 8eac42b1cf [Inline] Fix noalias addition on simplified instructions (PR50589)
When adding noalias/alias.scope metadata, we analyze the instructions
of the original callee, and then place metadata on the corresponding
inlined instructions in the caller as provided by VMap. However, this
assumes that this actually a clone of the instruction, rather than
the result of simplification. If simplification occurred, the
instruction that VMap points to may not have any relationship as far
as ModRef behavior is concerned.

Fix this by tracking simplified instructions during cloning and then
only processing instructions that have not been simplified. This is
done with an additional map form original to cloned instruction,
into which we only insert if no simplification is performed. The
mapping in VMap can then be compared to this map. If they're the
same, the instruction hasn't been simplified. (I originally wanted
to only track a set of simplified instructions, but that wouldn't
work if the instruction only gets simplified afterwards, e.g. based
on rewritten phis.)

Fixes https://bugs.llvm.org/show_bug.cgi?id=50589.

Differential Revision: https://reviews.llvm.org/D106242
2021-07-20 19:52:41 +02:00
..
AddDiscriminators.h
AMDGPUEmitPrintf.h
ASanStackFrameLayout.h
AssumeBundleBuilder.h Plumb AssumeInst through operand bundle apis [nfc] 2021-04-06 12:53:53 -07:00
BasicBlockUtils.h [CSSPGO] Undoing the concept of dangling pseudo probe 2021-06-18 15:14:11 -07:00
BreakCriticalEdges.h
BuildLibCalls.h
BypassSlowDivision.h
CallGraphUpdater.h
CallPromotionUtils.h
CanonicalizeAliases.h
CanonicalizeFreezeInLoops.h
Cloning.h [Inline] Fix noalias addition on simplified instructions (PR50589) 2021-07-20 19:52:41 +02:00
CodeExtractor.h
CodeMoverUtils.h
CtorUtils.h
Debugify.h [NFC][Debugify][Original DI] Use MapVector insted of DenseMap for DI tracking 2021-05-21 02:58:16 -07:00
EntryExitInstrumenter.h
EscapeEnumerator.h
Evaluator.h Explicitly pass type to cast load constant folding result 2021-04-20 00:53:21 -07:00
FixIrreducible.h
FunctionComparator.h
FunctionImportUtils.h
GlobalStatus.h
GuardUtils.h
HelloWorld.h
InjectTLIMappings.h
InstructionNamer.h
IntegerDivision.h
LCSSA.h
LibCallsShrinkWrap.h
Local.h Partial Reapply "[DebugInfo] Use variadic debug values to salvage BinOps and GEP instrs with non-const operands" 2021-06-24 09:46:38 +01:00
LoopPeel.h
LoopRotationUtils.h
LoopSimplify.h
LoopUtils.h [LICM] Create LoopNest Invariant Code Motion (LNICM) pass 2021-07-20 00:31:18 +09:00
LoopVersioning.h
LowerInvoke.h
LowerMemIntrinsics.h
LowerSwitch.h
MatrixUtils.h
Mem2Reg.h
MemoryOpRemark.h [Remarks] Make memsize remarks report as an analysis, not a missed opportunity. 2021-06-22 18:22:47 -07:00
MetaRenamer.h
ModuleUtils.h
NameAnonGlobals.h
PredicateInfo.h
PromoteMemToReg.h
RelLookupTableConverter.h [Passes] Add relative lookup table converter pass 2021-04-13 01:29:41 +00:00
SampleProfileLoaderBaseImpl.h [SampleFDO] Make FSDiscriminator flag part of function parameters 2021-06-21 14:37:45 -07:00
SampleProfileLoaderBaseUtil.h [SampleFDO] Place the discriminator flag variable into the used list. 2021-06-15 21:51:04 -07:00
SanitizerStats.h
ScalarEvolutionExpander.h ABI breaking changes fixes. 2021-06-15 11:08:13 +01:00
SCCPSolver.h Function Specialization Pass 2021-06-11 09:11:29 +01:00
SimplifyCFGOptions.h
SimplifyIndVar.h
SimplifyLibCalls.h
SizeOpts.h Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
SplitModule.h
SSAUpdater.h
SSAUpdaterBulk.h
SSAUpdaterImpl.h
StripGCRelocates.h
StripNonLineTableDebugInfo.h
SymbolRewriter.h
UnifyFunctionExitNodes.h
UnifyLoopExits.h
UnrollLoop.h [LoopUnroll] Don't modify TripCount/TripMultiple in computeUnrollCount() (NFCI) 2021-06-21 21:34:17 +02:00
ValueMapper.h
VNCoercion.h