configurator: hide type punning
authorCody P Schafer <dev@codyps.com>
Sun, 16 Aug 2015 22:54:37 +0000 (18:54 -0400)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 19 Aug 2015 01:23:01 +0000 (10:53 +0930)
As for the type punning: gcc-5.1 with optimization (at least) warns about type punning in
the previous example. The new usage should be exactly equivalent to the
old, but just seperates the cast and deref into 2 statements. Frankly,
I'm suprised gcc's type-punning analysis is so limited.

Signed-off-by: Cody P Schafer <dev@codyps.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
tools/configurator/configurator.c

index a162ee678dd12c5b46b2ec6a80b1a8e0f08f3410..119404f54f855e184e891b9dad0ff99da8961e61 100644 (file)
@@ -282,7 +282,8 @@ static struct test tests[] = {
          "int main(int argc, char *argv[]) {\n"
          "     char pad[sizeof(int *) * 1];\n"
          "     strncpy(pad, argv[0], sizeof(pad));\n"
-         "     return *(int *)(pad) == *(int *)(pad + 1);\n"
+         "     int *x = (int *)pad, *y = (int *)(pad + 1);\n"
+         "     return *x == *y;\n"
          "}\n" },
        { "HAVE_UTIME", DEFINES_FUNC, NULL, NULL,
          "#include <sys/types.h>\n"