re PR c/39464 (Attribute may_alias causes invalid warning)
authorJakub Jelinek <jakub@redhat.com>
Tue, 18 Dec 2012 22:48:04 +0000 (23:48 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Dec 2012 22:48:04 +0000 (23:48 +0100)
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: r194594

gcc/c/ChangeLog
gcc/c/c-typeck.c
gcc/testsuite/ChangeLog

index e6ef408..f2ee562 100644 (file)
@@ -1,3 +1,10 @@
+2012-12-18  Jakub Jelinek  <jakub@redhat.com>
+
+       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.
+
 2012-11-16  Diego Novillo  <dnovillo@google.com>
 
        Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
index 2032f66..6dddf7a 100644 (file)
@@ -5543,8 +5543,10 @@ convert_for_assignment (location_t location, tree type, tree rhs,
       if (VOID_TYPE_P (ttl) || VOID_TYPE_P (ttr)
          || (target_cmp = comp_target_types (location, type, rhstype))
          || is_opaque_pointer
-         || (c_common_unsigned_type (mvl)
-             == c_common_unsigned_type (mvr)))
+         || ((c_common_unsigned_type (mvl)
+              == c_common_unsigned_type (mvr))
+             && c_common_signed_type (mvl)
+                == c_common_signed_type (mvr)))
        {
          if (pedantic
              && ((VOID_TYPE_P (ttl) && TREE_CODE (ttr) == FUNCTION_TYPE)
index e204408..f5c4184 100644 (file)
@@ -1,3 +1,8 @@
+2012-12-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/39464
+       * gcc.dg/pr39464.c: New test.
+
 2012-12-18  Ian Lance Taylor  <iant@google.com>
 
        PR go/55201