Minor fixes when accesing CallInst operands

Summary: Fix minor issues found while adding support for emitting textual function names when calling non-callables.

Reviewed By: tmikov, avp

Differential Revision: D40617534

fbshipit-source-id: 02b8782159d4f30f10fc875f47a947fd822e9f57
This commit is contained in:
John Porto 2022-10-24 22:16:30 -07:00 коммит произвёл Facebook GitHub Bot
Родитель bb0aa44866
Коммит f6bb69c6a0
4 изменённых файлов: 9 добавлений и 5 удалений

Просмотреть файл

@ -699,6 +699,10 @@ class CallInst : public Instruction {
CallInst(const CallInst &) = delete;
void operator=(const CallInst &) = delete;
// Forces the code to use the appropriate getters instead of relying on
// hard-coded offsets when accessing the arguments.
using Instruction::getOperand;
public:
enum { CalleeIdx, ThisIdx };
@ -721,7 +725,7 @@ class CallInst : public Instruction {
}
unsigned getNumArguments() const {
return getNumOperands() - 1;
return getNumOperands() - ThisIdx;
}
explicit CallInst(

Просмотреть файл

@ -811,7 +811,7 @@ bool SpillRegisters::requiresShortOperand(Instruction *I, int op) {
case ValueKind::CallBuiltinInstKind:
case ValueKind::HBCConstructInstKind:
case ValueKind::HBCCallDirectInstKind:
return op == 0;
return op == CallInst::CalleeIdx;
default:
return true;
}

Просмотреть файл

@ -149,11 +149,11 @@ static bool performFSO(Function *F, std::vector<Function *> &worklist) {
// Replace all unused arguments with undef.
for (auto &arg : unusedParams) {
auto *prevArg = arg.first->getOperand(arg.second + 1);
auto *prevArg = arg.first->getArgument(arg.second);
if (!llvh::isa<Literal>(prevArg))
toRedo.insert(arg.first->getParent()->getParent());
arg.first->setOperand(undef, arg.second + 1);
arg.first->setArgument(undef, arg.second);
NumArgsOpt++;
}

Просмотреть файл

@ -99,7 +99,7 @@ void IRPrinter::printTypeLabel(Type T) {
void IRPrinter::printValueLabel(Instruction *I, Value *V, unsigned opIndex) {
auto &ctx = I->getContext();
if (isa<CallBuiltinInst>(I) && opIndex == 0) {
if (isa<CallBuiltinInst>(I) && opIndex == CallInst::CalleeIdx) {
os << "["
<< getBuiltinMethodName(cast<CallBuiltinInst>(I)->getBuiltinIndex())
<< "]";