diff --git a/src/amd/compiler/aco_dead_code_analysis.cpp b/src/amd/compiler/aco_dead_code_analysis.cpp index 4555be58947..e1dbcd53621 100644 --- a/src/amd/compiler/aco_dead_code_analysis.cpp +++ b/src/amd/compiler/aco_dead_code_analysis.cpp @@ -91,11 +91,6 @@ dead_code_analysis(Program* program) process_block(ctx, program->blocks[next_block]); } - /* add one use to exec to prevent startpgm from being removed */ - aco_ptr& startpgm = program->blocks[0].instructions[0]; - assert(startpgm->opcode == aco_opcode::p_startpgm); - ctx.uses[startpgm->definitions.back().tempId()]++; - return ctx.uses; } diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h index 563004ed58a..e99922896c3 100644 --- a/src/amd/compiler/aco_ir.h +++ b/src/amd/compiler/aco_ir.h @@ -1784,6 +1784,7 @@ inline bool is_dead(const std::vector& uses, const Instruction* instr) { if (instr->definitions.empty() || instr->isBranch() || + instr->opcode == aco_opcode::p_startpgm || instr->opcode == aco_opcode::p_init_scratch || instr->opcode == aco_opcode::p_dual_src_export_gfx11) return false;