| Index: src/IceOperand.h
|
| diff --git a/src/IceOperand.h b/src/IceOperand.h
|
| index 018445a60bbc197b12091e4a59edc82fb1f8ff07..9beeed6d78486863af6a91d5e5ad447034e25750 100644
|
| --- a/src/IceOperand.h
|
| +++ b/src/IceOperand.h
|
| @@ -341,6 +341,15 @@ public:
|
| bool getIsArg() const { return IsArgument; }
|
| void setIsArg(Cfg *Func);
|
|
|
| + enum ArgLocInfo {
|
| + NoArgLoc,
|
| + RegisterArgLoc,
|
| + StackArgLoc
|
| + };
|
| +
|
| + ArgLocInfo getArgLoc() const { return ArgLoc; }
|
| + void setArgLoc(ArgLocInfo Loc) { ArgLoc = Loc; }
|
| +
|
| int32_t getStackOffset() const { return StackOffset; }
|
| void setStackOffset(int32_t Offset) { StackOffset = Offset; }
|
|
|
| @@ -356,6 +365,11 @@ public:
|
| int32_t getRegNumTmp() const { return RegNumTmp; }
|
| void setRegNumTmp(int32_t NewRegNum) { RegNumTmp = NewRegNum; }
|
|
|
| + Variable *getHomeRegister() const { return HomeRegister; }
|
| + void setHomeRegister(Variable *NewHomeRegister) {
|
| + HomeRegister = NewHomeRegister;
|
| + }
|
| +
|
| RegWeight getWeight() const { return Weight; }
|
| void setWeight(uint32_t NewWeight) { Weight = NewWeight; }
|
| void setWeightInfinite() { Weight = RegWeight::Inf; }
|
| @@ -410,7 +424,8 @@ private:
|
| : Operand(kVariable, Ty), Number(Index), Name(Name), DefInst(NULL),
|
| DefNode(Node), IsArgument(false), StackOffset(0), RegNum(NoRegister),
|
| RegNumTmp(NoRegister), Weight(1), RegisterPreference(NULL),
|
| - AllowRegisterOverlap(false), LoVar(NULL), HiVar(NULL) {
|
| + AllowRegisterOverlap(false), LoVar(NULL), HiVar(NULL),
|
| + ArgLoc(NoArgLoc), HomeRegister(NULL) {
|
| Vars = VarsReal;
|
| Vars[0] = this;
|
| NumVars = 1;
|
| @@ -462,6 +477,11 @@ private:
|
| // wasteful for a 64-bit target.
|
| Variable *LoVar;
|
| Variable *HiVar;
|
| + // ArgLoc records the assignment of the argument (stack or register)
|
| + // if this value is an argument.
|
| + ArgLocInfo ArgLoc;
|
| + // HomeRegister is the home register.
|
| + Variable *HomeRegister;
|
| // VarsReal (and Operand::Vars) are set up such that Vars[0] ==
|
| // this.
|
| Variable *VarsReal[1];
|
|
|