From d2afc874452a84965ee71c96f80e1d124c211ff4 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 12 Jul 2010 10:13:20 -0700 Subject: [PATCH] glsl2: Check when inlining a bare function call that it actually is. It would be easy to miss an entry either of the two visitors involved that would result in trying to ir->remove() the call to remove it from the instruction stream when really it's part of an expression tree that wasn't flattened. --- src/glsl/ir_function_inlining.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/glsl/ir_function_inlining.cpp b/src/glsl/ir_function_inlining.cpp index 6fe1264b0a4..8c545aaa6b7 100644 --- a/src/glsl/ir_function_inlining.cpp +++ b/src/glsl/ir_function_inlining.cpp @@ -233,6 +233,12 @@ ir_visitor_status ir_function_inlining_visitor::visit_enter(ir_call *ir) { if (can_inline(ir)) { + /* If the call was part of some tree, then it should have been + * flattened out or we shouldn't have seen it because of a + * visit_continue_with_parent in this visitor. + */ + assert(ir == base_ir); + (void) ir->generate_inline(ir); ir->remove(); this->progress = true; -- 2.30.2