[llvm-commits] [llvm] r55865 - in /llvm/trunk: include/llvm/Analysis/CallGraph.h lib/Analysis/IPA/CallGraph.cpp lib/CodeGen/SelectionDAG/FastISel.cpp lib/Transforms/IPO/PruneEH.cpp lib/Transforms/Utils/InlineFunction.cpp
Owen Anderson
resistor at mac.com
Fri Sep 5 16:46:39 PDT 2008
Erm, not the build, but several tests in MultiSource.
--Owen
On Sep 5, 2008, at 4:36 PM, Owen Anderson wrote:
> Author: resistor
> Date: Fri Sep 5 18:36:01 2008
> New Revision: 55865
>
> URL: http://llvm.org/viewvc/llvm-project?rev=55865&view=rev
> Log:
> Revert r55859. This is breaking the build in the abscence of its
> companion commit.
>
> Modified:
> llvm/trunk/include/llvm/Analysis/CallGraph.h
> llvm/trunk/lib/Analysis/IPA/CallGraph.cpp
> llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
> llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
> llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
>
> Modified: llvm/trunk/include/llvm/Analysis/CallGraph.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CallGraph.h?rev=55865&r1=55864&r2=55865&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/include/llvm/Analysis/CallGraph.h (original)
> +++ llvm/trunk/include/llvm/Analysis/CallGraph.h Fri Sep 5 18:36:01
> 2008
> @@ -214,12 +214,17 @@
> CalledFunctions.clear();
> }
>
> - /// addCalledFunction - Add a function to the list of functions
> called by this
> + /// addCalledFunction add a function to the list of functions
> called by this
> /// one.
> void addCalledFunction(CallSite CS, CallGraphNode *M) {
> CalledFunctions.push_back(std::make_pair(CS, M));
> }
>
> + /// removeCallEdgeTo - This method removes a *single* edge to the
> specified
> + /// callee function. Note that this method takes linear time, so
> it should be
> + /// used sparingly.
> + void removeCallEdgeTo(CallGraphNode *Callee);
> +
> /// removeCallEdgeFor - This method removes the edge in the node
> for the
> /// specified call site. Note that this method takes linear time,
> so it
> /// should be used sparingly.
>
> Modified: llvm/trunk/lib/Analysis/IPA/CallGraph.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/IPA/CallGraph.cpp?rev=55865&r1=55864&r2=55865&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Analysis/IPA/CallGraph.cpp (original)
> +++ llvm/trunk/lib/Analysis/IPA/CallGraph.cpp Fri Sep 5 18:36:01 2008
> @@ -282,6 +282,16 @@
>
> void CallGraphNode::dump() const { print(cerr); }
>
> +void CallGraphNode::removeCallEdgeTo(CallGraphNode *Callee) {
> + for (unsigned i = CalledFunctions.size(); ; --i) {
> + assert(i && "Cannot find callee to remove!");
> + if (CalledFunctions[i-1].second == Callee) {
> + CalledFunctions.erase(CalledFunctions.begin()+i-1);
> + return;
> + }
> + }
> +}
> +
> /// removeCallEdgeFor - This method removes the edge in the node for
> the
> /// specified call site. Note that this method takes linear time,
> so it
> /// should be used sparingly.
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=55865&r1=55864&r2=55865&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp Fri Sep 5
> 18:36:01 2008
> @@ -35,7 +35,8 @@
> MVT::SimpleValueType VT = TLI.getValueType(V-
> >getType()).getSimpleVT();
> if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
> if (CI->getValue().getActiveBits() > 64)
> - return 0;
> + return TargetMaterializeConstant(CI,
> + MBB->getParent()-
> >getConstantPool());
> // Don't cache constant materializations. To do so would require
> // tracking what uses they dominate.
> Reg = FastEmit_i(VT, VT, ISD::Constant, CI->getZExtValue());
> @@ -52,16 +53,19 @@
> uint32_t IntBitWidth = IntVT.getSizeInBits();
> if (Flt.convertToInteger(x, IntBitWidth, /*isSigned=*/true,
> APFloat::rmTowardZero) !=
> APFloat::opOK)
> - return 0;
> + return TargetMaterializeConstant(CF,
> + MBB->getParent()-
> >getConstantPool());
> APInt IntVal(IntBitWidth, 2, x);
>
> unsigned IntegerReg = FastEmit_i(IntVT.getSimpleVT(),
> IntVT.getSimpleVT(),
> ISD::Constant,
> IntVal.getZExtValue());
> if (IntegerReg == 0)
> - return 0;
> + return TargetMaterializeConstant(CF,
> + MBB->getParent()-
> >getConstantPool());
> Reg = FastEmit_r(IntVT.getSimpleVT(), VT, ISD::SINT_TO_FP,
> IntegerReg);
> if (Reg == 0)
> - return 0;
> + return TargetMaterializeConstant(CF,
> + MBB->getParent()-
> >getConstantPool());;
> }
> } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(V)) {
> if (!SelectOperator(CE, CE->getOpcode())) return 0;
> @@ -73,6 +77,10 @@
> return 0;
> }
>
> + if (!Reg && isa<Constant>(V))
> + return TargetMaterializeConstant(cast<Constant>(V),
> + MBB->getParent()-
> >getConstantPool());
> +
> LocalValueMap[V] = Reg;
> return Reg;
> }
>
> Modified: llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PruneEH.cpp?rev=55865&r1=55864&r2=55865&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/IPO/PruneEH.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PruneEH.cpp Fri Sep 5 18:36:01 2008
> @@ -222,10 +222,13 @@
> CallGraphNode *CGN = CG[BB->getParent()];
> for (BasicBlock::iterator I = BB->end(), E = BB->begin(); I !=
> E; ) {
> --I;
> - if (CallInst *CI = dyn_cast<CallInst>(I))
> - CGN->removeCallEdgeFor(CI);
> - else if (InvokeInst *II = dyn_cast<InvokeInst>(I))
> - CGN->removeCallEdgeFor(II);
> + if (CallInst *CI = dyn_cast<CallInst>(I)) {
> + if (Function *Callee = CI->getCalledFunction())
> + CGN->removeCallEdgeTo(CG[Callee]);
> + } else if (InvokeInst *II = dyn_cast<InvokeInst>(I)) {
> + if (Function *Callee = II->getCalledFunction())
> + CGN->removeCallEdgeTo(CG[Callee]);
> + }
> if (!I->use_empty())
> I->replaceAllUsesWith(UndefValue::get(I->getType()));
> }
>
> Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=55865&r1=55864&r2=55865&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp Fri Sep 5
> 18:36:01 2008
> @@ -143,18 +143,16 @@
> /// UpdateCallGraphAfterInlining - Once we have cloned code over
> from a callee
> /// into the caller, update the specified callgraph to reflect the
> changes we
> /// made. Note that it's possible that not all code was copied
> over, so only
> -/// some edges of the callgraph may remain.
> -static void UpdateCallGraphAfterInlining(CallSite CS,
> +/// some edges of the callgraph will be remain.
> +static void UpdateCallGraphAfterInlining(const Function *Caller,
> + const Function *Callee,
> Function::iterator
> FirstNewBlock,
> DenseMap<const Value*,
> Value*> &ValueMap,
> CallGraph &CG) {
> - const Function *Caller = CS.getInstruction()->getParent()-
> >getParent();
> - const Function *Callee = CS.getCalledFunction();
> -
> // Update the call graph by deleting the edge from Callee to Caller
> CallGraphNode *CalleeNode = CG[Callee];
> CallGraphNode *CallerNode = CG[Caller];
> - CallerNode->removeCallEdgeFor(CS);
> + CallerNode->removeCallEdgeTo(CalleeNode);
>
> // Since we inlined some uninlined call sites in the callee into
> the caller,
> // add edges from the caller to all of the callees of the callee.
> @@ -304,7 +302,8 @@
>
> // Update the callgraph if requested.
> if (CG)
> - UpdateCallGraphAfterInlining(CS, FirstNewBlock, ValueMap, *CG);
> + UpdateCallGraphAfterInlining(Caller, CalledFunc,
> FirstNewBlock, ValueMap,
> + *CG);
> }
>
> // If there are any alloca instructions in the block that used to
> be the entry
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2624 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20080905/4fec7b8c/attachment.bin>
More information about the llvm-commits
mailing list