diff mbox

[C++] Warn on redefinition of builtin functions (PR c++/71973)

Message ID AM4PR0701MB21623BE310B155B719C03175E4A00@AM4PR0701MB2162.eurprd07.prod.outlook.com
State New
Headers show

Commit Message

Bernd Edlinger Nov. 2, 2016, 9:15 p.m. UTC
On 11/02/16 18:51, Jason Merrill wrote:
> On 11/02/2016 02:11 AM, Bernd Edlinger wrote:

>> On 11/01/16 19:15, Bernd Edlinger wrote:

>>> On 11/01/16 18:11, Jason Merrill wrote:

>>>> On Tue, Nov 1, 2016 at 11:45 AM, Bernd Edlinger

>>>> <bernd.edlinger@hotmail.de> wrote:

>>>>> On 11/01/16 16:20, Jason Merrill wrote:

>>>>>> On 10/17/2016 03:18 PM, Bernd Edlinger wrote:

>>>>>> I'm not even sure we need a new warning.  Can we combine this warning

>>>>>> with the block that currently follows?

>>>>>

>>>>> After 20 years of not having a warning on that,

>>>>> an implicitly enabled warning would at least break lots of bogus

>>>>> test cases.

>>>>

>>>> Would it, though?  Which test cases still break with the current patch?

>>>

>>> Less than before, but there are still at least a few of them.

>>>

>>> I can make a list and send it tomorrow.

>>

>> FAIL: g++.dg/cpp1y/lambda-generic-udt.C  -std=gnu++14 (test for excess

>> errors)

>> FAIL: g++.dg/cpp1y/lambda-generic-xudt.C  -std=gnu++14 (test for excess

>> errors)

>> FAIL: g++.dg/init/new15.C  -std=c++11 (test for excess errors)

>> FAIL: g++.dg/init/new15.C  -std=c++14 (test for excess errors)

>> FAIL: g++.dg/init/new15.C  -std=c++98 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++11 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++14 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++98 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++11 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++14 (test for excess errors)

>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++98 (test for excess errors)

>> FAIL: g++.dg/tc1/dr20.C  -std=c++11 (test for excess errors)

>> FAIL: g++.dg/tc1/dr20.C  -std=c++14 (test for excess errors)

>> FAIL: g++.dg/tc1/dr20.C  -std=c++98 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++11 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++14 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++98 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++11 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++14 (test for excess errors)

>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++98 (test for excess errors)

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>> -flto-partition=1to1 -fno-use-linker-plugin

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>> -flto-partition=none -fuse-linker-plugin

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>> -fuse-linker-plugin -fno-fat-lto-objects

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>> -flto-partition=1to1 -fno-use-linker-plugin

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>> -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects

>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>> -fuse-linker-plugin

>> FAIL: g++.dg/lto/pr68811 cp_lto_pr68811_0.o assemble, -O2

>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++11 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++14 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++98 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++11 (test for excess errors)

>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++14 (test for excess errors)

>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++98 (test for excess errors)

>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++11 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++14 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++11 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++14 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++98 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++11 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++14 (test for excess

>> errors)

>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++98 (test for excess

>> errors)

>>

>>

>> The lto test case does emit the warning when assembling, but

>> it still produces an executable and even executes it.

>>

>> Also g++.dg/cpp1y/lambda-generic-udt.C, g++.dg/tc1/dr20.C

>> and g++.old-deja/g++.other/vbase5.C are execution tests.

>>

>> So I was wrong to assume these were all compile-only tests.

>>

>> I think that list should be fixable, if we decide to enable

>> the warning by default.

>

> Yes, either by fixing the prototypes or disabling the warning.

>


Yes, I am inclined to enable the warning by default now.

Most of the test cases are fixable in a fairly obvious way,
see attachment.

But I am unsure about g++.old-deja/g++.other/builtins10.C:

// { dg-do assemble  }
// Test that built-in functions don't warn when prototyped without 
arguments.
// Origin: PR c++/9367
// Copyright (C) 2003 Free Software Foundation.

extern "C" int snprintf();


PR c++/9367 was a *bogus* warning.  Either delete the test case, or
change the expectation to the new warning?

But the libitm warnings are a real bug, the prototypes of the _ITM_
builtin functions and in the libitm.h simply do not match, that was
just not visible before because the test suite does apparently
not use -Wall.


Bernd.

Comments

Jason Merrill Nov. 3, 2016, 7:58 p.m. UTC | #1
On Wed, Nov 2, 2016 at 5:15 PM, Bernd Edlinger
<bernd.edlinger@hotmail.de> wrote:
> On 11/02/16 18:51, Jason Merrill wrote:

>> On 11/02/2016 02:11 AM, Bernd Edlinger wrote:

>>> On 11/01/16 19:15, Bernd Edlinger wrote:

>>>> On 11/01/16 18:11, Jason Merrill wrote:

>>>>> On Tue, Nov 1, 2016 at 11:45 AM, Bernd Edlinger

>>>>> <bernd.edlinger@hotmail.de> wrote:

>>>>>> On 11/01/16 16:20, Jason Merrill wrote:

>>>>>>> On 10/17/2016 03:18 PM, Bernd Edlinger wrote:

>>>>>>> I'm not even sure we need a new warning.  Can we combine this warning

>>>>>>> with the block that currently follows?

>>>>>>

>>>>>> After 20 years of not having a warning on that,

>>>>>> an implicitly enabled warning would at least break lots of bogus

>>>>>> test cases.

>>>>>

>>>>> Would it, though?  Which test cases still break with the current patch?

>>>>

>>>> Less than before, but there are still at least a few of them.

>>>>

>>>> I can make a list and send it tomorrow.

>>>

>>> FAIL: g++.dg/cpp1y/lambda-generic-udt.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.dg/cpp1y/lambda-generic-xudt.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++11 (test for excess errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++14 (test for excess errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++98 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++11 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++14 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++98 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -flto-partition=1to1 -fno-use-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -flto-partition=none -fuse-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -fuse-linker-plugin -fno-fat-lto-objects

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -flto-partition=1to1 -fno-use-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -fuse-linker-plugin

>>> FAIL: g++.dg/lto/pr68811 cp_lto_pr68811_0.o assemble, -O2

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++98 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++98 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++98 (test for excess

>>> errors)

>>>

>>>

>>> The lto test case does emit the warning when assembling, but

>>> it still produces an executable and even executes it.

>>>

>>> Also g++.dg/cpp1y/lambda-generic-udt.C, g++.dg/tc1/dr20.C

>>> and g++.old-deja/g++.other/vbase5.C are execution tests.

>>>

>>> So I was wrong to assume these were all compile-only tests.

>>>

>>> I think that list should be fixable, if we decide to enable

>>> the warning by default.

>>

>> Yes, either by fixing the prototypes or disabling the warning.

>>

>

> Yes, I am inclined to enable the warning by default now.

>

> Most of the test cases are fixable in a fairly obvious way,

> see attachment.

>

> But I am unsure about g++.old-deja/g++.other/builtins10.C:

>

> // { dg-do assemble  }

> // Test that built-in functions don't warn when prototyped without

> arguments.

> // Origin: PR c++/9367

> // Copyright (C) 2003 Free Software Foundation.

>

> extern "C" int snprintf();

>

>

> PR c++/9367 was a *bogus* warning.  Either delete the test case, or

> change the expectation to the new warning?


I think change the expectation to the new warning.  I think we're far
enough away from the K&R days that we don't need to allow that sort of
thing anymore.

> But the libitm warnings are a real bug, the prototypes of the _ITM_

> builtin functions and in the libitm.h simply do not match, that was

> just not visible before because the test suite does apparently

> not use -Wall.


Oops!

Jason
Bernd Edlinger Nov. 11, 2016, 2:24 p.m. UTC | #2
Ping...

the latest version of the patch was here:
https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00505.html

Thanks
Bernd.

On 11/02/16 22:15, Bernd Edlinger wrote:
> On 11/02/16 18:51, Jason Merrill wrote:

>> On 11/02/2016 02:11 AM, Bernd Edlinger wrote:

>>> On 11/01/16 19:15, Bernd Edlinger wrote:

>>>> On 11/01/16 18:11, Jason Merrill wrote:

>>>>> On Tue, Nov 1, 2016 at 11:45 AM, Bernd Edlinger

>>>>> <bernd.edlinger@hotmail.de> wrote:

>>>>>> On 11/01/16 16:20, Jason Merrill wrote:

>>>>>>> On 10/17/2016 03:18 PM, Bernd Edlinger wrote:

>>>>>>> I'm not even sure we need a new warning.  Can we combine this

>>>>>>> warning

>>>>>>> with the block that currently follows?

>>>>>>

>>>>>> After 20 years of not having a warning on that,

>>>>>> an implicitly enabled warning would at least break lots of bogus

>>>>>> test cases.

>>>>>

>>>>> Would it, though?  Which test cases still break with the current

>>>>> patch?

>>>>

>>>> Less than before, but there are still at least a few of them.

>>>>

>>>> I can make a list and send it tomorrow.

>>>

>>> FAIL: g++.dg/cpp1y/lambda-generic-udt.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.dg/cpp1y/lambda-generic-xudt.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++11 (test for excess errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++14 (test for excess errors)

>>> FAIL: g++.dg/init/new15.C  -std=c++98 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-1.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/ipa/inline-2.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++11 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++14 (test for excess errors)

>>> FAIL: g++.dg/tc1/dr20.C  -std=c++98 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-1.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++11 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++14 (test for excess errors)

>>> FAIL: g++.dg/tree-ssa/inline-2.C  -std=gnu++98 (test for excess errors)

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -flto-partition=1to1 -fno-use-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -flto-partition=none -fuse-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto

>>> -fuse-linker-plugin -fno-fat-lto-objects

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -flto-partition=1to1 -fno-use-linker-plugin

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects

>>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto

>>> -fuse-linker-plugin

>>> FAIL: g++.dg/lto/pr68811 cp_lto_pr68811_0.o assemble, -O2

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.law/except1.C  -std=gnu++98 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.mike/p700.C  -std=gnu++98 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/builtins10.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/realloc.C  -std=c++98 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++11 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++14 (test for excess

>>> errors)

>>> FAIL: g++.old-deja/g++.other/vbase5.C  -std=c++98 (test for excess

>>> errors)

>>>

>>>

>>> The lto test case does emit the warning when assembling, but

>>> it still produces an executable and even executes it.

>>>

>>> Also g++.dg/cpp1y/lambda-generic-udt.C, g++.dg/tc1/dr20.C

>>> and g++.old-deja/g++.other/vbase5.C are execution tests.

>>>

>>> So I was wrong to assume these were all compile-only tests.

>>>

>>> I think that list should be fixable, if we decide to enable

>>> the warning by default.

>>

>> Yes, either by fixing the prototypes or disabling the warning.

>>

>

> Yes, I am inclined to enable the warning by default now.

>

> Most of the test cases are fixable in a fairly obvious way,

> see attachment.

>

> But I am unsure about g++.old-deja/g++.other/builtins10.C:

>

> // { dg-do assemble  }

> // Test that built-in functions don't warn when prototyped without

> arguments.

> // Origin: PR c++/9367

> // Copyright (C) 2003 Free Software Foundation.

>

> extern "C" int snprintf();

>

>

> PR c++/9367 was a *bogus* warning.  Either delete the test case, or

> change the expectation to the new warning?

>

> But the libitm warnings are a real bug, the prototypes of the _ITM_

> builtin functions and in the libitm.h simply do not match, that was

> just not visible before because the test suite does apparently

> not use -Wall.

>

>

> Bernd.
diff mbox

Patch

Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
===================================================================
--- gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(revision 241752)
+++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C	(working copy)
@@ -14,7 +14,7 @@ 
   bool shadow = false;
 };
 
-extern "C" void printf(...);
+extern "C" int printf(const char*, ...);
 #define assert(e) if (e); else \
 		 printf ("%s:%d: !(%s)\n", __FILE__, __LINE__, #e), __builtin_abort ();
 
Index: gcc/testsuite/g++.dg/init/new15.C
===================================================================
--- gcc/testsuite/g++.dg/init/new15.C	(revision 241752)
+++ gcc/testsuite/g++.dg/init/new15.C	(working copy)
@@ -1,6 +1,6 @@ 
 // PR c++/9782
 
-extern "C" void printf(const char*, ...);
+extern "C" int printf(const char*, ...);
 
 template <int>
 struct A {
Index: gcc/testsuite/g++.dg/ipa/inline-1.C
===================================================================
--- gcc/testsuite/g++.dg/ipa/inline-1.C	(revision 241752)
+++ gcc/testsuite/g++.dg/ipa/inline-1.C	(working copy)
@@ -3,7 +3,7 @@ 
 /* { dg-add-options bind_pic_locally } */
 
 namespace std {
-  extern "C" void puts(const char *s);
+  extern "C" int puts(const char *s);
 }
 
 template <class T, class E> void
Index: gcc/testsuite/g++.dg/ipa/inline-2.C
===================================================================
--- gcc/testsuite/g++.dg/ipa/inline-2.C	(revision 241752)
+++ gcc/testsuite/g++.dg/ipa/inline-2.C	(working copy)
@@ -3,7 +3,7 @@ 
 /* { dg-add-options bind_pic_locally } */
 
 namespace std {
-  extern "C" void puts(const char *s);
+  extern "C" int puts(const char *s);
 }
 
 template <class T, class E> void
Index: gcc/testsuite/g++.dg/lto/20080908-1_0.C
===================================================================
--- gcc/testsuite/g++.dg/lto/20080908-1_0.C	(revision 241752)
+++ gcc/testsuite/g++.dg/lto/20080908-1_0.C	(working copy)
@@ -1,5 +1,5 @@ 
 /* { dg-lto-do run }  */
-extern "C" { extern void *memcpy (void *, const void *, unsigned); }
+extern "C" { extern void *memcpy (void *, const void *, __SIZE_TYPE__); }
 
 inline int
 bci (const float &source)
Index: gcc/testsuite/g++.dg/lto/pr68811_0.C
===================================================================
--- gcc/testsuite/g++.dg/lto/pr68811_0.C	(revision 241752)
+++ gcc/testsuite/g++.dg/lto/pr68811_0.C	(working copy)
@@ -1,5 +1,5 @@ 
 // { dg-lto-do link }
-/* { dg-lto-options "-O2  -w" } */
+/* { dg-lto-options "-O2\\ -w" } */
 // { dg-extra-ld-options "-r -nostdlib" }
 extern "C" char *strcpy(char *, const char *);
 char InitXPCOMGlue_lastSlash;
Index: gcc/testsuite/g++.dg/tc1/dr20.C
===================================================================
--- gcc/testsuite/g++.dg/tc1/dr20.C	(revision 241752)
+++ gcc/testsuite/g++.dg/tc1/dr20.C	(working copy)
@@ -2,7 +2,7 @@ 
 // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
 // DR20: Some clarifications needed for 12.8 para 15 
 
-extern "C" void printf(const char*, ...);
+extern "C" int printf(const char*, ...);
 extern "C" void abort(void);
 
 int count = 0;
Index: gcc/testsuite/g++.dg/tree-ssa/inline-1.C
===================================================================
--- gcc/testsuite/g++.dg/tree-ssa/inline-1.C	(revision 241752)
+++ gcc/testsuite/g++.dg/tree-ssa/inline-1.C	(working copy)
@@ -3,7 +3,7 @@ 
 /* { dg-add-options bind_pic_locally } */
 
 namespace std {
-  extern "C" void puts(const char *s);
+  extern "C" int puts(const char *s);
 }
 
 template <class T, class E> void
Index: gcc/testsuite/g++.dg/tree-ssa/inline-2.C
===================================================================
--- gcc/testsuite/g++.dg/tree-ssa/inline-2.C	(revision 241752)
+++ gcc/testsuite/g++.dg/tree-ssa/inline-2.C	(working copy)
@@ -3,7 +3,7 @@ 
 /* { dg-add-options bind_pic_locally } */
 
 namespace std {
-  extern "C" void puts(const char *s);
+  extern "C" int puts(const char *s);
 }
 
 template <class T, class E> void
Index: gcc/testsuite/g++.old-deja/g++.law/except1.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.law/except1.C	(revision 241752)
+++ gcc/testsuite/g++.old-deja/g++.law/except1.C	(working copy)
@@ -7,7 +7,7 @@ 
 // Subject: Bugs
 // Date: Wed, 22 Jul 92 08:29:30 EDT
 
-extern "C" void puts(const char *);
+extern "C" int puts(const char *);
 
 class foo {
 public:
Index: gcc/testsuite/g++.old-deja/g++.mike/p700.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.mike/p700.C	(revision 241752)
+++ gcc/testsuite/g++.old-deja/g++.mike/p700.C	(working copy)
@@ -1,5 +1,5 @@ 
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated -Wno-register" }
+// { dg-options "-w" }
 // { dg-error "limited range of data type" "16-bit target" { target xstormy16-*-* } 0 }
 // prms-id: 700
 
Index: gcc/testsuite/g++.old-deja/g++.other/realloc.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/realloc.C	(revision 241752)
+++ gcc/testsuite/g++.old-deja/g++.other/realloc.C	(working copy)
@@ -1,4 +1,5 @@ 
 // { dg-do assemble  }
+// { dg-options "-w" }
 
 extern "C" void realloc();
 
Index: gcc/testsuite/g++.old-deja/g++.other/vbase5.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.other/vbase5.C	(revision 241752)
+++ gcc/testsuite/g++.old-deja/g++.other/vbase5.C	(working copy)
@@ -6,7 +6,7 @@ 
 // vbases. Normally that's just a pessimization, unfortunately during
 // constructoring it leads to uninitialized reads.
 
-extern "C" int printf (...);
+extern "C" int printf (const char*,...);
 
 int fail = 0;
 
Index: gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
===================================================================
--- gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm	(revision 241752)
+++ gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm	(working copy)
@@ -1,7 +1,7 @@ 
 /* { dg-lto-do run } */
 /* { dg-skip-if "Needs OBJC2 ABI" { "*-*-darwin*" && lp64 } { "*" } { "" } } */
 extern "C" {
-extern int printf (char *,...) ;
+extern int printf (const char *,...) ;
 extern void abort (void) ;
 }