Default function parameters to 'in' instead of auto
[mesa.git] / ast_to_hir.cpp
index 3c4b69fdc241f37de0630835c1640946136167a2..c791aec3e243f1ff017369cc4655985b0775adc3 100644 (file)
@@ -725,7 +725,7 @@ ast_function_expression::hir(exec_list *instructions,
     */
    (void) instructions;
    (void) state;
-   return NULL;
+   return ir_call::get_error_instruction();
 }
 
 ir_instruction *
@@ -1007,7 +1007,12 @@ ast_parameter_declarator::hir(exec_list *instructions,
     * FINISHME: complete handling of constant expressions.
     */
 
+   /* Apply any specified qualifiers to the parameter declaration.  Note that
+    * for function parameters the default mode is 'in'.
+    */
    apply_type_qualifier_to_variable(& this->type->qualifier, var, state);
+   if (var->mode == ir_var_auto)
+      var->mode = ir_var_in;
 
    instructions->push_tail(var);
 
@@ -1155,7 +1160,7 @@ ast_function_definition::hir(exec_list *instructions,
    foreach_iter(exec_list_iterator, iter, parameters) {
       ir_variable *const var = (ir_variable *) iter.get();
 
-      assert(var->mode == ir_op_var_decl);
+      assert(((ir_instruction *)var)->mode == ir_op_var_decl);
 
       iter.remove();
       instructions->push_tail(var);