Hi, If we wanted to avoid growing the size of exec_list to four pointers instead of three, maybe we could store it in a union like below:
struct exec_list { union { struct { struct exec_node head_sentinel; struct exec_node *dummy_pointer_a; }; struct { struct exec_node *dummy_pointer_b; struct exec_node tail_sentinel; }; }; /* ... */ }; This is using anonymous structs and unions so that you wouldn't have to otherwise modify the patch. However we might have to avoid anonymous structs and unions on MSVC. If that's the case then it shouldn't be too much effort to just name them and modify all of the code that is accessing them. You could even put a static assert somewhere to make sure it works like this: STATIC_ASSERT(offsetof(struct exec_list, tail_sentinel.next) == offsetof(struct exec_list, head_sentinel.prev)); It looks like this might also require removing the constructor for exec_node because you can't have objects with constructors in a union apparently. If the constructor is just a safety net anyway then maybe this won't cause any trouble. I don't know. Also just to note, your patch doesn't apply with git-am. Have you cut-and-paste the patch file into an email? It looks like something has done some word wrapping which has corrupted it. Eg: diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp index cfe0df3..f5efcc5 100644 --- a/src/glsl/ir_validate.cpp +++ b/src/glsl/ir_validate.cpp @@ -842,8 +842,9 @@ ir_validate::visit_enter(ir_call *ir) abort(); } - const exec_node *formal_param_node = callee->parameters.head; - const exec_node *actual_param_node = ir->actual_parameters.head; + const exec_node *formal_param_node = callee->parameters.head_sentinel.next; This isn't a valid patch because all of the lines have to begin with either +, - or a space. If you can't use git-send-email for whatever reason, maybe you can find a way to disable the word wrapping? Regards, - Neil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev