diff options
Diffstat (limited to 'src/shader_recompiler/frontend/ir/microinstruction.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/microinstruction.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/microinstruction.cpp b/src/shader_recompiler/frontend/ir/microinstruction.cpp index 30b470bdd..97e2bf6af 100644 --- a/src/shader_recompiler/frontend/ir/microinstruction.cpp +++ b/src/shader_recompiler/frontend/ir/microinstruction.cpp | |||
| @@ -47,6 +47,17 @@ Inst::Inst(IR::Opcode op_, u32 flags_) noexcept : op{op_}, flags{flags_} { | |||
| 47 | } | 47 | } |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | Inst::Inst(const Inst& base) : op{base.op}, flags{base.flags} { | ||
| 51 | if (base.op == Opcode::Phi) { | ||
| 52 | throw NotImplementedException("Copying phi node"); | ||
| 53 | } | ||
| 54 | std::construct_at(&args); | ||
| 55 | const size_t num_args{base.NumArgs()}; | ||
| 56 | for (size_t index = 0; index < num_args; ++index) { | ||
| 57 | SetArg(index, base.Arg(index)); | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 50 | Inst::~Inst() { | 61 | Inst::~Inst() { |
| 51 | if (op == Opcode::Phi) { | 62 | if (op == Opcode::Phi) { |
| 52 | std::destroy_at(&phi_args); | 63 | std::destroy_at(&phi_args); |