summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/microinstruction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/frontend/ir/microinstruction.cpp')
-rw-r--r--src/shader_recompiler/frontend/ir/microinstruction.cpp11
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
50Inst::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
50Inst::~Inst() { 61Inst::~Inst() {
51 if (op == Opcode::Phi) { 62 if (op == Opcode::Phi) {
52 std::destroy_at(&phi_args); 63 std::destroy_at(&phi_args);