Am 09.08.2016 um 12:38 schrieb Nicolai Hähnle: > From: Nicolai Hähnle <nicolai.haeh...@amd.com> > > --- > src/gallium/auxiliary/gallivm/lp_bld_flow.c | 19 +++++++++++++++++++ > src/gallium/auxiliary/gallivm/lp_bld_flow.h | 5 +++++ > 2 files changed, 24 insertions(+) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c > b/src/gallium/auxiliary/gallivm/lp_bld_flow.c > index 9183f45..3c3f16c 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c > @@ -501,20 +501,39 @@ lp_build_alloca(struct gallivm_state *gallivm, > res = LLVMBuildAlloca(first_builder, type, name); > LLVMBuildStore(builder, LLVMConstNull(type), res); > > LLVMDisposeBuilder(first_builder); > > return res; > } > > > /** > + * Like lp_build_alloca_undef, but do not zero-initialize the variable.
Like lp_build_alloca For the series: Reviewed-by: Roland Scheidegger <srol...@vmware.com> > + */ > +LLVMValueRef > +lp_build_alloca_undef(struct gallivm_state *gallivm, > + LLVMTypeRef type, > + const char *name) > +{ > + LLVMBuilderRef first_builder = create_builder_at_entry(gallivm); > + LLVMValueRef res; > + > + res = LLVMBuildAlloca(first_builder, type, name); > + > + LLVMDisposeBuilder(first_builder); > + > + return res; > +} > + > + > +/** > * Allocate an array of scalars/vectors. > * > * mem2reg pass is not capable of promoting structs or arrays to registers, > but > * we still put it in the first block anyway as failure to put allocas in the > * first block may prevent the X86 backend from successfully align the stack > as > * required. > * > * Also the scalarrepl pass is supposedly more powerful and can promote > * arrays in many cases. > * > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h > b/src/gallium/auxiliary/gallivm/lp_bld_flow.h > index 083b0ad..674fc18 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h > +++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h > @@ -189,20 +189,25 @@ lp_build_endif(struct lp_build_if_state *ctx); > > LLVMBasicBlockRef > lp_build_insert_new_block(struct gallivm_state *gallivm, const char *name); > > LLVMValueRef > lp_build_alloca(struct gallivm_state *gallivm, > LLVMTypeRef type, > const char *name); > > LLVMValueRef > +lp_build_alloca_undef(struct gallivm_state *gallivm, > + LLVMTypeRef type, > + const char *name); > + > +LLVMValueRef > lp_build_array_alloca(struct gallivm_state *gallivm, > LLVMTypeRef type, > LLVMValueRef count, > const char *name); > > #ifdef __cplusplus > } > #endif > > #endif /* !LP_BLD_FLOW_H */ > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev