[llvm] r328165 - Fix a couple of layering violations in Transforms

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 4 11:11:31 PDT 2018


On Fri, May 25, 2018 at 11:11 PM Chandler Carruth <chandlerc at gmail.com>
wrote:

> On Wed, Mar 21, 2018 at 3:36 PM David Blaikie via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: dblaikie
>> Date: Wed Mar 21 15:34:23 2018
>> New Revision: 328165
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=328165&view=rev
>> Log:
>> Fix a couple of layering violations in Transforms
>>
>> Remove #include of Transforms/Scalar.h from Transform/Utils to fix
>> layering.
>>
>> Transforms depends on Transforms/Utils, not the other way around. So
>> remove the header and the "createStripGCRelocatesPass" function
>> declaration (& definition) that is unused and motivated this dependency.
>>
>> Move Transforms/Utils/Local.h into Analysis because it's used by
>> Analysis/MemoryBuiltins.cpp.
>>
>> Added:
>>     llvm/trunk/include/llvm/Analysis/Utils/
>>     llvm/trunk/include/llvm/Analysis/Utils/Local.h
>>       - copied, changed from r328163,
>> llvm/trunk/include/llvm/Transforms/Utils/Local.h
>>
>
> This part of the change somewhat bothers me. Most of Local.h really is
> involved in *mutating* the IR and so shouldn't be used from Analysis
> anyways. Would it be possible to extract the interfaces that
> MemoryBuiltins.cpp is relying on into a separate API that fits better in
> Analysis and put this back into Transforms/Utils?
>

I'm open to ideas - though the API that MemoryBuiltins.cpp is using is
"EmitGEPOffset" - (building a pair of Value*).

So it is really building IR? I'm not sure there's a specific subset that's
more suitable for Analysis than the rest of it?


