diff options
author | marha <marha@users.sourceforge.net> | 2013-07-12 08:22:55 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-07-12 08:22:55 +0200 |
commit | ffce4319c2fb6f4f663cc5a9660e1d5837fcde87 (patch) | |
tree | 603d92313dadf957fbaba55afa634de25d3bbd96 /mesalib/src/glsl/ast_to_hir.cpp | |
parent | c6069c33e3a4a6d48aa059dbe9a78702dabff9cc (diff) | |
download | vcxsrv-ffce4319c2fb6f4f663cc5a9660e1d5837fcde87.tar.gz vcxsrv-ffce4319c2fb6f4f663cc5a9660e1d5837fcde87.tar.bz2 vcxsrv-ffce4319c2fb6f4f663cc5a9660e1d5837fcde87.zip |
libxtrans fontconfig mesa xserver git update 12 Jul 2013
xserver commit 59a6d3f1eb03010ab831b32b03706a1d6143c732
libxtrans commit f6a161f2a003f4da0a2e414b4faa0ee0de0c01f0
fontconfig commit 338ffe6b886ad4ba86ff471cb59c4a5e5ffbe408
mesa commit 1b0d6aef03161eff4c9933548e964fec1258ea44
Diffstat (limited to 'mesalib/src/glsl/ast_to_hir.cpp')
-rw-r--r-- | mesalib/src/glsl/ast_to_hir.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index cbd9ea357..01203134d 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -1068,6 +1068,10 @@ ast_expression::hir(exec_list *instructions, loc = this->get_location(); switch (this->oper) { + case ast_aggregate: + assert(!"ast_aggregate: Should never get here."); + break; + case ast_assign: { op[0] = this->subexpressions[0]->hir(instructions, state); op[1] = this->subexpressions[1]->hir(instructions, state); @@ -4001,7 +4005,19 @@ ast_type_specifier::hir(exec_list *instructions, return NULL; } - if (this->structure != NULL) + /* _mesa_ast_set_aggregate_type() sets the <structure> field so that + * process_record_constructor() can do type-checking on C-style initializer + * expressions of structs, but ast_struct_specifier should only be translated + * to HIR if it is declaring the type of a structure. + * + * The ->is_declaration field is false for initializers of variables + * declared separately from the struct's type definition. + * + * struct S { ... }; (is_declaration = true) + * struct T { ... } t = { ... }; (is_declaration = true) + * S s = { ... }; (is_declaration = false) + */ + if (this->structure != NULL && this->structure->is_declaration) return this->structure->hir(instructions, state); return NULL; @@ -4229,6 +4245,8 @@ ast_interface_block::hir(exec_list *instructions, var_mode = ir_var_uniform; iface_type_name = "uniform"; } else { + var_mode = ir_var_auto; + iface_type_name = "UNKNOWN"; assert(!"interface block layout qualifier not found!"); } |