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

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Fri May 25 23:11:16 PDT 2018


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?


> 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/20180525/20b759b1/attachment-0001.html>


More information about the llvm-commits mailing list