From 1ac13b9c058d6ff982b1fa6cf2fa1515a9692b5e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 20 Dec 2012 11:40:26 +0100 Subject: [PATCH] re PR c/39464 (Attribute may_alias causes invalid warning) PR c/39464 * c-typeck.c (convert_for_assignment): For -Wpointer-sign warning require that both c_common_unsigned_type as well as c_common_signed_type is the same for both mvl and mvr types. * gcc.dg/pr39464.c: New test. From-SVN: r194630 --- gcc/testsuite/gcc.dg/pr39464.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr39464.c diff --git a/gcc/testsuite/gcc.dg/pr39464.c b/gcc/testsuite/gcc.dg/pr39464.c new file mode 100644 index 00000000000..cd745406da8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr39464.c @@ -0,0 +1,19 @@ +/* PR c/39464 */ +/* { dg-do compile } */ +/* { dg-options "-Wall" } */ + +typedef int T __attribute__((may_alias)); +typedef unsigned int U __attribute__((may_alias)); + +void +foo (void *p) +{ + T *a = (int *) p; /* { dg-warning "initialization from incompatible pointer type" } */ + int *b = (T *) p; /* { dg-warning "initialization from incompatible pointer type" } */ + U *c = (unsigned int *) p; /* { dg-warning "initialization from incompatible pointer type" } */ + unsigned int *d = (U *) p; /* { dg-warning "initialization from incompatible pointer type" } */ + (void) a; + (void) b; + (void) c; + (void) d; +} -- 2.30.2