summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2011-03-07 15:08:22 -0800
committerIan Romanick <ian.d.romanick@intel.com>2011-03-08 11:47:25 -0800
commit2df56b002dcc5d7e91515bd0ca741677f0172b38 (patch)
treee3da76a4254f5d6398e851ab13fd93b82aa20571 /src
parent719f07e45a4cd43d1edce196512b54f36ada53b1 (diff)
glsl: Function signatures cannot have NULL return type
The return type can be void, and this is the case where a `_ret_val' variable should not be declared.
Diffstat (limited to 'src')
-rw-r--r--src/glsl/ir_validate.cpp6
-rw-r--r--src/glsl/opt_function_inlining.cpp2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp
index 44d7549ea2..5e491db2c4 100644
--- a/src/glsl/ir_validate.cpp
+++ b/src/glsl/ir_validate.cpp
@@ -198,6 +198,12 @@ ir_validate::visit_enter(ir_function_signature *ir)
abort();
}
+ if (ir->return_type == NULL) {
+ printf("Function signature %p for function %s has NULL return type.\n",
+ ir, ir->function_name());
+ abort();
+ }
+
this->validate_ir(ir, this->data);
return visit_continue;
diff --git a/src/glsl/opt_function_inlining.cpp b/src/glsl/opt_function_inlining.cpp
index 2e7831dcbd..064089a9f7 100644
--- a/src/glsl/opt_function_inlining.cpp
+++ b/src/glsl/opt_function_inlining.cpp
@@ -126,7 +126,7 @@ ir_call::generate_inline(ir_instruction *next_ir)
parameters = new ir_variable *[num_parameters];
/* Generate storage for the return value. */
- if (this->callee->return_type) {
+ if (!this->callee->return_type->is_void()) {
retval = new(ctx) ir_variable(this->callee->return_type, "_ret_val",
ir_var_auto);
next_ir->insert_before(retval);