1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

Values stored in CallArgsDescriptor cannot be const.

llvm-svn: 7156
This commit is contained in:
Vikram S. Adve 2003-07-10 19:46:15 +00:00
parent b1496585b6
commit d8b600cb85
2 changed files with 13 additions and 13 deletions

View File

@ -20,14 +20,14 @@ class CallArgInfo {
static const unsigned char FPArgReg = 0x2;
static const unsigned char StackSlot = 0x4;
const Value* argVal; // this argument
int argCopyReg; // register used for second copy of arg. when
Value* argVal; // this argument
int argCopyReg; // register used for second copy of arg. when
// multiple copies must be passed in registers
unsigned char passingMethod; // flags recording passing methods
public:
// Constructors
CallArgInfo(const Value* _argVal)
CallArgInfo(Value* _argVal)
: argVal(_argVal), argCopyReg(TargetRegInfo::getInvalidRegNum()),
passingMethod(0x0) {}
@ -36,14 +36,14 @@ public:
passingMethod(obj.passingMethod) {}
// Accessor methods
const Value* getArgVal() { return argVal; }
Value* getArgVal() { return argVal; }
int getArgCopy() { return argCopyReg; }
bool usesIntArgReg() { return (bool) (passingMethod & IntArgReg);}
bool usesFPArgReg() { return (bool) (passingMethod & FPArgReg); }
bool usesStackSlot() { return (bool) (passingMethod & StackSlot);}
// Modifier methods
void replaceArgVal(const Value* newVal) { argVal = newVal; }
void replaceArgVal(Value* newVal) { argVal = newVal; }
void setUseIntArgReg() { passingMethod |= IntArgReg; }
void setUseFPArgReg() { passingMethod |= FPArgReg; }
void setUseStackSlot() { passingMethod |= StackSlot; }
@ -54,14 +54,14 @@ public:
class CallArgsDescriptor {
std::vector<CallArgInfo> argInfoVec; // Descriptor for each argument
const CallInst* callInstr; // The call instruction == result value
const Value* funcPtr; // Pointer for indirect calls
CallInst* callInstr; // The call instruction == result value
Value* funcPtr; // Pointer for indirect calls
TmpInstruction* retAddrReg; // Tmp value for return address reg.
bool isVarArgs; // Is this a varargs call?
bool noPrototype; // Is this a call with no prototype?
public:
CallArgsDescriptor(const CallInst* _callInstr, TmpInstruction* _retAddrReg,
CallArgsDescriptor(CallInst* _callInstr, TmpInstruction* _retAddrReg,
bool _isVarArgs, bool _noPrototype);
// Accessor methods to retrieve information about the call
@ -69,9 +69,9 @@ public:
unsigned int getNumArgs() const { return argInfoVec.size(); }
CallArgInfo& getArgInfo(unsigned int op) { assert(op < argInfoVec.size());
return argInfoVec[op]; }
const CallInst* getCallInst() const { return callInstr; }
const CallInst* getReturnValue() const;
const Value* getIndirectFuncPtr() const { return funcPtr; }
CallInst* getCallInst() const { return callInstr; }
CallInst* getReturnValue() const;
Value* getIndirectFuncPtr() const { return funcPtr; }
TmpInstruction* getReturnAddrReg() const { return retAddrReg; }
bool isVarArgsFunc() const { return isVarArgs; }
bool hasNoPrototype() const { return noPrototype; }

View File

@ -12,7 +12,7 @@
#include "llvm/Type.h"
CallArgsDescriptor::CallArgsDescriptor(const CallInst* _callInstr,
CallArgsDescriptor::CallArgsDescriptor(CallInst* _callInstr,
TmpInstruction* _retAddrReg,
bool _isVarArgs, bool _noPrototype)
: callInstr(_callInstr),
@ -35,7 +35,7 @@ CallArgsDescriptor::CallArgsDescriptor(const CallInst* _callInstr,
}
const CallInst*
CallInst*
CallArgsDescriptor::getReturnValue() const
{
return (callInstr->getType() == Type::VoidTy? NULL : callInstr);