diff options
author | marha <marha@users.sourceforge.net> | 2012-04-10 11:33:12 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-04-10 11:33:12 +0200 |
commit | d79e641dea89c0d5d651b11971c4c9e14df34629 (patch) | |
tree | 59d636ef9c4c21906ea28ac719589f25b9794d0a /mesalib/src/glsl/ir_validate.cpp | |
parent | bf59764a4685c4bef029eddfa75d7496d2a91ae0 (diff) | |
parent | c6f80401dc533b04341afe8d596960d1bc25efce (diff) | |
download | vcxsrv-d79e641dea89c0d5d651b11971c4c9e14df34629.tar.gz vcxsrv-d79e641dea89c0d5d651b11971c4c9e14df34629.tar.bz2 vcxsrv-d79e641dea89c0d5d651b11971c4c9e14df34629.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
xorg-server/os/log.c
Diffstat (limited to 'mesalib/src/glsl/ir_validate.cpp')
-rw-r--r-- | mesalib/src/glsl/ir_validate.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp index 101d9992d..7efb43477 100644 --- a/mesalib/src/glsl/ir_validate.cpp +++ b/mesalib/src/glsl/ir_validate.cpp @@ -541,13 +541,24 @@ ir_validate::visit_enter(ir_assignment *ir) ir_visitor_status ir_validate::visit_enter(ir_call *ir) { - ir_function_signature *const callee = ir->get_callee(); + ir_function_signature *const callee = ir->callee; if (callee->ir_type != ir_type_function_signature) { printf("IR called by ir_call is not ir_function_signature!\n"); abort(); } + if (ir->return_deref) { + if (ir->return_deref->type != callee->return_type) { + printf("callee type %s does not match return storage type %s\n", + callee->return_type->name, ir->return_deref->type->name); + abort(); + } + } else if (callee->return_type != glsl_type::void_type) { + printf("ir_call has non-void callee but no return storage\n"); + abort(); + } + const exec_node *formal_param_node = callee->parameters.head; const exec_node *actual_param_node = ir->actual_parameters.head; while (true) { @@ -611,7 +622,9 @@ check_node_type(ir_instruction *ir, void *data) printf("Instruction node with unset type\n"); ir->print(); printf("\n"); } - assert(ir->type != glsl_type::error_type); + ir_rvalue *value = ir->as_rvalue(); + if (value != NULL) + assert(value->type != glsl_type::error_type); } void |