mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-26 23:24:34 +00:00
Finally land the InvokeInst operand reordering.
I have audited all getOperandNo calls now, fixing hidden assumptions. CallSite related uglyness will be eliminated successively. Note this patch has a long and griveous history, for all the back-and-forths have a look at CallSite.h's log. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99399 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -676,17 +676,13 @@ void Verifier::visitFunction(Function &F) {
|
||||
"blockaddress may not be used with the entry block!", Entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If this function is actually an intrinsic, verify that it is only used in
|
||||
// direct call/invokes, never having its "address taken".
|
||||
if (F.getIntrinsicID()) {
|
||||
for (Value::use_iterator UI = F.use_begin(), E = F.use_end(); UI != E;++UI){
|
||||
User *U = cast<User>(UI);
|
||||
if ((isa<CallInst>(U) || isa<InvokeInst>(U)) && UI.getOperandNo() == 0)
|
||||
continue; // Direct calls/invokes are ok.
|
||||
|
||||
const User *U;
|
||||
if (F.hasAddressTaken(&U))
|
||||
Assert1(0, "Invalid user of intrinsic instruction!", U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1483,7 +1479,7 @@ void Verifier::visitInstruction(Instruction &I) {
|
||||
"Instruction does not dominate all uses!", Op, &I);
|
||||
}
|
||||
} else if (isa<InlineAsm>(I.getOperand(i))) {
|
||||
Assert1(i == 0 && (isa<CallInst>(I) || isa<InvokeInst>(I)),
|
||||
Assert1((i == 0 && isa<CallInst>(I)) || (i + 3 == e && isa<InvokeInst>(I)),
|
||||
"Cannot take the address of an inline asm!", &I);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user