diff options
author | Olivier Galibert <[email protected]> | 2012-05-02 23:11:41 +0200 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2012-05-08 12:55:52 -0700 |
commit | 2ff7b121cad2892698ff1aa7690dd361ea2739a7 (patch) | |
tree | 36f37ef92994c7cd82b50fe7e35fb466fbb654f3 | |
parent | 8ec01ba2ff95449674c779c05afcd32bbf7dbdc8 (diff) |
glsl: Add an origin pointer in the function signature object.
This points to the object with the function body, allowing us to map
from a built-in prototype to the actual body with IR code to execute.
Signed-off-by: Olivier Galibert <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/glsl/ir.cpp | 1 | ||||
-rw-r--r-- | src/glsl/ir.h | 3 | ||||
-rw-r--r-- | src/glsl/ir_clone.cpp | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index 839d5b3fdb4..970d8f3bac0 100644 --- a/src/glsl/ir.cpp +++ b/src/glsl/ir.cpp @@ -1481,6 +1481,7 @@ ir_function_signature::ir_function_signature(const glsl_type *return_type) { this->ir_type = ir_type_function_signature; this->is_builtin = false; + this->origin = NULL; } diff --git a/src/glsl/ir.h b/src/glsl/ir.h index fe950861620..92be063747f 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -572,6 +572,9 @@ private: /** Function of which this signature is one overload. */ class ir_function *_function; + /** Function signature of which this one is a prototype clone */ + const ir_function_signature *origin; + friend class ir_function; }; diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp index 5046ac372a1..591fe7b7756 100644 --- a/src/glsl/ir_clone.cpp +++ b/src/glsl/ir_clone.cpp @@ -324,6 +324,7 @@ ir_function_signature::clone_prototype(void *mem_ctx, struct hash_table *ht) con copy->is_defined = false; copy->is_builtin = this->is_builtin; + copy->origin = this; /* Clone the parameter list, but NOT the body. */ |