| Index: src/IceOperand.h | 
| diff --git a/src/IceOperand.h b/src/IceOperand.h | 
| index ea56b29f93269c31d2db3b584f7b16bc6d40dfaf..0addc883b41ed860d8c1c683b5bf956bc05cec40 100644 | 
| --- a/src/IceOperand.h | 
| +++ b/src/IceOperand.h | 
| @@ -349,9 +349,9 @@ public: | 
| explicit RegWeight(uint32_t Weight) : Weight(Weight) {} | 
| RegWeight(const RegWeight &) = default; | 
| RegWeight &operator=(const RegWeight &) = default; | 
| -  const static uint32_t Inf = ~0;      /// Force regalloc to give a register | 
| -  const static uint32_t Zero = 0;      /// Force regalloc NOT to give a register | 
| -  const static uint32_t Max = Inf - 1; /// Max natural weight. | 
| +  constexpr static uint32_t Inf = ~0; /// Force regalloc to give a register | 
| +  constexpr static uint32_t Zero = 0; /// Force regalloc NOT to give a register | 
| +  constexpr static uint32_t Max = Inf - 1; /// Max natural weight. | 
| void addWeight(uint32_t Delta) { | 
| if (Delta == Inf) | 
| Weight = Inf; | 
| @@ -472,7 +472,7 @@ public: | 
| return "lv$" + getName(Func); | 
| } | 
|  | 
| -  static const int32_t NoRegister = -1; | 
| +  static constexpr int32_t NoRegister = -1; | 
| bool hasReg() const { return getRegNum() != NoRegister; } | 
| int32_t getRegNum() const { return RegNum; } | 
| void setRegNum(int32_t NewRegNum) { | 
| @@ -507,11 +507,11 @@ public: | 
| return Live.endsBefore(Other->Live); | 
| } | 
| bool rangeOverlaps(const Variable *Other) const { | 
| -    const bool UseTrimmed = true; | 
| +    constexpr bool UseTrimmed = true; | 
| return Live.overlaps(Other->Live, UseTrimmed); | 
| } | 
| bool rangeOverlapsStart(const Variable *Other) const { | 
| -    const bool UseTrimmed = true; | 
| +    constexpr bool UseTrimmed = true; | 
| return Live.overlapsInst(Other->Live.getStart(), UseTrimmed); | 
| } | 
|  | 
| @@ -519,8 +519,9 @@ public: | 
| /// primarily for syntactic correctness of textual assembly emission. Note | 
| /// that only basic information is copied, in particular not IsArgument, | 
| /// IsImplicitArgument, IgnoreLiveness, RegNumTmp, Live, LoVar, HiVar, | 
| -  /// VarsReal. | 
| -  Variable *asType(Type Ty); | 
| +  /// VarsReal.  If NewRegNum!=NoRegister, then that register assignment is made | 
| +  /// instead of copying the existing assignment. | 
| +  const Variable *asType(Type Ty, int32_t NewRegNum) const; | 
|  | 
| void emit(const Cfg *Func) const override; | 
| using Operand::dump; | 
|  |