glsl: Don't inline function prototypes.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 25 Nov 2010 08:09:43 +0000 (00:09 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 25 Nov 2010 09:19:53 +0000 (01:19 -0800)
Currently, the standalone compiler tries to do function inlining before
linking shaders (including linking against the built-in functions).
This resulted in the built-in function _prototypes_ being inlined rather
than the actual function definition.

This is only known to fix a bug in the standalone compiler; most
programs should be unaffected.  Still, it seems like a good idea.

NOTE: This is a candidate for the 7.9 branch.

src/glsl/ir_function_can_inline.cpp

index f29f277ef4b50683848e08d8c3960e5ba7f43860..c367c30e44f37a7453481784d1f96b370ea2047a 100644 (file)
@@ -60,6 +60,8 @@ can_inline(ir_call *call)
 {
    ir_function_can_inline_visitor v;
    const ir_function_signature *callee = call->get_callee();
+   if (!callee->is_defined)
+      return false;
 
    v.run((exec_list *) &callee->body);