<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 10, 2015 at 7:50 AM, Benjamin Kramer <span dir="ltr"><<a href="mailto:benny.kra@googlemail.com" target="_blank">benny.kra@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: d0k<br>
Date: Fri Apr 10 09:50:08 2015<br>
New Revision: 234601<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=234601&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=234601&view=rev</a><br>
Log:<br>
[CallSite] Make construction from Value* (or Instruction*) explicit.<br>
<br>
CallSite roughly behaves as a common base CallInst and InvokeInst. Bring<br>
the behavior closer to that model by making upcasts explicit. Downcasts<br>
remain implicit and work as before.<br>
<br>
Following dyn_cast as a mental model checking whether a Value *V isa<br>
CallSite now looks like this:<br>
if (auto CS = CallSite(V)) // think dyn_cast<br>
instead of:<br>
if (CallSite CS = V)<br>
<br>
This is an extra token but I think it is slightly clearer. Making the<br>
ctor explicit has the advantage of not accidentally creating nullptr<br>
CallSites, e.g. when you pass a Value * to a function taking a CallSite<br>
argument.<br></blockquote><div><br>I take it you came across instances of this problem? They are outright bugs where the author intended to pass some other variable?<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Modified:<br>
llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h<br>
llvm/trunk/include/llvm/IR/CallSite.h<br>
llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp<br>
llvm/trunk/lib/Analysis/AliasSetTracker.cpp<br>
llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp<br>
llvm/trunk/lib/Analysis/MemDepPrinter.cpp<br>
llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp<br>
llvm/trunk/lib/Analysis/ValueTracking.cpp<br>
llvm/trunk/lib/IR/Value.cpp<br>
llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp<br>
llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp<br>
llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp<br>
llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp<br>
llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp<br>
llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp<br>
llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h (original)<br>
+++ llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h Fri Apr 10 09:50:08 2015<br>
@@ -410,7 +410,7 @@ public:<br>
->getGEPCost(GEP->getPointerOperand(), Indices);<br>
}<br>
<br>
- if (ImmutableCallSite CS = U) {<br>
+ if (auto CS = ImmutableCallSite(U)) {<br>
const Function *F = CS.getCalledFunction();<br>
if (!F) {<br>
// Just use the called value type.<br>
<br>
Modified: llvm/trunk/include/llvm/IR/CallSite.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/CallSite.h?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/CallSite.h?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/CallSite.h (original)<br>
+++ llvm/trunk/include/llvm/IR/CallSite.h Fri Apr 10 09:50:08 2015<br>
@@ -46,12 +46,13 @@ template <typename FunTy = const Functio<br>
class CallSiteBase {<br>
protected:<br>
PointerIntPair<InstrTy*, 1, bool> I;<br>
-public:<br>
+<br>
CallSiteBase() : I(nullptr, false) {}<br>
CallSiteBase(CallTy *CI) : I(CI, true) { assert(CI); }<br>
CallSiteBase(InvokeTy *II) : I(II, false) { assert(II); }<br>
- CallSiteBase(ValTy *II) { *this = get(II); }<br>
-protected:<br>
+ explicit CallSiteBase(ValTy *II) { *this = get(II); }<br>
+<br>
+private:<br>
/// CallSiteBase::get - This static method is sort of like a constructor. It<br>
/// will create an appropriate call site for a Call or Invoke instruction, but<br>
/// it can also create a null initialized CallSiteBase object for something<br>
@@ -349,15 +350,15 @@ private:<br>
<br>
class CallSite : public CallSiteBase<Function, Value, User, Instruction,<br>
CallInst, InvokeInst, User::op_iterator> {<br>
- typedef CallSiteBase<Function, Value, User, Instruction,<br>
- CallInst, InvokeInst, User::op_iterator> Base;<br>
+ typedef CallSite::CallSiteBase Base;<br>
+<br>
public:<br>
CallSite() {}<br>
CallSite(Base B) : Base(B) {}<br>
- CallSite(Value* V) : Base(V) {}<br>
CallSite(CallInst *CI) : Base(CI) {}<br>
CallSite(InvokeInst *II) : Base(II) {}<br>
- CallSite(Instruction *II) : Base(II) {}<br>
+ explicit CallSite(Instruction *II) : Base(II) {}<br>
+ explicit CallSite(Value *V) : Base(V) {}<br>
<br>
bool operator==(const CallSite &CS) const { return I == CS.I; }<br>
bool operator!=(const CallSite &CS) const { return I != CS.I; }<br>
@@ -371,13 +372,14 @@ private:<br>
<br>
/// ImmutableCallSite - establish a view to a call site for examination<br>
class ImmutableCallSite : public CallSiteBase<> {<br>
- typedef CallSiteBase<> Base;<br>
+ typedef ImmutableCallSite::CallSiteBase Base;<br>
+<br>
public:<br>
ImmutableCallSite() {}<br>
- ImmutableCallSite(const Value* V) : Base(V) {}<br>
ImmutableCallSite(const CallInst *CI) : Base(CI) {}<br>
ImmutableCallSite(const InvokeInst *II) : Base(II) {}<br>
- ImmutableCallSite(const Instruction *II) : Base(II) {}<br>
+ explicit ImmutableCallSite(const Instruction *II) : Base(II) {}<br>
+ explicit ImmutableCallSite(const Value *V) : Base(V) {}<br>
ImmutableCallSite(CallSite CS) : Base(CS.getInstruction()) {}<br>
};<br>
<br>
<br>
Modified: llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/AliasAnalysisEvaluator.cpp Fri Apr 10 09:50:08 2015<br>
@@ -158,7 +158,7 @@ bool AAEval::runOnFunction(Function &F)<br>
if (EvalAAMD && isa<StoreInst>(&*I))<br>
Stores.insert(&*I);<br>
Instruction &Inst = *I;<br>
- if (CallSite CS = cast<Value>(&Inst)) {<br>
+ if (auto CS = CallSite(&Inst)) {<br>
Value *Callee = CS.getCalledValue();<br>
// Skip actual functions for direct function calls.<br>
if (!isa<Function>(Callee) && isInterestingPointer(Callee))<br>
<br>
Modified: llvm/trunk/lib/Analysis/AliasSetTracker.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AliasSetTracker.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AliasSetTracker.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/AliasSetTracker.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/AliasSetTracker.cpp Fri Apr 10 09:50:08 2015<br>
@@ -187,7 +187,7 @@ bool AliasSet::aliasesUnknownInst(Instru<br>
return false;<br>
<br>
for (unsigned i = 0, e = UnknownInsts.size(); i != e; ++i) {<br>
- CallSite C1 = getUnknownInst(i), C2 = Inst;<br>
+ CallSite C1(getUnknownInst(i)), C2(Inst);<br>
if (!C1 || !C2 ||<br>
AA.getModRefInfo(C1, C2) != AliasAnalysis::NoModRef ||<br>
AA.getModRefInfo(C2, C1) != AliasAnalysis::NoModRef)<br>
<br>
Modified: llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/IPA/GlobalsModRef.cpp Fri Apr 10 09:50:08 2015<br>
@@ -269,7 +269,7 @@ bool GlobalsModRef::AnalyzeUsesOfPointer<br>
} else if (Operator::getOpcode(I) == Instruction::BitCast) {<br>
if (AnalyzeUsesOfPointer(I, Readers, Writers, OkayStoreDest))<br>
return true;<br>
- } else if (CallSite CS = I) {<br>
+ } else if (auto CS = CallSite(I)) {<br>
// Make sure that this is just the function being called, not that it is<br>
// passing into the function.<br>
if (!CS.isCallee(&U)) {<br>
<br>
Modified: llvm/trunk/lib/Analysis/MemDepPrinter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemDepPrinter.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemDepPrinter.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/MemDepPrinter.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/MemDepPrinter.cpp Fri Apr 10 09:50:08 2015<br>
@@ -106,7 +106,7 @@ bool MemDepPrinter::runOnFunction(Functi<br>
if (!Res.isNonLocal()) {<br>
Deps[Inst].insert(std::make_pair(getInstTypePair(Res),<br>
static_cast<BasicBlock *>(nullptr)));<br>
- } else if (CallSite CS = cast<Value>(Inst)) {<br>
+ } else if (auto CS = CallSite(Inst)) {<br>
const MemoryDependenceAnalysis::NonLocalDepInfo &NLDI =<br>
MDA.getNonLocalCallDependency(CS);<br>
<br>
<br>
Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Fri Apr 10 09:50:08 2015<br>
@@ -223,7 +223,7 @@ getCallSiteDependencyFrom(CallSite CS, b<br>
continue;<br>
}<br>
<br>
- if (CallSite InstCS = cast<Value>(Inst)) {<br>
+ if (auto InstCS = CallSite(Inst)) {<br>
// Debug intrinsics don't cause dependences.<br>
if (isa<DbgInfoIntrinsic>(Inst)) continue;<br>
// If these two calls do not interfere, look past it.<br>
<br>
Modified: llvm/trunk/lib/Analysis/ValueTracking.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/ValueTracking.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/ValueTracking.cpp Fri Apr 10 09:50:08 2015<br>
@@ -2934,7 +2934,7 @@ bool llvm::isKnownNonNull(const Value *V<br>
if (const LoadInst *LI = dyn_cast<LoadInst>(V))<br>
return LI->getMetadata(LLVMContext::MD_nonnull);<br>
<br>
- if (ImmutableCallSite CS = V)<br>
+ if (auto CS = ImmutableCallSite(V))<br>
if (CS.isReturnNonNull())<br>
return true;<br>
<br>
<br>
Modified: llvm/trunk/lib/IR/Value.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Value.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Value.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/IR/Value.cpp (original)<br>
+++ llvm/trunk/lib/IR/Value.cpp Fri Apr 10 09:50:08 2015<br>
@@ -525,7 +525,7 @@ static bool isDereferenceablePointer(con<br>
<br>
// Return values from call sites specifically marked as dereferenceable are<br>
// also okay.<br>
- if (ImmutableCallSite CS = V) {<br>
+ if (auto CS = ImmutableCallSite(V)) {<br>
if (uint64_t Bytes = CS.getDereferenceableBytes(0)) {<br>
Type *Ty = V->getType()->getPointerElementType();<br>
if (Ty->isSized() && DL.getTypeStoreSize(Ty) <= Bytes)<br>
@@ -595,7 +595,7 @@ bool Value::isDereferenceablePointer(con<br>
APInt DerefBytes(Offset.getBitWidth(), 0);<br>
if (const Argument *A = dyn_cast<Argument>(BV))<br>
DerefBytes = A->getDereferenceableBytes();<br>
- else if (ImmutableCallSite CS = BV)<br>
+ else if (auto CS = ImmutableCallSite(BV))<br>
DerefBytes = CS.getDereferenceableBytes(0);<br>
<br>
if (DerefBytes.getBoolValue() && Offset.isNonNegative()) {<br>
<br>
Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Fri Apr 10 09:50:08 2015<br>
@@ -862,7 +862,7 @@ CallGraphNode *ArgPromotion::DoPromotion<br>
<br>
// Update the callgraph to know that the callsite has been transformed.<br>
CallGraphNode *CalleeNode = CG[Call->getParent()->getParent()];<br>
- CalleeNode->replaceCallEdge(Call, New, NF_CGN);<br>
+ CalleeNode->replaceCallEdge(CS, CallSite(New), NF_CGN);<br>
<br>
if (!Call->use_empty()) {<br>
Call->replaceAllUsesWith(New);<br>
<br>
Modified: llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp Fri Apr 10 09:50:08 2015<br>
@@ -482,7 +482,7 @@ DAE::Liveness DAE::SurveyUse(const Use *<br>
return Result;<br>
}<br>
<br>
- if (ImmutableCallSite CS = V) {<br>
+ if (auto CS = ImmutableCallSite(V)) {<br>
const Function *F = CS.getCalledFunction();<br>
if (F) {<br>
// Used in a direct call.<br>
<br>
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp Fri Apr 10 09:50:08 2015<br>
@@ -84,7 +84,7 @@ isOnlyCopiedFromConstantGlobal(Value *V,<br>
continue;<br>
}<br>
<br>
- if (CallSite CS = I) {<br>
+ if (auto CS = CallSite(I)) {<br>
// If this is the function being called then we treat it like a load and<br>
// ignore it.<br>
if (CS.isCallee(&U))<br>
<br>
Modified: llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/ObjCARC/DependencyAnalysis.cpp Fri Apr 10 09:50:08 2015<br>
@@ -45,7 +45,7 @@ bool llvm::objcarc::CanAlterRefCount(con<br>
default: break;<br>
}<br>
<br>
- ImmutableCallSite CS = static_cast<const Value *>(Inst);<br>
+ ImmutableCallSite CS(Inst);<br>
assert(CS && "Only calls can alter reference counts!");<br>
<br>
// See if AliasAnalysis can help us with the call.<br>
@@ -99,7 +99,7 @@ bool llvm::objcarc::CanUse(const Instruc<br>
// of any other dynamic reference-counted pointers.<br>
if (!IsPotentialRetainableObjPtr(ICI->getOperand(1), *PA.getAA()))<br>
return false;<br>
- } else if (ImmutableCallSite CS = static_cast<const Value *>(Inst)) {<br>
+ } else if (auto CS = ImmutableCallSite(Inst)) {<br>
// For calls, just check the arguments (and not the callee operand).<br>
for (ImmutableCallSite::arg_iterator OI = CS.arg_begin(),<br>
OE = CS.arg_end(); OI != OE; ++OI) {<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Fri Apr 10 09:50:08 2015<br>
@@ -168,7 +168,7 @@ static bool hasMemoryWrite(Instruction *<br>
return true;<br>
}<br>
}<br>
- if (CallSite CS = I) {<br>
+ if (auto CS = CallSite(I)) {<br>
if (Function *F = CS.getCalledFunction()) {<br>
if (TLI && TLI->has(LibFunc::strcpy) &&<br>
F->getName() == TLI->getName(LibFunc::strcpy)) {<br>
@@ -262,7 +262,7 @@ static bool isRemovable(Instruction *I)<br>
}<br>
}<br>
<br>
- if (CallSite CS = I)<br>
+ if (auto CS = CallSite(I))<br>
return CS.getInstruction()->use_empty();<br>
<br>
return false;<br>
@@ -306,7 +306,7 @@ static Value *getStoredPointerOperand(In<br>
}<br>
}<br>
<br>
- CallSite CS = I;<br>
+ CallSite CS(I);<br>
// All the supported functions so far happen to have dest as their first<br>
// argument.<br>
return CS.getArgument(0);<br>
@@ -780,7 +780,7 @@ bool DSE::handleEndBlock(BasicBlock &BB)<br>
continue;<br>
}<br>
<br>
- if (CallSite CS = cast<Value>(BBI)) {<br>
+ if (auto CS = CallSite(BBI)) {<br>
// Remove allocation function calls from the list of dead stack objects;<br>
// there can't be any references before the definition.<br>
if (isAllocLikeFn(BBI, TLI))<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp Fri Apr 10 09:50:08 2015<br>
@@ -1045,7 +1045,7 @@ bool MemCpyOpt::iterateOnFunction(Functi<br>
RepeatInstruction = processMemCpy(M);<br>
else if (MemMoveInst *M = dyn_cast<MemMoveInst>(I))<br>
RepeatInstruction = processMemMove(M);<br>
- else if (CallSite CS = (Value*)I) {<br>
+ else if (auto CS = CallSite(I)) {<br>
for (unsigned i = 0, e = CS.arg_size(); i != e; ++i)<br>
if (CS.isByValArgument(i))<br>
MadeChange |= processByValArgument(CS, i);<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp Fri Apr 10 09:50:08 2015<br>
@@ -217,7 +217,7 @@ static bool containsUnconditionalCallSaf<br>
BasicBlock *Current = Pred;<br>
while (true) {<br>
for (Instruction &I : *Current) {<br>
- if (CallSite CS = &I)<br>
+ if (auto CS = CallSite(&I))<br>
// Note: Technically, needing a safepoint isn't quite the right<br>
// condition here. We should instead be checking if the target method<br>
// has an<br>
@@ -424,8 +424,7 @@ static Instruction *findLocationForEntry<br>
// We need to stop going forward as soon as we see a call that can<br>
// grow the stack (i.e. the call target has a non-zero frame<br>
// size).<br>
- if (CallSite CS = cursor) {<br>
- (void)CS; // Silence an unused variable warning by gcc 4.8.2<br>
+ if (CallSite(cursor)) {<br>
if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(cursor)) {<br>
// llvm.assume(...) are not really calls.<br>
if (II->getIntrinsicID() == Intrinsic::assume) {<br>
<br>
Modified: llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp?rev=234601&r1=234600&r2=234601&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp?rev=234601&r1=234600&r2=234601&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Utils/GlobalStatus.cpp Fri Apr 10 09:50:08 2015<br>
@@ -150,7 +150,7 @@ static bool analyzeGlobalAux(const Value<br>
if (MSI->isVolatile())<br>
return true;<br>
GS.StoredType = GlobalStatus::Stored;<br>
- } else if (ImmutableCallSite C = I) {<br>
+ } else if (auto C = ImmutableCallSite(I)) {<br>
if (!C.isCallee(&U))<br>
return true;<br>
GS.IsLoaded = true;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>