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

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 4 11:15:53 PDT 2018


On Mon, Jun 4, 2018 at 8:11 PM David Blaikie via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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?
>

There is a bigger problem. The *definition* is still in Transforms/Utils,
so this really just papers over the layering issue, without solving it. =[[[

I don't have strong opinions about whether the usage should be sunk or the
bits used should be hoisted. But i feel pretty confiden tthat *all* of it
shouldn't be hoisted.


>
>
>>
>>
>>> 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
>>
>> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180604/a67e9e7f/attachment-0001.html>


More information about the llvm-commits mailing list