]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/37743 (Bogus printf format warning with __builtin_bswap32.)
authorJakub Jelinek <jakub@redhat.com>
Wed, 19 Feb 2014 22:27:40 +0000 (23:27 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 19 Feb 2014 22:27:40 +0000 (23:27 +0100)
PR c/37743
* c-common.c (c_common_nodes_and_builtins): When initializing
c_uint{16,32,64}_type_node, also set corresponding
uint{16,32,64}_type_node to the same value.

* g++.dg/ext/builtin-bswap1.C: New test.
* c-c++-common/pr37743.c: New test.

From-SVN: r207924

gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/pr37743.c [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/builtin-bswap1.C [new file with mode: 0644]

index 972be93a6f60e88d9348aa9d9fcfbdf898c63797..2bb59357cb41f170aee41d54b0543a96827fd72e 100644 (file)
@@ -1,5 +1,10 @@
 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
 
+       PR c/37743
+       * c-common.c (c_common_nodes_and_builtins): When initializing
+       c_uint{16,32,64}_type_node, also set corresponding
+       uint{16,32,64}_type_node to the same value.
+
        PR c++/60267
        * c-pragma.c (init_pragma): Don't call cpp_register_deferred_pragma
        for PRAGMA_IVDEP if flag_preprocess_only.
index bfc57973f18798fb7897a1ec06d71a469af8e4bd..e23a9df23c7ead5a83f6744fd25488f8a0358f9d 100644 (file)
@@ -5610,13 +5610,13 @@ c_common_nodes_and_builtins (void)
     uint8_type_node =
       TREE_TYPE (identifier_global_value (c_get_ident (UINT8_TYPE)));
   if (UINT16_TYPE)
-    c_uint16_type_node =
+    c_uint16_type_node = uint16_type_node =
       TREE_TYPE (identifier_global_value (c_get_ident (UINT16_TYPE)));
   if (UINT32_TYPE)
-    c_uint32_type_node =
+    c_uint32_type_node = uint32_type_node =
       TREE_TYPE (identifier_global_value (c_get_ident (UINT32_TYPE)));
   if (UINT64_TYPE)
-    c_uint64_type_node =
+    c_uint64_type_node = uint64_type_node =
       TREE_TYPE (identifier_global_value (c_get_ident (UINT64_TYPE)));
   if (INT_LEAST8_TYPE)
     int_least8_type_node =
index ad6194f8b6ddbbf1e6b3596147691fd55358e64c..fd796d7179fd26d1e2436e308260c6ee38887860 100644 (file)
@@ -1,3 +1,9 @@
+2014-02-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/37743
+       * g++.dg/ext/builtin-bswap1.C: New test.
+       * c-c++-common/pr37743.c: New test.
+
 2014-02-19  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>
 
        * gcc.dg/decl-10.c: New test.
diff --git a/gcc/testsuite/c-c++-common/pr37743.c b/gcc/testsuite/c-c++-common/pr37743.c
new file mode 100644 (file)
index 0000000..2ea678e
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR c/37743 */
+/* This needs to be run only on targets where __UINT32_TYPE__ is defined
+   to unsigned int.  */
+/* { dg-do compile { target *-*-linux-gnu* } } */
+/* { dg-options "-Wformat" } */
+
+int foo (const char *, ...) __attribute__ ((format (printf, 1, 2)));
+
+void
+bar (unsigned int x)
+{
+  foo ("%x", __builtin_bswap32 (x));
+}
diff --git a/gcc/testsuite/g++.dg/ext/builtin-bswap1.C b/gcc/testsuite/g++.dg/ext/builtin-bswap1.C
new file mode 100644 (file)
index 0000000..787ecba
--- /dev/null
@@ -0,0 +1,22 @@
+// PR c/37743
+// { dg-do compile }
+
+#if defined(__UINT32_TYPE__) && defined(__INT32_TYPE__)
+
+void foo (__UINT32_TYPE__);
+void foo (__INT32_TYPE__);
+
+void
+bar (__UINT32_TYPE__ x)
+{
+  foo (__builtin_bswap32 (x));
+}
+
+#else
+
+void
+bar ()
+{
+}
+
+#endif