util/hash_set: Rework the API to know about hashing
[mesa.git] / src / glsl / ir_function_can_inline.cpp
index 8bb8e0d9ed70f185b371ff4516f8f851419c8e69..7b15d5df178de0306fcc0afad6b395395d7b66be 100644 (file)
@@ -59,12 +59,17 @@ bool
 can_inline(ir_call *call)
 {
    ir_function_can_inline_visitor v;
-   const ir_function_signature *callee = call->get_callee();
+   const ir_function_signature *callee = call->callee;
+   if (!callee->is_defined)
+      return false;
 
    v.run((exec_list *) &callee->body);
 
+   /* If the function is empty (no last instruction) or does not end with a
+    * return statement, we need to count the implicit return.
+    */
    ir_instruction *last = (ir_instruction *)callee->body.get_tail();
-   if (last && !last->as_return())
+   if (last == NULL || !last->as_return())
       v.num_returns++;
 
    return v.num_returns == 1;