Looks good to me FWIW. Usually one uses a union for avoid breaking strict-aliasing rules, but your memcpy approach should produce just as good code with less typing.
The only proper fix here would be to make struct tgsi_token an union of all possible token types. Jose ________________________________________ From: mesa-dev-bounces+jfonseca=vmware....@lists.freedesktop.org [mesa-dev-bounces+jfonseca=vmware....@lists.freedesktop.org] On Behalf Of Marek Olšák [mar...@gmail.com] Sent: Saturday, December 11, 2010 8:04 To: mesa-dev@lists.freedesktop.org Subject: [Mesa-dev] [PATCH] tgsi: fix rbug compile error ../mesa/src/gallium/auxiliary/tgsi/tgsi_parse.h:139: error: dereferencing pointer ‘tokens.25’ does break strict-aliasing rules Signed-off-by: Marek Olšák <mar...@gmail.com> --- src/gallium/auxiliary/tgsi/tgsi_parse.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_parse.h b/src/gallium/auxiliary/tgsi/tgsi_parse.h index d4df585..2aafa2a 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_parse.h +++ b/src/gallium/auxiliary/tgsi/tgsi_parse.h @@ -136,7 +136,8 @@ tgsi_parse_token( static INLINE unsigned tgsi_num_tokens(const struct tgsi_token *tokens) { - struct tgsi_header header = *(const struct tgsi_header *) tokens; + struct tgsi_header header; + memcpy(&header, tokens, sizeof(header)); return header.HeaderSize + header.BodySize; } -- 1.7.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev