|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
2007-10-02 Jakub Jelinek <jakub@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
* decl.c (duplicate_decls): When redeclaring a builtin function,
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
keep the merged decl builtin whenever types match, even if new
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
decl defines a function.
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
* gcc.dg/builtins-85.c: New test.
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
* g++.dg/ext/builtin30.C: New test.
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
@@ -2137,39 +2137,37 @@ duplicate_decls (tree newdecl, tree oldd
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ /* If redeclaring a builtin function, it stays built in. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ if (types_match && DECL_BUILT_IN (olddecl))
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ /* If we're keeping the built-in definition, keep the rtl,
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ regardless of declaration matches. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ COPY_DECL_RTL (olddecl, newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ switch (fncode)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ /* If a compatible prototype of these builtin functions
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ is seen, assume the runtime implements it with the
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ expected semantics. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ case BUILT_IN_STPCPY:
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ if (builtin_decl_explicit_p (fncode))
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ set_builtin_decl_implicit_p (fncode, true);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ break;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ default:
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ break;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
if (new_defines_function)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
/* If defining a function declared with other language
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
linkage, use the previously declared language linkage. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
else if (types_match)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
{
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- /* If redeclaring a builtin function, and not a definition,
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- it stays built in. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- if (DECL_BUILT_IN (olddecl))
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- /* If we're keeping the built-in definition, keep the rtl,
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- regardless of declaration matches. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- COPY_DECL_RTL (olddecl, newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- switch (fncode)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- /* If a compatible prototype of these builtin functions
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- is seen, assume the runtime implements it with the
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- expected semantics. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- case BUILT_IN_STPCPY:
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- if (builtin_decl_explicit_p (fncode))
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- set_builtin_decl_implicit_p (fncode, true);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- break;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- default:
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- break;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
5c29a25 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
-
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
9ecc1a3 |
/* Don't clear out the arguments if we're just redeclaring a
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
9ecc1a3 |
function. */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
--- gcc/testsuite/gcc.dg/builtins-85.c.jj 2007-10-02 11:23:51.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
+++ gcc/testsuite/gcc.dg/builtins-85.c 2007-10-02 11:24:12.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
@@ -0,0 +1,25 @@
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+/* { dg-do compile } */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+/* { dg-options "-O2" } */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+typedef __SIZE_TYPE__ size_t;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern void __chk_fail (void);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern int snprintf (char *, size_t, const char *, ...);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+{
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ __chk_fail ();
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+char buf[10];
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+int
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+main (void)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+{
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ snprintf (buf, 10, "%d%d\n", 10, 10);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ return 0;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+/* { dg-final { scan-assembler "mysnprintf" } } */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+/* { dg-final { scan-assembler-not "__chk_fail" } } */
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
--- gcc/testsuite/g++.dg/ext/builtin30.C.jj 2007-10-02 11:19:45.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
a3e3a13 |
+++ gcc/testsuite/g++.dg/ext/builtin30.C 2007-10-02 11:23:26.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
@@ -0,0 +1,27 @@
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+// { dg-do compile }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+// { dg-options "-O2" }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+typedef __SIZE_TYPE__ size_t;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern "C" {
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern void __chk_fail (void);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern int snprintf (char *, size_t, const char *, ...);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+{
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ __chk_fail ();
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+char buf[10];
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+int
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+main (void)
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+{
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ snprintf (buf, 10, "%d%d\n", 10, 10);
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+ return 0;
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+// { dg-final { scan-assembler "mysnprintf" } }
|
|
![](https://seccdn.libravatar.org/avatar/134c60e534a993fcaf7da4634f4199430a0cdb8c7235fa894d5ee95eb7cc444d?s=16&d=retro) |
720e849 |
+// { dg-final { scan-assembler-not "__chk_fail" } }
|