tgsi/scan: fix loop exit point in tgsi_scan_tess_ctrl()
authorTimothy Arceri <tarceri@itsqueeze.com>
Fri, 14 Dec 2018 04:09:38 +0000 (15:09 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Tue, 1 Jan 2019 22:53:01 +0000 (09:53 +1100)
This just happened not to crash/assert because all loops have at
least 1 if-statement and due to a second bug we end up matching
the same ENDIF to exit both the iteration over the if-statment
and the loop.

The second bug is fixed in the following patch.

Fixes: 386d165d8d09 ("tgsi/scan: add a new pass that analyzes tess factor writes")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/tgsi/tgsi_scan.c

index d776fc7bef10538df509b95146b55bfe4ec833d9..d7f7a172ee16a18fe0784322870dabf39bc7fbcd 100644 (file)
@@ -1172,7 +1172,7 @@ tgsi_scan_tess_ctrl(const struct tgsi_token *tokens,
 
       case TGSI_OPCODE_BGNLOOP:
          cond_block_tf_writemask |=
-            get_block_tessfactor_writemask(info, &parse, TGSI_OPCODE_ENDIF);
+            get_block_tessfactor_writemask(info, &parse, TGSI_OPCODE_ENDLOOP);
          continue;
 
       case TGSI_OPCODE_BARRIER: