projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nir: Add a foreach_ssa_def function
[mesa.git]
/
src
/
glsl
/
ir_function_can_inline.cpp
diff --git
a/src/glsl/ir_function_can_inline.cpp
b/src/glsl/ir_function_can_inline.cpp
index 8bb8e0d9ed70f185b371ff4516f8f851419c8e69..7b15d5df178de0306fcc0afad6b395395d7b66be 100644
(file)
--- 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;
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);
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();
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;
v.num_returns++;
return v.num_returns == 1;