aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-03-31 19:46:38 -0300
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-22 21:51:25 -0400
commit5f22cd89e20cd39c1395b7bd3b8e667a40f53751 (patch)
treecbeafb6b9b75150822c216eb41ff7d098872b3d9 /src
parenteaafd53cfedf0c7ae40a3f790af5f0aec63ebd13 (diff)
shader: Fix constant propagation to use reverse post order
Diffstat (limited to 'src')
-rw-r--r--src/shader_recompiler/ir_opt/constant_propagation_pass.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp b/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
index 052f1609b1..7da4d50efd 100644
--- a/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
+++ b/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
@@ -5,6 +5,7 @@
#include <algorithm>
#include <tuple>
#include <type_traits>
+#include <ranges>
#include "common/bit_cast.h"
#include "common/bit_util.h"
@@ -424,7 +425,7 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) {
} // Anonymous namespace
void ConstantPropagationPass(IR::Program& program) {
- for (IR::Block* const block : program.post_order_blocks) {
+ for (IR::Block* const block : program.post_order_blocks | std::views::reverse) {
for (IR::Inst& inst : block->Instructions()) {
ConstantPropagation(*block, inst);
}