Mesa (master): glsl: change ast_type_qualifier bitset size to work around GCC 5.4 bug
Brian Paul
brianp at kemper.freedesktop.org
Wed May 9 01:34:31 UTC 2018
Module: Mesa
Branch: master
Commit: 901db25d5b7cd2ac2dd648b370c4bddf23dd5c44
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=901db25d5b7cd2ac2dd648b370c4bddf23dd5c44
Author: Brian Paul <brianp at vmware.com>
Date: Tue May 8 08:24:21 2018 -0600
glsl: change ast_type_qualifier bitset size to work around GCC 5.4 bug
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).
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-stable at lists.freedesktop.org
Reviewed-by: Charmaine Lee <charmainel at vmware.com>
Tested-by: Charmaine Lee <charmainel at vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
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 a1ec0d566f..9b88ff51d4 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 {
More information about the mesa-commit
mailing list