mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
reapply r101434
with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -271,7 +271,7 @@ bool LowerIntrinsics::PerformDefaultLowering(Function &F, GCStrategy &S) {
|
||||
case Intrinsic::gcwrite:
|
||||
if (LowerWr) {
|
||||
// Replace a write barrier with a simple store.
|
||||
Value *St = new StoreInst(CI->getOperand(1), CI->getOperand(3), CI);
|
||||
Value *St = new StoreInst(CI->getOperand(0), CI->getOperand(2), CI);
|
||||
CI->replaceAllUsesWith(St);
|
||||
CI->eraseFromParent();
|
||||
}
|
||||
@@ -279,7 +279,7 @@ bool LowerIntrinsics::PerformDefaultLowering(Function &F, GCStrategy &S) {
|
||||
case Intrinsic::gcread:
|
||||
if (LowerRd) {
|
||||
// Replace a read barrier with a simple load.
|
||||
Value *Ld = new LoadInst(CI->getOperand(2), "", CI);
|
||||
Value *Ld = new LoadInst(CI->getOperand(1), "", CI);
|
||||
Ld->takeName(CI);
|
||||
CI->replaceAllUsesWith(Ld);
|
||||
CI->eraseFromParent();
|
||||
@@ -290,7 +290,7 @@ bool LowerIntrinsics::PerformDefaultLowering(Function &F, GCStrategy &S) {
|
||||
// Initialize the GC root, but do not delete the intrinsic. The
|
||||
// backend needs the intrinsic to flag the stack slot.
|
||||
Roots.push_back(cast<AllocaInst>(
|
||||
CI->getOperand(1)->stripPointerCasts()));
|
||||
CI->getOperand(0)->stripPointerCasts()));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user