aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/ir_validate.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-04-10 10:49:59 +0200
committermarha <marha@users.sourceforge.net>2012-04-10 10:49:59 +0200
commitc6f80401dc533b04341afe8d596960d1bc25efce (patch)
tree2826007946218a8370d2eebc6aa32083618e2bfe /mesalib/src/glsl/ir_validate.cpp
parent31706e67674f308e3e7f2a8aaf02f1e0a00fbade (diff)
downloadvcxsrv-c6f80401dc533b04341afe8d596960d1bc25efce.tar.gz
vcxsrv-c6f80401dc533b04341afe8d596960d1bc25efce.tar.bz2
vcxsrv-c6f80401dc533b04341afe8d596960d1bc25efce.zip
fontconfig mesa xkeyboard-config xserver pixman git update 10 Apr 2012
Diffstat (limited to 'mesalib/src/glsl/ir_validate.cpp')
-rw-r--r--mesalib/src/glsl/ir_validate.cpp17
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