|
|
@@ -954,6 +954,12 @@ private:
|
|
|
|
|
|
Expression Visit(const Node& node) {
|
|
|
if (const auto operation = std::get_if<OperationNode>(&*node)) {
|
|
|
+ auto amend_index = operation->GetAmendIndex();
|
|
|
+ if (amend_index) {
|
|
|
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
|
|
|
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
|
|
|
+ ASSERT(type == Type::Void);
|
|
|
+ }
|
|
|
const auto operation_index = static_cast<std::size_t>(operation->GetCode());
|
|
|
const auto decompiler = operation_decompilers[operation_index];
|
|
|
if (decompiler == nullptr) {
|
|
|
@@ -1142,6 +1148,12 @@ private:
|
|
|
}
|
|
|
|
|
|
if (const auto conditional = std::get_if<ConditionalNode>(&*node)) {
|
|
|
+ auto amend_index = conditional->GetAmendIndex();
|
|
|
+ if (amend_index) {
|
|
|
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
|
|
|
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
|
|
|
+ ASSERT(type == Type::Void);
|
|
|
+ }
|
|
|
// It's invalid to call conditional on nested nodes, use an operation instead
|
|
|
const Id true_label = OpLabel();
|
|
|
const Id skip_label = OpLabel();
|
|
|
@@ -1164,6 +1176,12 @@ private:
|
|
|
}
|
|
|
|
|
|
if (const auto comment = std::get_if<CommentNode>(&*node)) {
|
|
|
+ auto amend_index = comment->GetAmendIndex();
|
|
|
+ if (amend_index) {
|
|
|
+ const Node& amend_node = ir.GetAmendNode(*amend_index);
|
|
|
+ [[maybe_unused]] const Type type = Visit(amend_node).type;
|
|
|
+ ASSERT(type == Type::Void);
|
|
|
+ }
|
|
|
Name(OpUndef(t_void), comment->GetText());
|
|
|
return {};
|
|
|
}
|