mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-15 13:10:31 +01:00
ir_reader: Read record_refs.
Also changes the print visitor to not emit extraneous parenthesis.
This commit is contained in:
parent
350bd70348
commit
13e1b6b725
2 changed files with 19 additions and 3 deletions
|
|
@ -181,7 +181,7 @@ void ir_print_visitor::visit(ir_dereference_record *ir)
|
|||
{
|
||||
printf("(record_ref ");
|
||||
ir->record->accept(this);
|
||||
printf("(%s)) ", ir->field);
|
||||
printf(" %s) ", ir->field);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -862,6 +862,22 @@ read_array_ref(_mesa_glsl_parse_state *st, s_list *list)
|
|||
static ir_dereference *
|
||||
read_record_ref(_mesa_glsl_parse_state *st, s_list *list)
|
||||
{
|
||||
ir_read_error(st, list, "FINISHME: record refs not yet supported.");
|
||||
return NULL;
|
||||
if (list->length() != 3) {
|
||||
ir_read_error(st, list, "expected (record_ref <rvalue> <field>)");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s_expression *subj_expr = (s_expression*) list->subexpressions.head->next;
|
||||
ir_rvalue *subject = read_rvalue(st, subj_expr);
|
||||
if (subject == NULL) {
|
||||
ir_read_error(st, NULL, "when reading the subject of a record_ref");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s_symbol *field = SX_AS_SYMBOL(subj_expr->next);
|
||||
if (field == NULL) {
|
||||
ir_read_error(st, list, "expected (record_ref ... <field name>)");
|
||||
return NULL;
|
||||
}
|
||||
return new ir_dereference_record(subject, field->value());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue