| Index: src/IceInstMIPS32.h
|
| diff --git a/src/IceInstMIPS32.h b/src/IceInstMIPS32.h
|
| index 05f9bdf35120bd55ad7256fb73c2f06aa109ff68..e3f1e82459eb7dc6d86ad848b0c224768aeba3c7 100644
|
| --- a/src/IceInstMIPS32.h
|
| +++ b/src/IceInstMIPS32.h
|
| @@ -1200,12 +1200,14 @@ class InstMIPS32Mov final : public InstMIPS32 {
|
| InstMIPS32Mov &operator=(const InstMIPS32Mov &) = delete;
|
|
|
| public:
|
| - static InstMIPS32Mov *create(Cfg *Func, Variable *Dest, Operand *Src) {
|
| - return new (Func->allocate<InstMIPS32Mov>()) InstMIPS32Mov(Func, Dest, Src);
|
| + static InstMIPS32Mov *create(Cfg *Func, Variable *Dest, Operand *Src,
|
| + Operand *Src2) {
|
| + return new (Func->allocate<InstMIPS32Mov>())
|
| + InstMIPS32Mov(Func, Dest, Src, Src2);
|
| }
|
| +
|
| bool isRedundantAssign() const override {
|
| - return !isMultiDest() && !isMultiSource() &&
|
| - checkForRedundantAssign(getDest(), getSrc(0));
|
| + return checkForRedundantAssign(getDest(), getSrc(0));
|
| }
|
| // bool isSimpleAssign() const override { return true; }
|
| void emit(const Cfg *Func) const override;
|
| @@ -1213,17 +1215,10 @@ public:
|
| void dump(const Cfg *Func) const override;
|
| static bool classof(const Inst *Inst) { return isClassof(Inst, Mov); }
|
|
|
| - bool isMultiDest() const { return DestHi != nullptr; }
|
| -
|
| - bool isMultiSource() const {
|
| - assert(getSrcSize() == 1 || getSrcSize() == 2);
|
| - return getSrcSize() == 2;
|
| - }
|
| -
|
| Variable *getDestHi() const { return DestHi; }
|
|
|
| private:
|
| - InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src);
|
| + InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src, Operand *Src2);
|
|
|
| void emitMultiDestSingleSource(const Cfg *Func) const;
|
| void emitSingleDestMultiSource(const Cfg *Func) const;
|
|
|