diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index a1c130fc06b..275a13873a3 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8804,6 +8804,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) } case nir_intrinsic_terminate: case nir_intrinsic_terminate_if: { + assert(ctx->cf_info.parent_loop.exit == NULL && "Terminate must not appear in loops."); Operand cond = Operand::c32(-1u); if (instr->intrinsic == nir_intrinsic_terminate_if) { Temp src = get_ssa_temp(ctx, instr->src[0].ssa); diff --git a/src/amd/compiler/aco_instruction_selection.h b/src/amd/compiler/aco_instruction_selection.h index 971b00ee9e7..77654e462ed 100644 --- a/src/amd/compiler/aco_instruction_selection.h +++ b/src/amd/compiler/aco_instruction_selection.h @@ -61,8 +61,8 @@ struct exec_info { struct cf_context { struct { - unsigned header_idx; - Block* exit; + unsigned header_idx = 0; + Block* exit = NULL; bool has_divergent_continue = false; bool has_divergent_break = false; } parent_loop;