From 46362db4a6bb6db64727d3adcb16ca8f32aa70fb Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 21 Sep 2015 08:22:12 -0700 Subject: [PATCH] nir/builder: Don't use designated initializers Designated initializers are not allowed in C++ (not even C++11). Since nir_lower_samplers is now using nir_builder, and nir_lower_samplers is in C++, this breaks the build on some compilers. Aparently, GCC 5 allows it in some limited extent because mesa still builds on my system without this patch. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92052 Reviewed-by: Kenneth Graunke --- src/glsl/nir/nir_builder.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h index 8db5fcf039d..624329d0a8a 100644 --- a/src/glsl/nir/nir_builder.h +++ b/src/glsl/nir/nir_builder.h @@ -76,21 +76,36 @@ nir_build_imm(nir_builder *build, unsigned num_components, nir_const_value value static inline nir_ssa_def * nir_imm_float(nir_builder *build, float x) { - nir_const_value v = { { .f = {x, 0, 0, 0} } }; + nir_const_value v; + + memset(&v, 0, sizeof(v)); + v.f[0] = x; + return nir_build_imm(build, 1, v); } static inline nir_ssa_def * nir_imm_vec4(nir_builder *build, float x, float y, float z, float w) { - nir_const_value v = { { .f = {x, y, z, w} } }; + nir_const_value v; + + memset(&v, 0, sizeof(v)); + v.f[0] = x; + v.f[1] = y; + v.f[2] = z; + v.f[3] = w; + return nir_build_imm(build, 4, v); } static inline nir_ssa_def * nir_imm_int(nir_builder *build, int x) { - nir_const_value v = { { .i = {x, 0, 0, 0} } }; + nir_const_value v; + + memset(&v, 0, sizeof(v)); + v.i[0] = x; + return nir_build_imm(build, 1, v); } -- 2.30.2