summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend/ir
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/frontend/ir/abstract_syntax_list.h11
-rw-r--r--src/shader_recompiler/frontend/ir/post_order.cpp2
2 files changed, 5 insertions, 8 deletions
diff --git a/src/shader_recompiler/frontend/ir/abstract_syntax_list.h b/src/shader_recompiler/frontend/ir/abstract_syntax_list.h
index e9afb4d92..b61773487 100644
--- a/src/shader_recompiler/frontend/ir/abstract_syntax_list.h
+++ b/src/shader_recompiler/frontend/ir/abstract_syntax_list.h
@@ -13,10 +13,6 @@ namespace Shader::IR {
class Block;
struct AbstractSyntaxNode {
- struct NonTrivialDummy {
- NonTrivialDummy() {}
- };
-
enum class Type {
Block,
If,
@@ -27,9 +23,7 @@ struct AbstractSyntaxNode {
Return,
Unreachable,
};
- Type type{};
- union {
- NonTrivialDummy dummy{};
+ union Data {
Block* block;
struct {
U1 cond;
@@ -55,6 +49,9 @@ struct AbstractSyntaxNode {
Block* skip;
} break_node;
};
+
+ Data data{};
+ Type type{};
};
using AbstractSyntaxList = std::vector<AbstractSyntaxNode>;
diff --git a/src/shader_recompiler/frontend/ir/post_order.cpp b/src/shader_recompiler/frontend/ir/post_order.cpp
index 1a28df7fb..16bc44101 100644
--- a/src/shader_recompiler/frontend/ir/post_order.cpp
+++ b/src/shader_recompiler/frontend/ir/post_order.cpp
@@ -20,7 +20,7 @@ BlockList PostOrder(const AbstractSyntaxNode& root) {
if (root.type != AbstractSyntaxNode::Type::Block) {
throw LogicError("First node in abstract syntax list root is not a block");
}
- Block* const first_block{root.block};
+ Block* const first_block{root.data.block};
visited.insert(first_block);
block_stack.push_back(first_block);