diff options
author | Matt Turner <[email protected]> | 2016-06-27 14:42:57 -0700 |
---|---|---|
committer | Matt Turner <[email protected]> | 2016-07-26 12:12:27 -0700 |
commit | d1f6f656973a2e18641441e3c97b30799a82de52 (patch) | |
tree | 9865209c0ac9013e682cde4862ed254a3e1c9a68 /src/compiler/glsl/ir_function.cpp | |
parent | 5d76690f170de9acc541aa6b4a507ccd20a78158 (diff) |
glsl: Separate overlapping sentinel nodes in exec_list.
I do appreciate the cleverness, but unfortunately it prevents a lot more
cleverness in the form of additional compiler optimizations brought on
by -fstrict-aliasing.
No difference in OglBatch7 (n=20).
Co-authored-by: Davin McCall <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/compiler/glsl/ir_function.cpp')
-rw-r--r-- | src/compiler/glsl/ir_function.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/glsl/ir_function.cpp b/src/compiler/glsl/ir_function.cpp index c0b62af11a9..3aeba8119a7 100644 --- a/src/compiler/glsl/ir_function.cpp +++ b/src/compiler/glsl/ir_function.cpp @@ -43,8 +43,8 @@ static parameter_list_match_t parameter_lists_match(_mesa_glsl_parse_state *state, const exec_list *list_a, const exec_list *list_b) { - const exec_node *node_a = list_a->head; - const exec_node *node_b = list_b->head; + const exec_node *node_a = list_a->get_head_raw(); + const exec_node *node_b = list_b->get_head_raw(); /* This is set to true if there is an inexact match requiring an implicit * conversion. */ @@ -222,9 +222,9 @@ is_best_inexact_overload(const exec_list *actual_parameters, if (*other == sig) continue; - const exec_node *node_a = sig->parameters.head; - const exec_node *node_b = (*other)->parameters.head; - const exec_node *node_p = actual_parameters->head; + const exec_node *node_a = sig->parameters.get_head_raw(); + const exec_node *node_b = (*other)->parameters.get_head_raw(); + const exec_node *node_p = actual_parameters->get_head_raw(); bool better_for_some_parameter = false; @@ -368,8 +368,8 @@ ir_function::matching_signature(_mesa_glsl_parse_state *state, static bool parameter_lists_match_exact(const exec_list *list_a, const exec_list *list_b) { - const exec_node *node_a = list_a->head; - const exec_node *node_b = list_b->head; + const exec_node *node_a = list_a->get_head_raw(); + const exec_node *node_b = list_b->get_head_raw(); for (/* empty */ ; !node_a->is_tail_sentinel() && !node_b->is_tail_sentinel() |