>
>
>> Removed:
>>     llvm/trunk/include/llvm/Transforms/Utils/Local.h
>> Modified:
>>     llvm/trunk/include/llvm/Transforms/Scalar.h
>>     llvm/trunk/include/llvm/Transforms/Scalar/SimplifyCFG.h
>>     llvm/trunk/lib/Analysis/MemoryBuiltins.cpp
>>     llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
>>     llvm/trunk/lib/CodeGen/DwarfEHPrepare.cpp
>>     llvm/trunk/lib/CodeGen/SafeStack.cpp
>>     llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp
>>     llvm/trunk/lib/CodeGen/WinEHPrepare.cpp
>>     llvm/trunk/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
>>     llvm/trunk/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
>>     llvm/trunk/lib/Target/Hexagon/HexagonCommonGEP.cpp
>>     llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
>>     llvm/trunk/lib/Target/PowerPC/PPCCTRLoops.cpp
>>     llvm/trunk/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
>>     llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp
>>     llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp
>>     llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpp
>>     llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
>>     llvm/trunk/lib/Transforms/IPO/Inliner.cpp
>>     llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
>>     llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.h
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
>>     llvm/trunk/lib/Transforms/InstCombine/InstCombinePHI.cpp
>>     llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>>     llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
>>     llvm/trunk/lib/Transforms/ObjCARC/ObjCARC.h
>>     llvm/trunk/lib/Transforms/Scalar/BDCE.cpp
>>     llvm/trunk/lib/Transforms/Scalar/CallSiteSplitting.cpp
>>     llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp
>>     llvm/trunk/lib/Transforms/Scalar/ConstantProp.cpp
>>     llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
>>     llvm/trunk/lib/Transforms/Scalar/DCE.cpp
>>     llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
>>     llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp
>>     llvm/trunk/lib/Transforms/Scalar/FlattenCFGPass.cpp
>>     llvm/trunk/lib/Transforms/Scalar/GVN.cpp
>>     llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp
>>     llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp
>>     llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp
>>     llvm/trunk/lib/Transforms/Scalar/InferAddressSpaces.cpp
>>     llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LICM.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopRerollPass.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopRotation.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopSink.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
>>     llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
>>     llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp
>>     llvm/trunk/lib/Transforms/Scalar/NaryReassociate.cpp
>>     llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp
>>     llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp
>>     llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
>>     llvm/trunk/lib/Transforms/Scalar/Reg2Mem.cpp
>>     llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
>>     llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
>>     llvm/trunk/lib/Transforms/Scalar/SROA.cpp
>>     llvm/trunk/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
>>     llvm/trunk/lib/Transforms/Scalar/SimplifyCFGPass.cpp
>>     llvm/trunk/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
>>     llvm/trunk/lib/Transforms/Utils/BasicBlockUtils.cpp
>>     llvm/trunk/lib/Transforms/Utils/BypassSlowDivision.cpp
>>     llvm/trunk/lib/Transforms/Utils/CloneFunction.cpp
>>     llvm/trunk/lib/Transforms/Utils/DemoteRegToStack.cpp
>>     llvm/trunk/lib/Transforms/Utils/EscapeEnumerator.cpp
>>     llvm/trunk/lib/Transforms/Utils/FlattenCFG.cpp
>>     llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
>>     llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
>>     llvm/trunk/lib/Transforms/Utils/Local.cpp
>>     llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp
>>     llvm/trunk/lib/Transforms/Utils/LoopUnroll.cpp
>>     llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
>>     llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
>>     llvm/trunk/lib/Transforms/Utils/SimplifyInstructions.cpp
>>     llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
>>     llvm/trunk/lib/Transforms/Utils/StripGCRelocates.cpp
>>     llvm/trunk/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
>>     llvm/trunk/tools/bugpoint/CrashDebugger.cpp
>>     llvm/trunk/unittests/Transforms/Utils/Local.cpp
>>
>> Copied: llvm/trunk/include/llvm/Analysis/Utils/Local.h (from r328163,
>> llvm/trunk/include/llvm/Transforms/Utils/Local.h)
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/Utils/Local.h?p2=llvm/trunk/include/llvm/Analysis/Utils/Local.h&p1=llvm/trunk/include/llvm/Transforms/Utils/Local.h&r1=328163&r2=328165&rev=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Utils/Local.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/Utils/Local.h Wed Mar 21 15:34:23
>> 2018
>> @@ -12,8 +12,8 @@
>>  //
>>
>>  //===----------------------------------------------------------------------===//
>>
>> -#ifndef LLVM_TRANSFORMS_UTILS_LOCAL_H
>> -#define LLVM_TRANSFORMS_UTILS_LOCAL_H
>> +#ifndef LLVM_ANALYSIS_UTILS_LOCAL_H
>> +#define LLVM_ANALYSIS_UTILS_LOCAL_H
>>
>>  #include "llvm/ADT/ArrayRef.h"
>>  #include "llvm/ADT/SmallPtrSet.h"
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Scalar.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar.h?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Scalar.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Scalar.h Wed Mar 21 15:34:23 2018
>> @@ -526,13 +526,6 @@ ModulePass *createRewriteStatepointsForG
>>
>>
>>  //===----------------------------------------------------------------------===//
>>  //
>> -// StripGCRelocates - Remove GC relocates that have been inserted by
>> -// RewriteStatepointsForGC. The resulting IR is incorrect, but this is
>> useful
>> -// for manual inspection.
>> -FunctionPass *createStripGCRelocatesPass();
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//
>>  // Float2Int - Demote floats to ints where possible.
>>  //
>>  FunctionPass *createFloat2IntPass();
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Scalar/SimplifyCFG.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/SimplifyCFG.h?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Scalar/SimplifyCFG.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Scalar/SimplifyCFG.h Wed Mar 21
>> 15:34:23 2018
>> @@ -15,9 +15,9 @@
>>  #ifndef LLVM_TRANSFORMS_SCALAR_SIMPLIFYCFG_H
>>  #define LLVM_TRANSFORMS_SCALAR_SIMPLIFYCFG_H
>>
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Function.h"
>>  #include "llvm/IR/PassManager.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>
>>  namespace llvm {
>>
>>
>> Removed: llvm/trunk/include/llvm/Transforms/Utils/Local.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/Local.h?rev=328164&view=auto
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Utils/Local.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Utils/Local.h (removed)
>> @@ -1,507 +0,0 @@
>> -//===- Local.h - Functions to perform local transformations -----*- C++
>> -*-===//
>> -//
>> -//                     The LLVM Compiler Infrastructure
>> -//
>> -// This file is distributed under the University of Illinois Open Source
>> -// License. See LICENSE.TXT for details.
>> -//
>>
>> -//===----------------------------------------------------------------------===//
>> -//
>> -// This family of functions perform various local transformations to the
>> -// program.
>> -//
>>
>> -//===----------------------------------------------------------------------===//
>> -
>> -#ifndef LLVM_TRANSFORMS_UTILS_LOCAL_H
>> -#define LLVM_TRANSFORMS_UTILS_LOCAL_H
>> -
>> -#include "llvm/ADT/ArrayRef.h"
>> -#include "llvm/ADT/SmallPtrSet.h"
>> -#include "llvm/ADT/SmallVector.h"
>> -#include "llvm/ADT/TinyPtrVector.h"
>> -#include "llvm/Analysis/AliasAnalysis.h"
>> -#include "llvm/IR/CallSite.h"
>> -#include "llvm/IR/Constant.h"
>> -#include "llvm/IR/Constants.h"
>> -#include "llvm/IR/DataLayout.h"
>> -#include "llvm/IR/Dominators.h"
>> -#include "llvm/IR/GetElementPtrTypeIterator.h"
>> -#include "llvm/IR/Operator.h"
>> -#include "llvm/IR/Type.h"
>> -#include "llvm/IR/User.h"
>> -#include "llvm/IR/Value.h"
>> -#include "llvm/Support/Casting.h"
>> -#include <cstdint>
>> -#include <limits>
>> -
>> -namespace llvm {
>> -
>> -class AllocaInst;
>> -class AssumptionCache;
>> -class BasicBlock;
>> -class BranchInst;
>> -class CallInst;
>> -class DbgInfoIntrinsic;
>> -class DbgValueInst;
>> -class DIBuilder;
>> -class Function;
>> -class Instruction;
>> -class LazyValueInfo;
>> -class LoadInst;
>> -class MDNode;
>> -class PHINode;
>> -class StoreInst;
>> -class TargetLibraryInfo;
>> -class TargetTransformInfo;
>> -
>> -/// A set of parameters used to control the transforms in the
>> SimplifyCFG pass.
>> -/// Options may change depending on the position in the optimization
>> pipeline.
>> -/// For example, canonical form that includes switches and branches may
>> later be
>> -/// replaced by lookup tables and selects.
>> -struct SimplifyCFGOptions {
>> -  int BonusInstThreshold;
>> -  bool ForwardSwitchCondToPhi;
>> -  bool ConvertSwitchToLookupTable;
>> -  bool NeedCanonicalLoop;
>> -  bool SinkCommonInsts;
>> -  AssumptionCache *AC;
>> -
>> -  SimplifyCFGOptions(unsigned BonusThreshold = 1,
>> -                     bool ForwardSwitchCond = false,
>> -                     bool SwitchToLookup = false, bool CanonicalLoops =
>> true,
>> -                     bool SinkCommon = false,
>> -                     AssumptionCache *AssumpCache = nullptr)
>> -      : BonusInstThreshold(BonusThreshold),
>> -        ForwardSwitchCondToPhi(ForwardSwitchCond),
>> -        ConvertSwitchToLookupTable(SwitchToLookup),
>> -        NeedCanonicalLoop(CanonicalLoops),
>> -        SinkCommonInsts(SinkCommon),
>> -        AC(AssumpCache) {}
>> -
>> -  // Support 'builder' pattern to set members by name at construction
>> time.
>> -  SimplifyCFGOptions &bonusInstThreshold(int I) {
>> -    BonusInstThreshold = I;
>> -    return *this;
>> -  }
>> -  SimplifyCFGOptions &forwardSwitchCondToPhi(bool B) {
>> -    ForwardSwitchCondToPhi = B;
>> -    return *this;
>> -  }
>> -  SimplifyCFGOptions &convertSwitchToLookupTable(bool B) {
>> -    ConvertSwitchToLookupTable = B;
>> -    return *this;
>> -  }
>> -  SimplifyCFGOptions &needCanonicalLoops(bool B) {
>> -    NeedCanonicalLoop = B;
>> -    return *this;
>> -  }
>> -  SimplifyCFGOptions &sinkCommonInsts(bool B) {
>> -    SinkCommonInsts = B;
>> -    return *this;
>> -  }
>> -  SimplifyCFGOptions &setAssumptionCache(AssumptionCache *Cache) {
>> -    AC = Cache;
>> -    return *this;
>> -  }
>> -};
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Local constant propagation.
>> -//
>> -
>> -/// If a terminator instruction is predicated on a constant value,
>> convert it
>> -/// into an unconditional branch to the constant destination.
>> -/// This is a nontrivial operation because the successors of this basic
>> block
>> -/// must have their PHI nodes updated.
>> -/// Also calls RecursivelyDeleteTriviallyDeadInstructions() on any
>> branch/switch
>> -/// conditions and indirectbr addresses this might make dead if
>> -/// DeleteDeadConditions is true.
>> -bool ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions =
>> false,
>> -                            const TargetLibraryInfo *TLI = nullptr,
>> -                            DeferredDominance *DDT = nullptr);
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Local dead code elimination.
>> -//
>> -
>> -/// Return true if the result produced by the instruction is not used,
>> and the
>> -/// instruction has no side effects.
>> -bool isInstructionTriviallyDead(Instruction *I,
>> -                                const TargetLibraryInfo *TLI = nullptr);
>> -
>> -/// Return true if the result produced by the instruction would have no
>> side
>> -/// effects if it was not used. This is equivalent to checking whether
>> -/// isInstructionTriviallyDead would be true if the use count was 0.
>> -bool wouldInstructionBeTriviallyDead(Instruction *I,
>> -                                     const TargetLibraryInfo *TLI =
>> nullptr);
>> -
>> -/// If the specified value is a trivially dead instruction, delete it.
>> -/// If that makes any of its operands trivially dead, delete them too,
>> -/// recursively. Return true if any instructions were deleted.
>> -bool RecursivelyDeleteTriviallyDeadInstructions(Value *V,
>> -                                        const TargetLibraryInfo *TLI =
>> nullptr);
>> -
>> -/// If the specified value is an effectively dead PHI node, due to being
>> a
>> -/// def-use chain of single-use nodes that either forms a cycle or is
>> terminated
>> -/// by a trivially dead instruction, delete it. If that makes any of its
>> -/// operands trivially dead, delete them too, recursively. Return true
>> if a
>> -/// change was made.
>> -bool RecursivelyDeleteDeadPHINode(PHINode *PN,
>> -                                  const TargetLibraryInfo *TLI =
>> nullptr);
>> -
>> -/// Scan the specified basic block and try to simplify any instructions
>> in it
>> -/// and recursively delete dead instructions.
>> -///
>> -/// This returns true if it changed the code, note that it can delete
>> -/// instructions in other blocks as well in this block.
>> -bool SimplifyInstructionsInBlock(BasicBlock *BB,
>> -                                 const TargetLibraryInfo *TLI = nullptr);
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Control Flow Graph Restructuring.
>> -//
>> -
>> -/// Like BasicBlock::removePredecessor, this method is called when we're
>> about
>> -/// to delete Pred as a predecessor of BB. If BB contains any PHI nodes,
>> this
>> -/// drops the entries in the PHI nodes for Pred.
>> -///
>> -/// Unlike the removePredecessor method, this attempts to simplify uses
>> of PHI
>> -/// nodes that collapse into identity values.  For example, if we have:
>> -///   x = phi(1, 0, 0, 0)
>> -///   y = and x, z
>> -///
>> -/// .. and delete the predecessor corresponding to the '1', this will
>> attempt to
>> -/// recursively fold the 'and' to 0.
>> -void RemovePredecessorAndSimplify(BasicBlock *BB, BasicBlock *Pred,
>> -                                  DeferredDominance *DDT = nullptr);
>> -
>> -/// BB is a block with one predecessor and its predecessor is known to
>> have one
>> -/// successor (BB!). Eliminate the edge between them, moving the
>> instructions in
>> -/// the predecessor into BB. This deletes the predecessor block.
>> -void MergeBasicBlockIntoOnlyPred(BasicBlock *BB, DominatorTree *DT =
>> nullptr,
>> -                                 DeferredDominance *DDT = nullptr);
>> -
>> -/// BB is known to contain an unconditional branch, and contains no
>> instructions
>> -/// other than PHI nodes, potential debug intrinsics and the branch. If
>> -/// possible, eliminate BB by rewriting all the predecessors to branch
>> to the
>> -/// successor block and return true. If we can't transform, return false.
>> -bool TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB,
>> -                                             DeferredDominance *DDT =
>> nullptr);
>> -
>> -/// Check for and eliminate duplicate PHI nodes in this block. This
>> doesn't try
>> -/// to be clever about PHI nodes which differ only in the order of the
>> incoming
>> -/// values, but instcombine orders them so it usually won't matter.
>> -bool EliminateDuplicatePHINodes(BasicBlock *BB);
>> -
>> -/// This function is used to do simplification of a CFG.  For example, it
>> -/// adjusts branches to branches to eliminate the extra hop, it
>> eliminates
>> -/// unreachable basic blocks, and does other peephole optimization of
>> the CFG.
>> -/// It returns true if a modification was made, possibly deleting the
>> basic
>> -/// block that was pointed to. LoopHeaders is an optional input parameter
>> -/// providing the set of loop headers that SimplifyCFG should not
>> eliminate.
>> -bool simplifyCFG(BasicBlock *BB, const TargetTransformInfo &TTI,
>> -                 const SimplifyCFGOptions &Options = {},
>> -                 SmallPtrSetImpl<BasicBlock *> *LoopHeaders = nullptr);
>> -
>> -/// This function is used to flatten a CFG. For example, it uses
>> parallel-and
>> -/// and parallel-or mode to collapse if-conditions and merge if-regions
>> with
>> -/// identical statements.
>> -bool FlattenCFG(BasicBlock *BB, AliasAnalysis *AA = nullptr);
>> -
>> -/// If this basic block is ONLY a setcc and a branch, and if a
>> predecessor
>> -/// branches to us and one of our successors, fold the setcc into the
>> -/// predecessor and use logical operations to pick the right destination.
>> -bool FoldBranchToCommonDest(BranchInst *BI, unsigned BonusInstThreshold
>> = 1);
>> -
>> -/// This function takes a virtual register computed by an Instruction and
>> -/// replaces it with a slot in the stack frame, allocated via alloca.
>> -/// This allows the CFG to be changed around without fear of
>> invalidating the
>> -/// SSA information for the value. It returns the pointer to the alloca
>> inserted
>> -/// to create a stack slot for X.
>> -AllocaInst *DemoteRegToStack(Instruction &X,
>> -                             bool VolatileLoads = false,
>> -                             Instruction *AllocaPoint = nullptr);
>> -
>> -/// This function takes a virtual register computed by a phi node and
>> replaces
>> -/// it with a slot in the stack frame, allocated via alloca. The phi
>> node is
>> -/// deleted and it returns the pointer to the alloca inserted.
>> -AllocaInst *DemotePHIToStack(PHINode *P, Instruction *AllocaPoint =
>> nullptr);
>> -
>> -/// Try to ensure that the alignment of \p V is at least \p PrefAlign
>> bytes. If
>> -/// the owning object can be modified and has an alignment less than \p
>> -/// PrefAlign, it will be increased and \p PrefAlign returned. If the
>> alignment
>> -/// cannot be increased, the known alignment of the value is returned.
>> -///
>> -/// It is not always possible to modify the alignment of the underlying
>> object,
>> -/// so if alignment is important, a more reliable approach is to simply
>> align
>> -/// all global variables and allocation instructions to their preferred
>> -/// alignment from the beginning.
>> -unsigned getOrEnforceKnownAlignment(Value *V, unsigned PrefAlign,
>> -                                    const DataLayout &DL,
>> -                                    const Instruction *CxtI = nullptr,
>> -                                    AssumptionCache *AC = nullptr,
>> -                                    const DominatorTree *DT = nullptr);
>> -
>> -/// Try to infer an alignment for the specified pointer.
>> -inline unsigned getKnownAlignment(Value *V, const DataLayout &DL,
>> -                                  const Instruction *CxtI = nullptr,
>> -                                  AssumptionCache *AC = nullptr,
>> -                                  const DominatorTree *DT = nullptr) {
>> -  return getOrEnforceKnownAlignment(V, 0, DL, CxtI, AC, DT);
>> -}
>> -
>> -/// Given a getelementptr instruction/constantexpr, emit the code
>> necessary to
>> -/// compute the offset from the base pointer (without adding in the base
>> -/// pointer). Return the result as a signed integer of intptr size.
>> -/// When NoAssumptions is true, no assumptions about index computation
>> not
>> -/// overflowing is made.
>> -template <typename IRBuilderTy>
>> -Value *EmitGEPOffset(IRBuilderTy *Builder, const DataLayout &DL, User
>> *GEP,
>> -                     bool NoAssumptions = false) {
>> -  GEPOperator *GEPOp = cast<GEPOperator>(GEP);
>> -  Type *IntPtrTy = DL.getIntPtrType(GEP->getType());
>> -  Value *Result = Constant::getNullValue(IntPtrTy);
>> -
>> -  // If the GEP is inbounds, we know that none of the addressing
>> operations will
>> -  // overflow in an unsigned sense.
>> -  bool isInBounds = GEPOp->isInBounds() && !NoAssumptions;
>> -
>> -  // Build a mask for high order bits.
>> -  unsigned IntPtrWidth = IntPtrTy->getScalarType()->getIntegerBitWidth();
>> -  uint64_t PtrSizeMask =
>> -      std::numeric_limits<uint64_t>::max() >> (64 - IntPtrWidth);
>> -
>> -  gep_type_iterator GTI = gep_type_begin(GEP);
>> -  for (User::op_iterator i = GEP->op_begin() + 1, e = GEP->op_end(); i
>> != e;
>> -       ++i, ++GTI) {
>> -    Value *Op = *i;
>> -    uint64_t Size = DL.getTypeAllocSize(GTI.getIndexedType()) &
>> PtrSizeMask;
>> -    if (Constant *OpC = dyn_cast<Constant>(Op)) {
>> -      if (OpC->isZeroValue())
>> -        continue;
>> -
>> -      // Handle a struct index, which adds its field offset to the
>> pointer.
>> -      if (StructType *STy = GTI.getStructTypeOrNull()) {
>> -        if (OpC->getType()->isVectorTy())
>> -          OpC = OpC->getSplatValue();
>> -
>> -        uint64_t OpValue = cast<ConstantInt>(OpC)->getZExtValue();
>> -        Size = DL.getStructLayout(STy)->getElementOffset(OpValue);
>> -
>> -        if (Size)
>> -          Result = Builder->CreateAdd(Result, ConstantInt::get(IntPtrTy,
>> Size),
>> -                                      GEP->getName()+".offs");
>> -        continue;
>> -      }
>> -
>> -      Constant *Scale = ConstantInt::get(IntPtrTy, Size);
>> -      Constant *OC = ConstantExpr::getIntegerCast(OpC, IntPtrTy, true
>> /*SExt*/);
>> -      Scale = ConstantExpr::getMul(OC, Scale, isInBounds/*NUW*/);
>> -      // Emit an add instruction.
>> -      Result = Builder->CreateAdd(Result, Scale, GEP->getName()+".offs");
>> -      continue;
>> -    }
>> -    // Convert to correct type.
>> -    if (Op->getType() != IntPtrTy)
>> -      Op = Builder->CreateIntCast(Op, IntPtrTy, true,
>> Op->getName()+".c");
>> -    if (Size != 1) {
>> -      // We'll let instcombine(mul) convert this to a shl if possible.
>> -      Op = Builder->CreateMul(Op, ConstantInt::get(IntPtrTy, Size),
>> -                              GEP->getName()+".idx", isInBounds /*NUW*/);
>> -    }
>> -
>> -    // Emit an add instruction.
>> -    Result = Builder->CreateAdd(Op, Result, GEP->getName()+".offs");
>> -  }
>> -  return Result;
>> -}
>> -
>>
>> -///===---------------------------------------------------------------------===//
>> -///  Dbg Intrinsic utilities
>> -///
>> -
>> -/// Inserts a llvm.dbg.value intrinsic before a store to an alloca'd
>> value
>> -/// that has an associated llvm.dbg.declare or llvm.dbg.addr intrinsic.
>> -void ConvertDebugDeclareToDebugValue(DbgInfoIntrinsic *DII,
>> -                                     StoreInst *SI, DIBuilder &Builder);
>> -
>> -/// Inserts a llvm.dbg.value intrinsic before a load of an alloca'd value
>> -/// that has an associated llvm.dbg.declare or llvm.dbg.addr intrinsic.
>> -void ConvertDebugDeclareToDebugValue(DbgInfoIntrinsic *DII,
>> -                                     LoadInst *LI, DIBuilder &Builder);
>> -
>> -/// Inserts a llvm.dbg.value intrinsic after a phi that has an associated
>> -/// llvm.dbg.declare or llvm.dbg.addr intrinsic.
>> -void ConvertDebugDeclareToDebugValue(DbgInfoIntrinsic *DII,
>> -                                     PHINode *LI, DIBuilder &Builder);
>> -
>> -/// Lowers llvm.dbg.declare intrinsics into appropriate set of
>> -/// llvm.dbg.value intrinsics.
>> -bool LowerDbgDeclare(Function &F);
>> -
>> -/// Propagate dbg.value intrinsics through the newly inserted PHIs.
>> -void insertDebugValuesForPHIs(BasicBlock *BB,
>> -                              SmallVectorImpl<PHINode *> &InsertedPHIs);
>> -
>> -/// Finds all intrinsics declaring local variables as living in the
>> memory that
>> -/// 'V' points to. This may include a mix of dbg.declare and
>> -/// dbg.addr intrinsics.
>> -TinyPtrVector<DbgInfoIntrinsic *> FindDbgAddrUses(Value *V);
>> -
>> -/// Finds the llvm.dbg.value intrinsics describing a value.
>> -void findDbgValues(SmallVectorImpl<DbgValueInst *> &DbgValues, Value *V);
>> -
>> -/// Finds the debug info intrinsics describing a value.
>> -void findDbgUsers(SmallVectorImpl<DbgInfoIntrinsic *> &DbgInsts, Value
>> *V);
>> -
>> -/// Replaces llvm.dbg.declare instruction when the address it
>> -/// describes is replaced with a new value. If Deref is true, an
>> -/// additional DW_OP_deref is prepended to the expression. If Offset
>> -/// is non-zero, a constant displacement is added to the expression
>> -/// (between the optional Deref operations). Offset can be negative.
>> -bool replaceDbgDeclare(Value *Address, Value *NewAddress,
>> -                       Instruction *InsertBefore, DIBuilder &Builder,
>> -                       bool DerefBefore, int Offset, bool DerefAfter);
>> -
>> -/// Replaces llvm.dbg.declare instruction when the alloca it describes
>> -/// is replaced with a new value. If Deref is true, an additional
>> -/// DW_OP_deref is prepended to the expression. If Offset is non-zero,
>> -/// a constant displacement is added to the expression (between the
>> -/// optional Deref operations). Offset can be negative. The new
>> -/// llvm.dbg.declare is inserted immediately before AI.
>> -bool replaceDbgDeclareForAlloca(AllocaInst *AI, Value *NewAllocaAddress,
>> -                                DIBuilder &Builder, bool DerefBefore,
>> -                                int Offset, bool DerefAfter);
>> -
>> -/// Replaces multiple llvm.dbg.value instructions when the alloca it
>> describes
>> -/// is replaced with a new value. If Offset is non-zero, a constant
>> displacement
>> -/// is added to the expression (after the mandatory Deref). Offset can be
>> -/// negative. New llvm.dbg.value instructions are inserted at the
>> locations of
>> -/// the instructions they replace.
>> -void replaceDbgValueForAlloca(AllocaInst *AI, Value *NewAllocaAddress,
>> -                              DIBuilder &Builder, int Offset = 0);
>> -
>> -/// Assuming the instruction \p I is going to be deleted, attempt to
>> salvage any
>> -/// dbg.value intrinsics referring to \p I by rewriting its effect into a
>> -/// DIExpression.
>> -void salvageDebugInfo(Instruction &I);
>> -
>> -/// Remove all instructions from a basic block other than it's terminator
>> -/// and any present EH pad instructions.
>> -unsigned removeAllNonTerminatorAndEHPadInstructions(BasicBlock *BB);
>> -
>> -/// Insert an unreachable instruction before the specified
>> -/// instruction, making it and the rest of the code in the block dead.
>> -unsigned changeToUnreachable(Instruction *I, bool UseLLVMTrap,
>> -                             bool PreserveLCSSA = false,
>> -                             DeferredDominance *DDT = nullptr);
>> -
>> -/// Convert the CallInst to InvokeInst with the specified unwind edge
>> basic
>> -/// block.  This also splits the basic block where CI is located, because
>> -/// InvokeInst is a terminator instruction.  Returns the newly split
>> basic
>> -/// block.
>> -BasicBlock *changeToInvokeAndSplitBasicBlock(CallInst *CI,
>> -                                             BasicBlock *UnwindEdge);
>> -
>> -/// Replace 'BB's terminator with one that does not have an unwind
>> successor
>> -/// block. Rewrites `invoke` to `call`, etc. Updates any PHIs in unwind
>> -/// successor.
>> -///
>> -/// \param BB  Block whose terminator will be replaced.  Its terminator
>> must
>> -///            have an unwind successor.
>> -void removeUnwindEdge(BasicBlock *BB, DeferredDominance *DDT = nullptr);
>> -
>> -/// Remove all blocks that can not be reached from the function's entry.
>> -///
>> -/// Returns true if any basic block was removed.
>> -bool removeUnreachableBlocks(Function &F, LazyValueInfo *LVI = nullptr,
>> -                             DeferredDominance *DDT = nullptr);
>> -
>> -/// Combine the metadata of two instructions so that K can replace J
>> -///
>> -/// Metadata not listed as known via KnownIDs is removed
>> -void combineMetadata(Instruction *K, const Instruction *J,
>> ArrayRef<unsigned> KnownIDs);
>> -
>> -/// Combine the metadata of two instructions so that K can replace J.
>> This
>> -/// specifically handles the case of CSE-like transformations.
>> -///
>> -/// Unknown metadata is removed.
>> -void combineMetadataForCSE(Instruction *K, const Instruction *J);
>> -
>> -// Replace each use of 'From' with 'To', if that use does not belong to
>> basic
>> -// block where 'From' is defined. Returns the number of replacements
>> made.
>> -unsigned replaceNonLocalUsesWith(Instruction *From, Value *To);
>> -
>> -/// Replace each use of 'From' with 'To' if that use is dominated by
>> -/// the given edge.  Returns the number of replacements made.
>> -unsigned replaceDominatedUsesWith(Value *From, Value *To, DominatorTree
>> &DT,
>> -                                  const BasicBlockEdge &Edge);
>> -/// Replace each use of 'From' with 'To' if that use is dominated by
>> -/// the end of the given BasicBlock. Returns the number of replacements
>> made.
>> -unsigned replaceDominatedUsesWith(Value *From, Value *To, DominatorTree
>> &DT,
>> -                                  const BasicBlock *BB);
>> -
>> -/// Return true if the CallSite CS calls a gc leaf function.
>> -///
>> -/// A leaf function is a function that does not safepoint the thread
>> during its
>> -/// execution.  During a call or invoke to such a function, the callers
>> stack
>> -/// does not have to be made parseable.
>> -///
>> -/// Most passes can and should ignore this information, and it is only
>> used
>> -/// during lowering by the GC infrastructure.
>> -bool callsGCLeafFunction(ImmutableCallSite CS, const TargetLibraryInfo
>> &TLI);
>> -
>> -/// Copy a nonnull metadata node to a new load instruction.
>> -///
>> -/// This handles mapping it to range metadata if the new load is an
>> integer
>> -/// load instead of a pointer load.
>> -void copyNonnullMetadata(const LoadInst &OldLI, MDNode *N, LoadInst
>> &NewLI);
>> -
>> -/// Copy a range metadata node to a new load instruction.
>> -///
>> -/// This handles mapping it to nonnull metadata if the new load is a
>> pointer
>> -/// load instead of an integer load and the range doesn't cover null.
>> -void copyRangeMetadata(const DataLayout &DL, const LoadInst &OldLI,
>> MDNode *N,
>> -                       LoadInst &NewLI);
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Intrinsic pattern matching
>> -//
>> -
>> -/// Try to match a bswap or bitreverse idiom.
>> -///
>> -/// If an idiom is matched, an intrinsic call is inserted before \c I.
>> Any added
>> -/// instructions are returned in \c InsertedInsts. They will all have
>> been added
>> -/// to a basic block.
>> -///
>> -/// A bitreverse idiom normally requires around 2*BW nodes to be
>> searched (where
>> -/// BW is the bitwidth of the integer type). A bswap idiom requires
>> anywhere up
>> -/// to BW / 4 nodes to be searched, so is significantly faster.
>> -///
>> -/// This function returns true on a successful match or false otherwise.
>> -bool recognizeBSwapOrBitReverseIdiom(
>> -    Instruction *I, bool MatchBSwaps, bool MatchBitReversals,
>> -    SmallVectorImpl<Instruction *> &InsertedInsts);
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Sanitizer utilities
>> -//
>> -
>> -/// Given a CallInst, check if it calls a string function known to
>> CodeGen,
>> -/// and mark it with NoBuiltin if so.  To be used by sanitizers that
>> intend
>> -/// to intercept string functions and want to avoid converting them to
>> target
>> -/// specific instructions.
>> -void maybeMarkSanitizerLibraryCallNoBuiltin(CallInst *CI,
>> -                                            const TargetLibraryInfo
>> *TLI);
>> -
>>
>> -//===----------------------------------------------------------------------===//
>> -//  Transform predicates
>> -//
>> -
>> -/// Given an instruction, is it legal to set operand OpIdx to a
>> non-constant
>> -/// value?
>> -bool canReplaceOperandWithVariable(const Instruction *I, unsigned OpIdx);
>> -
>> -} // end namespace llvm
>> -
>> -#endif // LLVM_TRANSFORMS_UTILS_LOCAL_H
>>
>> Modified: llvm/trunk/lib/Analysis/MemoryBuiltins.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryBuiltins.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Analysis/MemoryBuiltins.cpp (original)
>> +++ llvm/trunk/lib/Analysis/MemoryBuiltins.cpp Wed Mar 21 15:34:23 2018
>> @@ -21,6 +21,7 @@
>>  #include "llvm/ADT/StringRef.h"
>>  #include "llvm/Analysis/TargetFolder.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/Argument.h"
>>  #include "llvm/IR/Attributes.h"
>> @@ -40,7 +41,6 @@
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/MathExtras.h"
>>  #include "llvm/Support/raw_ostream.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #include <cstdint>
>>  #include <iterator>
>>
>> Modified: llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp Wed Mar 21 15:34:23 2018
>> @@ -30,6 +30,7 @@
>>  #include "llvm/Analysis/ProfileSummaryInfo.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/CodeGen/Analysis.h"
>>  #include "llvm/CodeGen/ISDOpcodes.h"
>> @@ -85,7 +86,6 @@
>>  #include "llvm/Target/TargetOptions.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/BypassSlowDivision.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/SimplifyLibCalls.h"
>>  #include <algorithm>
>>  #include <cassert>
>>
>> Modified: llvm/trunk/lib/CodeGen/DwarfEHPrepare.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DwarfEHPrepare.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/DwarfEHPrepare.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/DwarfEHPrepare.cpp Wed Mar 21 15:34:23 2018
>> @@ -18,6 +18,7 @@
>>  #include "llvm/Analysis/CFG.h"
>>  #include "llvm/Analysis/EHPersonalities.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/CodeGen/RuntimeLibcalls.h"
>>  #include "llvm/CodeGen/TargetLowering.h"
>>  #include "llvm/CodeGen/TargetPassConfig.h"
>> @@ -33,7 +34,6 @@
>>  #include "llvm/Pass.h"
>>  #include "llvm/Support/Casting.h"
>>  #include "llvm/Target/TargetMachine.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cstddef>
>>
>>  using namespace llvm;
>>
>> Modified: llvm/trunk/lib/CodeGen/SafeStack.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SafeStack.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SafeStack.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SafeStack.cpp Wed Mar 21 15:34:23 2018
>> @@ -29,6 +29,7 @@
>>  #include "llvm/Analysis/ScalarEvolution.h"
>>  #include "llvm/Analysis/ScalarEvolutionExpressions.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/CodeGen/TargetLowering.h"
>>  #include "llvm/CodeGen/TargetPassConfig.h"
>>  #include "llvm/CodeGen/TargetSubtargetInfo.h"
>> @@ -63,7 +64,6 @@
>>  #include "llvm/Target/TargetMachine.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/Cloning.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  #include <cassert>
>>  #include <cstdint>
>>
>> Modified: llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp Wed Mar 21 15:34:23 2018
>> @@ -16,6 +16,7 @@
>>  #include "llvm/ADT/SmallPtrSet.h"
>>  #include "llvm/ADT/SmallVector.h"
>>  #include "llvm/ADT/Statistic.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/CodeGen/Passes.h"
>>  #include "llvm/IR/Constants.h"
>>  #include "llvm/IR/DataLayout.h"
>> @@ -27,7 +28,6 @@
>>  #include "llvm/Pass.h"
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/raw_ostream.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>
>>  #define DEBUG_TYPE "sjljehprepare"
>>
>> Modified: llvm/trunk/lib/CodeGen/WinEHPrepare.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/WinEHPrepare.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/WinEHPrepare.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/WinEHPrepare.cpp Wed Mar 21 15:34:23 2018
>> @@ -21,6 +21,7 @@
>>  #include "llvm/ADT/STLExtras.h"
>>  #include "llvm/Analysis/CFG.h"
>>  #include "llvm/Analysis/EHPersonalities.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/CodeGen/MachineBasicBlock.h"
>>  #include "llvm/CodeGen/Passes.h"
>>  #include "llvm/CodeGen/WinEHFuncInfo.h"
>> @@ -31,7 +32,6 @@
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/Cloning.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/SSAUpdater.h"
>>
>>  using namespace llvm;
>>
>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
>> (original)
>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -28,6 +28,7 @@
>>  #include "llvm/Analysis/DivergenceAnalysis.h"
>>  #include "llvm/Analysis/PostDominators.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CFG.h"
>>  #include "llvm/IR/Constants.h"
>> @@ -39,7 +40,6 @@
>>  #include "llvm/Pass.h"
>>  #include "llvm/Support/Casting.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>
>>  using namespace llvm;
>>
>>
>> Modified: llvm/trunk/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp (original)
>> +++ llvm/trunk/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -18,6 +18,7 @@
>>  #include "llvm/ADT/SmallVector.h"
>>  #include "llvm/Analysis/DivergenceAnalysis.h"
>>  #include "llvm/Analysis/LoopInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CFG.h"
>>  #include "llvm/IR/Constant.h"
>> @@ -37,7 +38,6 @@
>>  #include "llvm/Support/ErrorHandling.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #include <utility>
>>
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonCommonGEP.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonCommonGEP.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonCommonGEP.cpp (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonCommonGEP.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -16,6 +16,7 @@
>>  #include "llvm/ADT/StringRef.h"
>>  #include "llvm/Analysis/LoopInfo.h"
>>  #include "llvm/Analysis/PostDominators.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/Constant.h"
>>  #include "llvm/IR/Constants.h"
>> @@ -36,7 +37,6 @@
>>  #include "llvm/Support/Compiler.h"
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/raw_ostream.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  #include <cassert>
>>  #include <cstddef>
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
>> (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp Wed Mar
>> 21 15:34:23 2018
>> @@ -26,6 +26,7 @@
>>  #include "llvm/Analysis/ScalarEvolutionExpander.h"
>>  #include "llvm/Analysis/ScalarEvolutionExpressions.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -56,7 +57,6 @@
>>  #include "llvm/Support/KnownBits.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  #include <array>
>>  #include <cassert>
>>
>> Modified: llvm/trunk/lib/Target/PowerPC/PPCCTRLoops.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCCTRLoops.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/PowerPC/PPCCTRLoops.cpp (original)
>> +++ llvm/trunk/lib/Target/PowerPC/PPCCTRLoops.cpp Wed Mar 21 15:34:23 2018
>> @@ -35,6 +35,7 @@
>>  #include "llvm/Analysis/ScalarEvolutionExpander.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/CodeGen/TargetPassConfig.h"
>>  #include "llvm/CodeGen/TargetSchedule.h"
>>  #include "llvm/IR/Constants.h"
>> @@ -51,7 +52,6 @@
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Scalar.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/LoopUtils.h"
>>
>>  #ifndef NDEBUG
>>
>> Modified: llvm/trunk/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp (original)
>> +++ llvm/trunk/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -33,6 +33,7 @@
>>  #include "llvm/Analysis/ScalarEvolution.h"
>>  #include "llvm/Analysis/ScalarEvolutionExpander.h"
>>  #include "llvm/Analysis/ScalarEvolutionExpressions.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CFG.h"
>>  #include "llvm/IR/Dominators.h"
>> @@ -48,7 +49,6 @@
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Transforms/Scalar.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/LoopUtils.h"
>>  #include <cassert>
>>  #include <iterator>
>>
>> Modified: llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -19,6 +19,7 @@
>>
>>  #include "CoroInternal.h"
>>  #include "llvm/ADT/BitVector.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/CFG.h"
>>  #include "llvm/IR/Dominators.h"
>>  #include "llvm/IR/IRBuilder.h"
>> @@ -27,7 +28,6 @@
>>  #include "llvm/Support/MathExtras.h"
>>  #include "llvm/Support/circular_raw_ostream.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>
>>  using namespace llvm;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Coroutines/CoroSplit.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -28,6 +28,7 @@
>>  #include "llvm/ADT/Twine.h"
>>  #include "llvm/Analysis/CallGraph.h"
>>  #include "llvm/Analysis/CallGraphSCCPass.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Argument.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -59,7 +60,6 @@
>>  #include "llvm/Transforms/Scalar.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/Cloning.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ValueMapper.h"
>>  #include <cassert>
>>  #include <cstddef>
>>
>> Modified: llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Coroutines/Coroutines.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -11,12 +11,14 @@
>>  //
>>
>>  //===----------------------------------------------------------------------===//
>>
>> +#include "llvm/Transforms/Coroutines.h"
>>  #include "CoroInstr.h"
>>  #include "CoroInternal.h"
>>  #include "llvm/ADT/SmallVector.h"
>>  #include "llvm/ADT/StringRef.h"
>>  #include "llvm/Analysis/CallGraph.h"
>>  #include "llvm/Analysis/CallGraphSCCPass.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/CallSite.h"
>>  #include "llvm/IR/Constants.h"
>> @@ -31,10 +33,8 @@
>>  #include "llvm/IR/Type.h"
>>  #include "llvm/Support/Casting.h"
>>  #include "llvm/Support/ErrorHandling.h"
>> -#include "llvm/Transforms/Coroutines.h"
>>  #include "llvm/Transforms/IPO.h"
>>  #include "llvm/Transforms/IPO/PassManagerBuilder.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #include <cstddef>
>>  #include <utility>
>>
>> Modified: llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp (original)
>> +++ llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp Wed Mar 21 15:34:23 2018
>> @@ -27,6 +27,7 @@
>>  #include "llvm/Analysis/MemoryBuiltins.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/BinaryFormat/Dwarf.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -66,7 +67,6 @@
>>  #include "llvm/Transforms/Utils/CtorUtils.h"
>>  #include "llvm/Transforms/Utils/Evaluator.h"
>>  #include "llvm/Transforms/Utils/GlobalStatus.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #include <cstdint>
>>  #include <utility>
>>
>> Modified: llvm/trunk/lib/Transforms/IPO/Inliner.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Inliner.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/IPO/Inliner.cpp (original)
>> +++ llvm/trunk/lib/Transforms/IPO/Inliner.cpp Wed Mar 21 15:34:23 2018
>> @@ -35,6 +35,7 @@
>>  #include "llvm/Analysis/ProfileSummaryInfo.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CallSite.h"
>> @@ -59,7 +60,6 @@
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Utils/Cloning.h"
>>  #include "llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ModuleUtils.h"
>>  #include <algorithm>
>>  #include <cassert>
>>
>> Modified: llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PruneEH.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/IPO/PruneEH.cpp (original)
>> +++ llvm/trunk/lib/Transforms/IPO/PruneEH.cpp Wed Mar 21 15:34:23 2018
>> @@ -19,6 +19,7 @@
>>  #include "llvm/Analysis/CallGraph.h"
>>  #include "llvm/Analysis/CallGraphSCCPass.h"
>>  #include "llvm/Analysis/EHPersonalities.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/CFG.h"
>>  #include "llvm/IR/Constants.h"
>>  #include "llvm/IR/Function.h"
>> @@ -27,7 +28,6 @@
>>  #include "llvm/IR/LLVMContext.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/IPO.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  using namespace llvm;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp (original)
>> +++ llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Wed Mar 21 15:34:23
>> 2018
>> @@ -21,6 +21,7 @@
>>
>>  //===----------------------------------------------------------------------===//
>>
>>  #include "llvm/ADT/SmallPtrSet.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Constants.h"
>>  #include "llvm/IR/DebugInfo.h"
>>  #include "llvm/IR/DerivedTypes.h"
>> @@ -30,7 +31,6 @@
>>  #include "llvm/IR/ValueSymbolTable.h"
>>  #include "llvm/Pass.h"
>>  #include "llvm/Transforms/IPO.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>
>>  namespace {
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp Wed Mar
>> 21 15:34:23 2018
>> @@ -14,10 +14,10 @@
>>  #include "InstCombineInternal.h"
>>  #include "llvm/Analysis/CmpInstAnalysis.h"
>>  #include "llvm/Analysis/InstructionSimplify.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/ConstantRange.h"
>>  #include "llvm/IR/Intrinsics.h"
>>  #include "llvm/IR/PatternMatch.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>  using namespace PatternMatch;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -24,6 +24,7 @@
>>  #include "llvm/Analysis/AssumptionCache.h"
>>  #include "llvm/Analysis/InstructionSimplify.h"
>>  #include "llvm/Analysis/MemoryBuiltins.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -57,7 +58,6 @@
>>  #include "llvm/Support/MathExtras.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/InstCombine/InstCombineWorklist.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/SimplifyLibCalls.h"
>>  #include <algorithm>
>>  #include <cassert>
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.h?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.h (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineInternal.h Wed Mar
>> 21 15:34:23 2018
>> @@ -20,6 +20,7 @@
>>  #include "llvm/Analysis/AliasAnalysis.h"
>>  #include "llvm/Analysis/InstructionSimplify.h"
>>  #include "llvm/Analysis/TargetFolder.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/Argument.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -40,7 +41,6 @@
>>  #include "llvm/Support/KnownBits.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/InstCombine/InstCombineWorklist.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #include <cstdint>
>>
>>
>> Modified:
>> llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
>> Wed Mar 21 15:34:23 2018
>> @@ -16,6 +16,7 @@
>>  #include "llvm/ADT/SmallString.h"
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/Analysis/Loads.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/ConstantRange.h"
>>  #include "llvm/IR/DataLayout.h"
>>  #include "llvm/IR/IntrinsicInst.h"
>> @@ -23,7 +24,6 @@
>>  #include "llvm/IR/MDBuilder.h"
>>  #include "llvm/IR/PatternMatch.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>  using namespace PatternMatch;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombinePHI.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombinePHI.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombinePHI.cpp (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombinePHI.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -15,9 +15,9 @@
>>  #include "llvm/ADT/STLExtras.h"
>>  #include "llvm/ADT/SmallPtrSet.h"
>>  #include "llvm/Analysis/InstructionSimplify.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/PatternMatch.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>  using namespace llvm::PatternMatch;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -56,6 +56,7 @@
>>  #include "llvm/Analysis/OptimizationRemarkEmitter.h"
>>  #include "llvm/Analysis/TargetFolder.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CFG.h"
>> @@ -95,7 +96,6 @@
>>  #include "llvm/Transforms/InstCombine/InstCombine.h"
>>  #include "llvm/Transforms/InstCombine/InstCombineWorklist.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  #include <cassert>
>>  #include <cstdint>
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -25,6 +25,7 @@
>>  #include "llvm/ADT/Twine.h"
>>  #include "llvm/Analysis/MemoryBuiltins.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/BinaryFormat/MachO.h"
>>  #include "llvm/IR/Argument.h"
>> @@ -71,7 +72,6 @@
>>  #include "llvm/Transforms/Instrumentation.h"
>>  #include "llvm/Transforms/Utils/ASanStackFrameLayout.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ModuleUtils.h"
>>  #include "llvm/Transforms/Utils/PromoteMemToReg.h"
>>  #include <algorithm>
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -56,6 +56,7 @@
>>  #include "llvm/ADT/StringExtras.h"
>>  #include "llvm/ADT/StringRef.h"
>>  #include "llvm/ADT/Triple.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/Argument.h"
>>  #include "llvm/IR/Attributes.h"
>> @@ -90,7 +91,6 @@
>>  #include "llvm/Support/SpecialCaseList.h"
>>  #include "llvm/Transforms/Instrumentation.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <algorithm>
>>  #include <cassert>
>>  #include <cstddef>
>>
>> Modified:
>> llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -23,6 +23,7 @@
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/ADT/StringExtras.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Function.h"
>>  #include "llvm/IR/IRBuilder.h"
>>  #include "llvm/IR/IntrinsicInst.h"
>> @@ -33,7 +34,6 @@
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Instrumentation.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ModuleUtils.h"
>>
>>  using namespace llvm;
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp Wed Mar
>> 21 15:34:23 2018
>> @@ -101,6 +101,7 @@
>>  #include "llvm/ADT/StringRef.h"
>>  #include "llvm/ADT/Triple.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Argument.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>> @@ -138,7 +139,6 @@
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Instrumentation.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ModuleUtils.h"
>>  #include <algorithm>
>>  #include <cassert>
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/ThreadSanitizer.cpp Wed Mar
>> 21 15:34:23 2018
>> @@ -26,6 +26,7 @@
>>  #include "llvm/ADT/StringExtras.h"
>>  #include "llvm/Analysis/CaptureTracking.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/DataLayout.h"
>>  #include "llvm/IR/Function.h"
>> @@ -44,7 +45,6 @@
>>  #include "llvm/Transforms/Instrumentation.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/EscapeEnumerator.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include "llvm/Transforms/Utils/ModuleUtils.h"
>>
>>  using namespace llvm;
>>
>> Modified: llvm/trunk/lib/Transforms/ObjCARC/ObjCARC.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ObjCARC/ObjCARC.h?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/ObjCARC/ObjCARC.h (original)
>> +++ llvm/trunk/lib/Transforms/ObjCARC/ObjCARC.h Wed Mar 21 15:34:23 2018
>> @@ -28,13 +28,13 @@
>>  #include "llvm/Analysis/ObjCARCAnalysisUtils.h"
>>  #include "llvm/Analysis/ObjCARCInstKind.h"
>>  #include "llvm/Analysis/Passes.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/Analysis/ValueTracking.h"
>>  #include "llvm/IR/CallSite.h"
>>  #include "llvm/IR/InstIterator.h"
>>  #include "llvm/IR/Module.h"
>>  #include "llvm/Pass.h"
>>  #include "llvm/Transforms/ObjCARC.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>
>>  namespace llvm {
>>  class raw_ostream;
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/BDCE.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/BDCE.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/BDCE.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/BDCE.cpp Wed Mar 21 15:34:23 2018
>> @@ -20,13 +20,13 @@
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/Analysis/DemandedBits.h"
>>  #include "llvm/Analysis/GlobalsModRef.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/InstIterator.h"
>>  #include "llvm/IR/Instructions.h"
>>  #include "llvm/Pass.h"
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  using namespace llvm;
>>
>>  #define DEBUG_TYPE "bdce"
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/CallSiteSplitting.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CallSiteSplitting.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/CallSiteSplitting.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/CallSiteSplitting.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -60,13 +60,13 @@
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/IntrinsicInst.h"
>>  #include "llvm/IR/PatternMatch.h"
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Transforms/Scalar.h"
>>  #include "llvm/Transforms/Utils/BasicBlockUtils.h"
>>  #include "llvm/Transforms/Utils/Cloning.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>
>>  using namespace llvm;
>>  using namespace PatternMatch;
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp Wed Mar 21
>> 15:34:23 2018
>> @@ -43,8 +43,10 @@
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/Analysis/BlockFrequencyInfo.h"
>>  #include "llvm/Analysis/TargetTransformInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/Constants.h"
>> +#include "llvm/IR/DebugInfoMetadata.h"
>>  #include "llvm/IR/Dominators.h"
>>  #include "llvm/IR/Function.h"
>>  #include "llvm/IR/InstrTypes.h"
>> @@ -59,8 +61,6 @@
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>> -#include "llvm/IR/DebugInfoMetadata.h"
>>  #include <algorithm>
>>  #include <cassert>
>>  #include <cstdint>
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/ConstantProp.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ConstantProp.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/ConstantProp.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/ConstantProp.cpp Wed Mar 21 15:34:23
>> 2018
>> @@ -21,12 +21,12 @@
>>  #include "llvm/ADT/Statistic.h"
>>  #include "llvm/Analysis/ConstantFolding.h"
>>  #include "llvm/Analysis/TargetLibraryInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Constant.h"
>>  #include "llvm/IR/InstIterator.h"
>>  #include "llvm/IR/Instruction.h"
>>  #include "llvm/Pass.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <set>
>>  using namespace llvm;
>>
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp?rev=328165&r1=328164&r2=328165&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp Wed
>> Mar 21 15:34:23 2018
>> @@ -19,6 +19,7 @@
>>  #include "llvm/Analysis/GlobalsModRef.h"
>>  #include "llvm/Analysis/InstructionSimplify.h"
>>  #include "llvm/Analysis/LazyValueInfo.h"
>> +#include "llvm/Analysis/Utils/Local.h"
>>  #include "llvm/IR/Attributes.h"
>>  #include "llvm/IR/BasicBlock.h"
>>  #include "llvm/IR/CFG.h"
>> @@ -28,11 +29,11 @@
>>  #include "llvm/IR/Constants.h"
>>  #include "llvm/IR/DerivedTypes.h"
>>  #include "llvm/IR/Function.h"
>> +#include "llvm/IR/IRBuilder.h"
>>  #include "llvm/IR/InstrTypes.h"
>>  #include "llvm/IR/Instruction.h"
>>  #include "llvm/IR/Instructions.h"
>>  #include "llvm/IR/IntrinsicInst.h"
>> -#include "llvm/IR/IRBuilder.h"
>>  #include "llvm/IR/Operator.h"
>>  #include "llvm/IR/PassManager.h"
>>  #include "llvm/IR/Type.h"
>> @@ -43,7 +44,6 @@
>>  #include "llvm/Support/Debug.h"
>>  #include "llvm/Support/raw_ostream.h"
>>  #include "llvm/Transforms/Scalar.h"
>> -#include "llvm/Transforms/Utils/Local.h"
>>  #include <cassert>
>>  #i
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180604/5d50765c/attachment.html>


More information about the llvm-commits mailing list