From: Jose Fonseca Date: Fri, 8 Jan 2016 14:03:38 +0000 (+0000) Subject: glsl: Ensure 64bits shift is used. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=208bfc493debe0344d0b9cb93975981f14412628;p=mesa.git glsl: Ensure 64bits shift is used. I believe that `1u << x`, where x >= 32 yields undefined results according to the C standard. Particularly MSVC says `warning C4334: '<<' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)`. Reviewed-by: Brian Paul --- diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp index 8763cc5b07d..3853abdb8e6 100644 --- a/src/glsl/link_varyings.cpp +++ b/src/glsl/link_varyings.cpp @@ -1110,8 +1110,8 @@ varying_matches::assign_locations(struct gl_shader_program *prog, */ for (unsigned j = 0; j < num_elements; j++) { while ((slot_end < MAX_VARYING * 4u) && - ((reserved_slots & (1u << *location / 4u) || - (reserved_slots & (1u << slot_end / 4u))))) { + ((reserved_slots & (UINT64_C(1) << *location / 4u) || + (reserved_slots & (UINT64_C(1) << slot_end / 4u))))) { *location = ALIGN(*location + 1, 4); slot_end = *location; @@ -1529,7 +1529,7 @@ reserved_varying_slot(struct gl_shader *stage, ir_variable_mode io_mode) ->count_attribute_slots(stage->Stage == MESA_SHADER_VERTEX); for (unsigned i = 0; i < num_elements; i++) { if (var_slot >= 0 && var_slot < MAX_VARYING) - slots |= 1u << var_slot; + slots |= UINT64_C(1) << var_slot; var_slot += 1; } }