diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-02-19 23:27:40 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-02-19 23:27:40 +0100 |
commit | cca615afc0ba4f42c57636c910ffb0d3a5c3a169 (patch) | |
tree | ca2875d388e570e95882bcfda1b550dd08df156b /gcc | |
parent | 9254148e5b99e09b9f1da76f74a42bed3d88a2dc (diff) | |
download | gcc-cca615afc0ba4f42c57636c910ffb0d3a5c3a169.zip gcc-cca615afc0ba4f42c57636c910ffb0d3a5c3a169.tar.gz gcc-cca615afc0ba4f42c57636c910ffb0d3a5c3a169.tar.bz2 |
re PR c/37743 (Bogus printf format warning with __builtin_bswap32.)
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/pr37743.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/builtin-bswap1.C | 22 |
5 files changed, 49 insertions, 3 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 972be93..2bb5935 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -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. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index bfc5797..e23a9df 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -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 = diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ad6194f..fd796d7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..2ea678e --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr37743.c @@ -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 index 0000000..787ecba --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/builtin-bswap1.C @@ -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 |