radeonsi: ensure that temp array allocas are in the entry block

Otherwise, code generation fails. This has become necessary since some
shaders are wrapped in control flow.

Fixes: 081ac6e5c6 ("radeonsi/gfx9: always wrap GS and TCS in an if-block (v2)")
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle 2017-07-29 09:17:53 +02:00
parent dfe237aef9
commit 2879a602dd

View file

@ -756,7 +756,7 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base,
*/
if (array_size > 16 ||
!ctx->screen->llvm_has_working_vgpr_indexing) {
array_alloca = LLVMBuildAlloca(builder,
array_alloca = lp_build_alloca_undef(&ctx->gallivm,
LLVMArrayType(ctx->f32,
array_size), "array");
ctx->temp_array_allocas[id] = array_alloca;