summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-08-21 17:54:47 +0200
committerFernandoS27 <fsahmkow27@gmail.com>2019-10-05 00:52:51 +0200
commit0366c18d87f8c60ff6a99db668a7f2d810aaeeb0 (patch)
treefa1731f7cb9285ffe40f789447b528262edd618f
parentShader_Ir: Refactor Decompilation process and allow multiple decompilation modes. (diff)
downloadyuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar.gz
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar.bz2
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar.lz
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar.xz
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.tar.zst
yuzu-0366c18d87f8c60ff6a99db668a7f2d810aaeeb0.zip
-rw-r--r--src/video_core/shader/ast.cpp4
-rw-r--r--src/video_core/shader/ast.h8
2 files changed, 9 insertions, 3 deletions
diff --git a/src/video_core/shader/ast.cpp b/src/video_core/shader/ast.cpp
index 14c50e1c6..74b9a8f9a 100644
--- a/src/video_core/shader/ast.cpp
+++ b/src/video_core/shader/ast.cpp
@@ -497,9 +497,7 @@ void ASTManager::Decompile() {
}
}
if (can_remove) {
- auto& manager = label->GetManager();
- manager.Remove(label);
- labels.erase(it);
+ label->MarkLabelUnused();
}
}
}
diff --git a/src/video_core/shader/ast.h b/src/video_core/shader/ast.h
index 849d0612c..07deb58e4 100644
--- a/src/video_core/shader/ast.h
+++ b/src/video_core/shader/ast.h
@@ -112,6 +112,7 @@ class ASTLabel {
public:
ASTLabel(u32 index) : index{index} {}
u32 index;
+ bool unused{};
};
class ASTGoto {
@@ -204,6 +205,13 @@ public:
return nullptr;
}
+ void MarkLabelUnused() const {
+ auto inner = std::get_if<ASTLabel>(&data);
+ if (inner) {
+ inner->unused = true;
+ }
+ }
+
Expr GetIfCondition() const {
auto inner = std::get_if<ASTIfThen>(&data);
if (inner) {