On 05/08/2018 12:13 PM, Ian Romanick wrote: > On 05/08/2018 07:43 AM, Brian Paul wrote: >> Change the size of the bitset from 128 bits to 96. This works around an >> apparent GCC 5.4 bug in which bad SSE code is generated, leading to a >> crash in ast_type_qualifier::validate_in_qualifier() (ast_type.cpp:654). > > Is there a difference in the code quality on newer versions of GCC? > This work-around seems fine, but I wonder if it should be restricted to > the affected GCC versions.
Now that I've read the rest of the thread, Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> >> This can be repro'd with the Piglit test tests/spec/glsl-1.50/execution/ >> varying-struct-basic-gs-fs.shader_test >> >> Bugzilla:https://bugs.freedesktop.org/show_bug.cgi?id=105497 >> Cc: mesa-sta...@lists.freedesktop.org >> --- >> src/compiler/glsl/ast.h | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/src/compiler/glsl/ast.h b/src/compiler/glsl/ast.h >> index a1ec0d5..9b88ff5 100644 >> --- a/src/compiler/glsl/ast.h >> +++ b/src/compiler/glsl/ast.h >> @@ -474,7 +474,13 @@ enum { >> >> struct ast_type_qualifier { >> DECLARE_RALLOC_CXX_OPERATORS(ast_type_qualifier); >> - DECLARE_BITSET_T(bitset_t, 128); >> + /* Note: this bitset needs to have at least as many bits as the 'q' >> + * struct has flags, below. Previously, the size was 128 instead of 96. >> + * But an apparent bug in GCC 5.4.0 causes bad SSE code generation >> + * elsewhere, leading to a crash. 96 bits works around the issue. >> + * See https://bugs.freedesktop.org/show_bug.cgi?id=105497 >> + */ >> + DECLARE_BITSET_T(bitset_t, 96); >> >> union flags { >> struct { > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev