mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-26 18:06:15 +08:00
re PR c++/33289 (__sprintf_chk etc. not DECL_ANTICIPATED)
PR c++/33289 * decl.c (builtin_function_1): Set DECL_ANTICIPATED also on __*_chk non-__builtin_* decls. * g++.dg/eh/builtin4.C: New test. From-SVN: r128160
This commit is contained in:
parent
62bedd31ed
commit
012c4da9f1
@ -3,6 +3,10 @@
|
||||
* decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
|
||||
decl if a prototype for XX is provided with throw().
|
||||
|
||||
PR c++/33289
|
||||
* decl.c (builtin_function_1): Set DECL_ANTICIPATED also
|
||||
on __*_chk non-__builtin_* decls.
|
||||
|
||||
2007-09-05 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/30302
|
||||
|
@ -3528,6 +3528,17 @@ builtin_function_1 (tree decl, tree context)
|
||||
anticipated but not actually declared. */
|
||||
if (name[0] != '_' || name[1] != '_')
|
||||
DECL_ANTICIPATED (decl) = 1;
|
||||
else if (strncmp (name + 2, "builtin_", strlen ("builtin_")) != 0)
|
||||
{
|
||||
size_t len = strlen (name);
|
||||
|
||||
/* Treat __*_chk fortification functions as anticipated as well,
|
||||
unless they are __builtin_*. */
|
||||
if (len > strlen ("___chk")
|
||||
&& memcmp (name + len - strlen ("_chk"),
|
||||
"_chk", strlen ("_chk") + 1) == 0)
|
||||
DECL_ANTICIPATED (decl) = 1;
|
||||
}
|
||||
|
||||
return decl;
|
||||
}
|
||||
|
@ -4,6 +4,9 @@
|
||||
* g++.dg/eh/builtin2.C: New test.
|
||||
* g++.dg/eh/builtin3.C: New test.
|
||||
|
||||
PR c++/33289
|
||||
* g++.dg/eh/builtin4.C: New test.
|
||||
|
||||
2007-09-05 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/dfp-dd.c: New test.
|
||||
|
6
gcc/testsuite/g++.dg/eh/builtin4.C
Normal file
6
gcc/testsuite/g++.dg/eh/builtin4.C
Normal file
@ -0,0 +1,6 @@
|
||||
// PR c++/33289
|
||||
// { dg-do compile }
|
||||
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
extern "C" int __sprintf_chk (char *__restrict, int, size_t, const char *, ...) throw ();
|
||||
extern "C" int __sprintf_chk (char *__restrict, int, size_t, const char *, ...) throw ();
|
Loading…
Reference in New Issue
Block a user