mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-01 15:40:46 +00:00
Update the callgraph correctly in ArgumentPromotion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55895 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d7b9851c4e
commit
34c8847b2d
@ -607,6 +607,10 @@ Function *ArgPromotion::DoPromotion(Function *F,
|
||||
// changes.
|
||||
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
|
||||
|
||||
// Get the callgraph information that we need to update to reflect our
|
||||
// changes.
|
||||
CallGraph &CG = getAnalysis<CallGraph>();
|
||||
|
||||
// Loop over all of the callers of the function, transforming the call sites
|
||||
// to pass in the loaded pointers.
|
||||
//
|
||||
@ -710,6 +714,9 @@ Function *ArgPromotion::DoPromotion(Function *F,
|
||||
// the old call with a new one.
|
||||
AA.replaceWithNewValue(Call, New);
|
||||
|
||||
// Update the callgraph to know that the callsite has been transformed.
|
||||
CG[Call->getParent()->getParent()]->replaceCallSite(Call, New);
|
||||
|
||||
if (!Call->use_empty()) {
|
||||
Call->replaceAllUsesWith(New);
|
||||
New->takeName(Call);
|
||||
|
12
test/Transforms/ArgumentPromotion/2008-09-07-CGUpdate.ll
Normal file
12
test/Transforms/ArgumentPromotion/2008-09-07-CGUpdate.ll
Normal file
@ -0,0 +1,12 @@
|
||||
; RUN: llvm-as < %s | opt -inline -argpromotion -disable-output
|
||||
|
||||
define internal fastcc i32 @hash(i32* %ts, i32 %mod) nounwind {
|
||||
entry:
|
||||
unreachable
|
||||
}
|
||||
|
||||
define void @encode(i32* %m, i32* %ts, i32* %new) nounwind {
|
||||
entry:
|
||||
%0 = call fastcc i32 @hash( i32* %ts, i32 0 ) nounwind ; <i32> [#uses=0]
|
||||
unreachable
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
; RUN: llvm-as < %s | opt -argpromotion -disable-output
|
||||
|
||||
define internal fastcc i32 @term_SharingList(i32* %Term, i32* %List) nounwind {
|
||||
entry:
|
||||
br i1 false, label %bb, label %bb5
|
||||
|
||||
bb: ; preds = %entry
|
||||
%0 = call fastcc i32 @term_SharingList( i32* null, i32* %List ) nounwind ; <i32> [#uses=0]
|
||||
unreachable
|
||||
|
||||
bb5: ; preds = %entry
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
define i32 @term_Sharing(i32* %Term) nounwind {
|
||||
entry:
|
||||
br i1 false, label %bb.i, label %bb14
|
||||
|
||||
bb.i: ; preds = %entry
|
||||
%0 = call fastcc i32 @term_SharingList( i32* null, i32* null ) nounwind ; <i32> [#uses=0]
|
||||
ret i32 1
|
||||
|
||||
bb14: ; preds = %entry
|
||||
ret i32 0
|
||||
}
|
Loading…
Reference in New Issue
Block a user