diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-08-21 17:54:47 +0200 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-10-05 00:52:51 +0200 |
commit | 0366c18d87f8c60ff6a99db668a7f2d810aaeeb0 (patch) | |
tree | fa1731f7cb9285ffe40f789447b528262edd618f /src/video_core | |
parent | Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes. (diff) | |
download | yuzu-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 |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/shader/ast.cpp | 4 | ||||
-rw-r--r-- | src/video_core/shader/ast.h | 8 |
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) { |