X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fir_function_can_inline.cpp;h=7b15d5df178de0306fcc0afad6b395395d7b66be;hb=193fea9eb6a7ad72360a3ac65b322bab081f9587;hp=8bb8e0d9ed70f185b371ff4516f8f851419c8e69;hpb=6c03c576cc49bbb008de66d374f4302ff0fe0390;p=mesa.git diff --git a/src/glsl/ir_function_can_inline.cpp b/src/glsl/ir_function_can_inline.cpp index 8bb8e0d9ed7..7b15d5df178 100644 --- a/src/glsl/ir_function_can_inline.cpp +++ b/src/glsl/ir_function_can_inline.cpp @@ -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;