From 9b9c448aa3dd70e4e8d48558d86a3ae113186663 Mon Sep 17 00:00:00 2001
From: Sylvestre Ledru <sylvestre@debian.org>
Date: Wed, 20 Aug 2014 23:06:05 +0200
Subject: [PATCH] * Enable warning -Wreturn-type by default

* Add option -Wmissing-return
When -Wreturn-type is used, also enable -Wmissing-return

* Update tests
---
 gcc/c-family/c.opt                                  |  6 +++++-
 gcc/doc/invoke.texi                                 | 21 +++++++++++++++++++--
 gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c |  4 ++--
 gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c   |  2 ++
 gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c   |  2 +-
 gcc/testsuite/c-c++-common/dfp/call-by-value.c      |  3 +++
 gcc/testsuite/c-c++-common/pr36513-2.c              |  1 +
 gcc/testsuite/c-c++-common/pr36513.c                |  1 +
 gcc/testsuite/c-c++-common/pr49706-2.c              |  2 +-
 gcc/testsuite/c-c++-common/vector-1.c               |  1 +
 gcc/testsuite/c-c++-common/vector-2.c               |  2 +-
 gcc/testsuite/g++.dg/abi/covariant2.C               |  4 ++--
 gcc/testsuite/g++.dg/abi/covariant3.C               |  2 +-
 gcc/testsuite/g++.dg/abi/mangle7.C                  |  2 +-
 gcc/testsuite/g++.dg/bprob/g++-bprob-1.C            |  1 +
 .../g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc |  2 +-
 gcc/testsuite/g++.dg/conversion/op6.C               |  6 +++---
 gcc/testsuite/g++.dg/cpp0x/access01.C               |  2 +-
 gcc/testsuite/g++.dg/cpp0x/auto2.C                  |  4 ++--
 gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc1.C                    |  2 +-
 gcc/testsuite/g++.dg/cpp0x/dc3.C                    |  2 +-
 gcc/testsuite/g++.dg/cpp0x/decltype12.C             |  3 ++-
 gcc/testsuite/g++.dg/cpp0x/decltype17.C             |  5 +++--
 gcc/testsuite/g++.dg/cpp0x/decltype3.C              |  2 +-
 gcc/testsuite/g++.dg/cpp0x/decltype41.C             |  8 ++++----
 gcc/testsuite/g++.dg/cpp0x/defaulted28.C            |  2 +-
 gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C            |  2 +-
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C  |  2 +-
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C  |  1 +
 .../g++.dg/cpp0x/lambda/lambda-template12.C         |  1 +
 .../g++.dg/cpp0x/lambda/lambda-template2.C          |  2 +-
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C   |  2 +-
 gcc/testsuite/g++.dg/cpp0x/noexcept16.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/nolinkage1.C             |  2 +-
 gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C        |  8 +++++---
 gcc/testsuite/g++.dg/cpp0x/parse1.C                 |  2 +-
 gcc/testsuite/g++.dg/cpp0x/pr34054.C                |  2 +-
 gcc/testsuite/g++.dg/cpp0x/pr38795.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr47416.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr58781.C                |  2 +-
 gcc/testsuite/g++.dg/cpp0x/range-for13.C            |  2 ++
 gcc/testsuite/g++.dg/cpp0x/range-for14.C            |  2 ++
 gcc/testsuite/g++.dg/cpp0x/rv2n.C                   |  2 +-
 gcc/testsuite/g++.dg/cpp0x/rv3n.C                   |  2 +-
 gcc/testsuite/g++.dg/cpp0x/static_assert10.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/static_assert11.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/trailing1.C              |  3 ++-
 gcc/testsuite/g++.dg/cpp0x/trailing5.C              |  2 ++
 gcc/testsuite/g++.dg/cpp0x/variadic114.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic57.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic65.C             |  2 ++
 gcc/testsuite/g++.dg/cpp0x/variadic66.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic77.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic97.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic98.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/vt-35023.C               |  1 +
 gcc/testsuite/g++.dg/cpp0x/vt-35024.C               |  2 ++
 gcc/testsuite/g++.dg/cpp1y/lambda-init7.C           |  1 +
 gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C |  1 +
 gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C  |  2 +-
 gcc/testsuite/g++.dg/debug/dwarf2/icf.C             |  2 ++
 gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C         |  3 ++-
 gcc/testsuite/g++.dg/debug/pr16792.C                |  3 ++-
 gcc/testsuite/g++.dg/debug/pr46241.C                |  2 ++
 gcc/testsuite/g++.dg/debug/pr46338.C                |  1 +
 gcc/testsuite/g++.dg/debug/pr47106.C                |  3 +++
 gcc/testsuite/g++.dg/dfp/44473-1.C                  |  1 +
 gcc/testsuite/g++.dg/dfp/44473-2.C                  |  3 ++-
 gcc/testsuite/g++.dg/eh/builtin1.C                  |  2 ++
 gcc/testsuite/g++.dg/eh/builtin2.C                  |  2 ++
 gcc/testsuite/g++.dg/eh/builtin3.C                  |  1 +
 gcc/testsuite/g++.dg/eh/pr45569.C                   |  1 +
 gcc/testsuite/g++.dg/eh/sighandle.C                 |  2 +-
 gcc/testsuite/g++.dg/eh/unwind2.C                   |  4 ++--
 gcc/testsuite/g++.dg/expr/bitfield11.C              |  1 +
 gcc/testsuite/g++.dg/expr/cond12.C                  |  2 ++
 gcc/testsuite/g++.dg/expr/static_cast7.C            |  3 ++-
 gcc/testsuite/g++.dg/ext/builtin-object-size3.C     |  2 ++
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C   |  3 +++
 gcc/testsuite/g++.dg/ext/java-1.C                   |  2 +-
 gcc/testsuite/g++.dg/ext/label7.C                   |  1 +
 gcc/testsuite/g++.dg/ext/label8.C                   |  1 +
 gcc/testsuite/g++.dg/ext/tmplattr7.C                |  2 +-
 gcc/testsuite/g++.dg/ext/vector14.C                 |  4 +++-
 gcc/testsuite/g++.dg/ext/vector8.C                  |  1 +
 gcc/testsuite/g++.dg/ext/visibility/anon1.C         |  2 +-
 gcc/testsuite/g++.dg/ext/visibility/anon2.C         |  1 +
 gcc/testsuite/g++.dg/ext/visibility/namespace1.C    |  2 +-
 gcc/testsuite/g++.dg/gcov/gcov-1.C                  |  2 +-
 gcc/testsuite/g++.dg/gomp/pr37189.C                 |  1 +
 gcc/testsuite/g++.dg/gomp/pr39495-1.C               |  2 ++
 gcc/testsuite/g++.dg/gomp/pr39495-2.C               |  2 ++
 gcc/testsuite/g++.dg/gomp/pr41429.C                 |  2 +-
 gcc/testsuite/g++.dg/graphite/pr41305.C             |  2 +-
 gcc/testsuite/g++.dg/graphite/pr42930.C             |  1 +
 gcc/testsuite/g++.dg/inherit/covariant10.C          |  1 +
 gcc/testsuite/g++.dg/inherit/covariant11.C          |  1 +
 gcc/testsuite/g++.dg/init/inline1.C                 |  2 +-
 gcc/testsuite/g++.dg/init/new18.C                   |  2 +-
 gcc/testsuite/g++.dg/init/reference2.C              |  1 +
 gcc/testsuite/g++.dg/init/reference3.C              |  2 ++
 gcc/testsuite/g++.dg/init/switch1.C                 |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-10.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-13.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-14.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-15.C                |  3 ++-
 gcc/testsuite/g++.dg/ipa/devirt-16.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-17.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-18.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-19.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-21.C                |  5 +++--
 gcc/testsuite/g++.dg/ipa/devirt-23.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/devirt-34.C                |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-38.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/pr43812.C                  |  2 +-
 gcc/testsuite/g++.dg/ipa/pr44372.C                  |  2 +-
 gcc/testsuite/g++.dg/ipa/pr45572-1.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/pr58371.C                  |  2 +-
 gcc/testsuite/g++.dg/ipa/pr59176.C                  |  2 +-
 gcc/testsuite/g++.dg/ipa/pr60640-1.C                |  2 +-
 gcc/testsuite/g++.dg/ipa/pr61540.C                  |  2 +-
 gcc/testsuite/g++.dg/ipa/remref-1.C                 |  2 +-
 gcc/testsuite/g++.dg/ipa/remref-2.C                 |  2 +-
 gcc/testsuite/g++.dg/lookup/builtin2.C              |  1 +
 gcc/testsuite/g++.dg/lookup/crash3.C                |  2 ++
 gcc/testsuite/g++.dg/lookup/hidden-var1.C           |  2 ++
 gcc/testsuite/g++.dg/lookup/struct2.C               |  2 +-
 gcc/testsuite/g++.dg/lto/20080709_0.C               |  1 +
 gcc/testsuite/g++.dg/lto/20080907_0.C               |  1 +
 gcc/testsuite/g++.dg/lto/20080915_0.C               |  2 ++
 gcc/testsuite/g++.dg/lto/20080916_0.C               |  1 +
 gcc/testsuite/g++.dg/lto/20081022_0.C               |  3 ++-
 gcc/testsuite/g++.dg/lto/20081023_0.C               |  3 ++-
 gcc/testsuite/g++.dg/lto/20081118_0.C               |  1 +
 gcc/testsuite/g++.dg/lto/20081118_1.C               |  2 ++
 gcc/testsuite/g++.dg/lto/20081120-1_0.C             |  1 +
 gcc/testsuite/g++.dg/lto/20081120-1_1.C             |  1 +
 gcc/testsuite/g++.dg/lto/20081127_1.C               |  2 +-
 gcc/testsuite/g++.dg/lto/20081217-2_0.C             |  4 ++--
 gcc/testsuite/g++.dg/lto/20090303_0.C               |  2 +-
 gcc/testsuite/g++.dg/lto/20090311-1_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20090312_0.C               |  2 +-
 gcc/testsuite/g++.dg/lto/20090315_0.C               |  2 +-
 gcc/testsuite/g++.dg/lto/20091002-1_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20091002-2_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20091002-3_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20091004-1_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20091004-1_1.C             |  1 +
 gcc/testsuite/g++.dg/lto/20091004-2_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20091004-2_1.C             |  2 ++
 gcc/testsuite/g++.dg/lto/20091004-3_1.C             |  1 +
 gcc/testsuite/g++.dg/lto/20100721-1_0.C             |  2 +-
 gcc/testsuite/g++.dg/lto/20101010-1_0.C             |  1 +
 gcc/testsuite/g++.dg/lto/20101010-2_0.C             |  1 +
 gcc/testsuite/g++.dg/lto/pr45679-1_1.C              |  4 +++-
 gcc/testsuite/g++.dg/lto/pr45679-2_0.C              |  1 +
 gcc/testsuite/g++.dg/lto/pr45679-2_1.C              |  3 +++
 gcc/testsuite/g++.dg/lto/pr48042_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/pr51650-1_0.C              |  3 ++-
 gcc/testsuite/g++.dg/lto/pr51650-3_0.C              |  3 ++-
 gcc/testsuite/g++.dg/lto/pr54625-1_0.c              |  2 +-
 gcc/testsuite/g++.dg/lto/pr54625-2_0.c              |  3 ++-
 gcc/testsuite/g++.dg/opt/combine.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/complex3.C                 |  2 +-
 gcc/testsuite/g++.dg/opt/const3.C                   |  2 +-
 gcc/testsuite/g++.dg/opt/covariant1.C               |  2 +-
 gcc/testsuite/g++.dg/opt/dump1.C                    |  2 +-
 gcc/testsuite/g++.dg/opt/inline15.C                 |  2 +-
 gcc/testsuite/g++.dg/opt/local1.C                   |  2 +-
 gcc/testsuite/g++.dg/opt/memcpy1.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/new1.C                     |  2 +-
 gcc/testsuite/g++.dg/opt/nrv8.C                     |  2 +-
 gcc/testsuite/g++.dg/opt/pr23299.C                  |  4 +++-
 gcc/testsuite/g++.dg/opt/pr27826.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/pr44919.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/pr46640.C                  |  3 ++-
 gcc/testsuite/g++.dg/opt/pr47615.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/pr55329.C                  |  2 +-
 gcc/testsuite/g++.dg/opt/pr61456.C                  |  1 +
 gcc/testsuite/g++.dg/other/array3.C                 |  1 +
 gcc/testsuite/g++.dg/other/copy2.C                  |  1 +
 gcc/testsuite/g++.dg/other/crash-5.C                |  2 +-
 gcc/testsuite/g++.dg/other/crash-8.C                |  2 +-
 gcc/testsuite/g++.dg/other/error34.C                |  2 +-
 gcc/testsuite/g++.dg/other/i386-8.C                 |  1 +
 gcc/testsuite/g++.dg/other/pr22003.C                |  2 +-
 gcc/testsuite/g++.dg/other/pr24623.C                |  2 +-
 gcc/testsuite/g++.dg/other/pr29610.C                |  2 +-
 gcc/testsuite/g++.dg/other/pr42645-1.C              |  2 +-
 gcc/testsuite/g++.dg/other/pr42645-2.C              |  3 ++-
 gcc/testsuite/g++.dg/other/pr52048.C                |  2 +-
 gcc/testsuite/g++.dg/other/typedef3.C               |  1 +
 gcc/testsuite/g++.dg/overload/addr1.C               |  1 +
 gcc/testsuite/g++.dg/overload/defarg4.C             |  1 +
 gcc/testsuite/g++.dg/overload/operator5.C           |  1 +
 gcc/testsuite/g++.dg/overload/ref-conv1.C           |  1 +
 gcc/testsuite/g++.dg/overload/template5.C           |  1 +
 gcc/testsuite/g++.dg/parse/crash40.C                |  1 +
 gcc/testsuite/g++.dg/parse/crash61.C                |  1 +
 gcc/testsuite/g++.dg/parse/ctor5.C                  |  1 +
 gcc/testsuite/g++.dg/parse/defarg4.C                |  1 +
 gcc/testsuite/g++.dg/parse/defarg6.C                |  2 +-
 gcc/testsuite/g++.dg/parse/error5.C                 |  2 +-
 gcc/testsuite/g++.dg/parse/expr2.C                  |  1 +
 gcc/testsuite/g++.dg/parse/friend7.C                |  1 +
 gcc/testsuite/g++.dg/parse/namespace1.C             |  1 +
 gcc/testsuite/g++.dg/parse/namespace9.C             |  1 +
 gcc/testsuite/g++.dg/parse/ret-type2.C              |  2 ++
 gcc/testsuite/g++.dg/parse/typedef8.C               |  1 +
 gcc/testsuite/g++.dg/pch/static-1.C                 |  4 +++-
 gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C    |  1 +
 gcc/testsuite/g++.dg/plugin/self-assign-test-1.C    |  3 ++-
 gcc/testsuite/g++.dg/plugin/self-assign-test-2.C    |  3 ++-
 gcc/testsuite/g++.dg/plugin/self-assign-test-3.C    |  2 +-
 gcc/testsuite/g++.dg/pr45788.C                      |  2 +-
 gcc/testsuite/g++.dg/pr55513.C                      |  3 ++-
 gcc/testsuite/g++.dg/pr55604.C                      |  3 ++-
 gcc/testsuite/g++.dg/pr57662.C                      |  2 +-
 gcc/testsuite/g++.dg/pr58389.C                      |  2 +-
 gcc/testsuite/g++.dg/pr59510.C                      |  2 +-
 gcc/testsuite/g++.dg/tc1/dr152.C                    |  3 ++-
 gcc/testsuite/g++.dg/template/aggr-init1.C          |  1 +
 gcc/testsuite/g++.dg/template/anon1.C               |  2 ++
 gcc/testsuite/g++.dg/template/array7.C              |  1 +
 gcc/testsuite/g++.dg/template/canon-type-8.C        |  2 +-
 gcc/testsuite/g++.dg/template/conv1.C               |  1 +
 gcc/testsuite/g++.dg/template/crash107.C            |  2 +-
 gcc/testsuite/g++.dg/template/crash23.C             |  1 +
 gcc/testsuite/g++.dg/template/crash8.C              |  1 +
 gcc/testsuite/g++.dg/template/defarg4.C             |  1 +
 gcc/testsuite/g++.dg/template/error10.C             |  2 +-
 gcc/testsuite/g++.dg/template/friend32.C            |  1 +
 gcc/testsuite/g++.dg/template/init6.C               |  3 +++
 gcc/testsuite/g++.dg/template/memfriend7.C          |  1 +
 gcc/testsuite/g++.dg/template/new10.C               |  1 +
 gcc/testsuite/g++.dg/template/nontype12.C           |  1 +
 gcc/testsuite/g++.dg/template/overload12.C          |  3 ++-
 gcc/testsuite/g++.dg/template/overload5.C           |  1 +
 gcc/testsuite/g++.dg/template/overload8.C           |  1 +
 gcc/testsuite/g++.dg/template/partial10.C           |  2 ++
 gcc/testsuite/g++.dg/template/partial9.C            |  1 +
 gcc/testsuite/g++.dg/template/qual1.C               |  1 +
 gcc/testsuite/g++.dg/template/sizeof8.C             |  1 +
 gcc/testsuite/g++.dg/template/sizeof9.C             |  1 +
 gcc/testsuite/g++.dg/template/spec6.C               |  2 ++
 gcc/testsuite/g++.dg/template/spec7.C               |  1 +
 gcc/testsuite/g++.dg/template/typedef8.C            |  1 +
 gcc/testsuite/g++.dg/template/using20.C             |  1 +
 gcc/testsuite/g++.dg/template/vla1.C                |  1 +
 gcc/testsuite/g++.dg/tls/thread_local3.C            |  3 ++-
 gcc/testsuite/g++.dg/tls/thread_local3g.C           |  3 ++-
 gcc/testsuite/g++.dg/tls/thread_local5.C            |  2 +-
 gcc/testsuite/g++.dg/tls/thread_local5g.C           |  2 +-
 gcc/testsuite/g++.dg/tls/thread_local6.C            |  1 +
 gcc/testsuite/g++.dg/tls/thread_local6g.C           |  1 +
 gcc/testsuite/g++.dg/tm/cgraph_edge.C               |  2 +-
 gcc/testsuite/g++.dg/tm/pr46646.C                   |  2 +-
 gcc/testsuite/g++.dg/tm/pr47554.C                   |  2 +-
 gcc/testsuite/g++.dg/tm/pr47573.C                   |  3 ++-
 gcc/testsuite/g++.dg/torture/20070621-1.C           |  1 +
 gcc/testsuite/g++.dg/torture/20090329-1.C           |  1 +
 gcc/testsuite/g++.dg/torture/pr33134.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr33340.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr33627.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr34222.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr34241.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr34641.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr34850.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr35164-1.C            |  1 +
 gcc/testsuite/g++.dg/torture/pr36745.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr38705.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr38811.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr39362.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr39732.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr41775.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr42183.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr42450.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr42704.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr42760.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr42773.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr42883.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr43905.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr44148.C              |  3 +--
 gcc/testsuite/g++.dg/torture/pr44295.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr44357.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr44813.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr45580.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr45874.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr45877.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr46383.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr46469.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr47313.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr48271.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr49615.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr49628.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr51436.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr51482.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr51737.C              |  2 ++
 gcc/testsuite/g++.dg/torture/pr51959.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr52772.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr52918-2.C            |  1 +
 gcc/testsuite/g++.dg/torture/pr53011.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr53752.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr54838.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr54902.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr56029.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr57107.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr57140.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr57235.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr58252.C              |  2 +-
 gcc/testsuite/g++.dg/torture/pr58555.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr59208.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr60438-1.C            |  1 +
 gcc/testsuite/g++.dg/torture/pr60438-2.C            |  2 +-
 gcc/testsuite/g++.dg/torture/pr60746.C              |  1 +
 gcc/testsuite/g++.dg/torture/pr61554.C              |  1 +
 gcc/testsuite/g++.dg/tree-ssa/copyprop.C            |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr22444.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr23948.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr24172.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C           |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr27283.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr27291.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr27548.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr33604.C             |  2 +-
 gcc/testsuite/g++.dg/tree-ssa/pr34355.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr42337.C             |  2 +-
 gcc/testsuite/g++.dg/vect/pr60836.cc                |  2 ++
 gcc/testsuite/g++.dg/warn/Wconversion-null-2.C      |  4 +++-
 gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C      |  3 ++-
 gcc/testsuite/g++.dg/warn/Wparentheses-10.C         |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-11.C         |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-12.C         |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-25.C         |  3 +++
 gcc/testsuite/g++.dg/warn/Wparentheses-6.C          |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-7.C          |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-8.C          |  1 +
 gcc/testsuite/g++.dg/warn/Wparentheses-9.C          |  1 +
 gcc/testsuite/g++.dg/warn/Wshadow-5.C               |  2 +-
 gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C     |  2 +-
 gcc/testsuite/g++.dg/warn/Wtype-limits-no.C         |  2 +-
 gcc/testsuite/g++.dg/warn/Wtype-limits.C            |  2 +-
 gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C  |  2 +-
 .../g++.dg/warn/Wzero-as-null-pointer-constant-5.C  |  2 +-
 gcc/testsuite/g++.dg/warn/pmf1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                 |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C    |  2 +-
 gcc/testsuite/g++.old-deja/g++.brendan/crash24.C    |  4 +++-
 gcc/testsuite/g++.old-deja/g++.ext/constructor.C    |  2 +-
 gcc/testsuite/g++.old-deja/g++.ext/namedret1.C      |  2 +-
 gcc/testsuite/g++.old-deja/g++.ext/namedret3.C      |  2 +-
 gcc/testsuite/g++.old-deja/g++.ext/return1.C        |  2 +-
 gcc/testsuite/g++.old-deja/g++.jason/anon4.C        |  3 ++-
 gcc/testsuite/g++.old-deja/g++.jason/enum6.C        |  2 +-
 gcc/testsuite/g++.old-deja/g++.jason/lineno2.C      |  3 ++-
 gcc/testsuite/g++.old-deja/g++.jason/lineno3.C      |  2 +-
 gcc/testsuite/g++.old-deja/g++.jason/lineno4.C      |  2 +-
 gcc/testsuite/g++.old-deja/g++.jason/new2.C         |  3 ++-
 gcc/testsuite/g++.old-deja/g++.jason/new4.C         |  3 ++-
 gcc/testsuite/g++.old-deja/g++.jason/shadow1.C      |  3 ++-
 gcc/testsuite/g++.old-deja/g++.jason/tempcons.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/thunk2.C       |  5 +++--
 gcc/testsuite/g++.old-deja/g++.law/builtin1.C       |  2 +-
 gcc/testsuite/g++.old-deja/g++.law/enum9.C          |  4 ++--
 gcc/testsuite/g++.old-deja/g++.law/except3.C        |  5 +++--
 gcc/testsuite/g++.old-deja/g++.law/init6.C          |  2 ++
 gcc/testsuite/g++.old-deja/g++.law/profile1.C       |  3 ++-
 gcc/testsuite/g++.old-deja/g++.law/shadow2.C        |  5 +++--
 gcc/testsuite/g++.old-deja/g++.law/temps4.C         |  3 ++-
 gcc/testsuite/g++.old-deja/g++.law/weak.C           |  3 ++-
 gcc/testsuite/g++.old-deja/g++.mike/bool2.C         |  3 ++-
 gcc/testsuite/g++.old-deja/g++.mike/eh1.C           |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh10.C          |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh16.C          |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/eh17.C          |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C           |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/eh23.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh24.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh25.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh26.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh27.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh28.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh29.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh30.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh31.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh35.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh36.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh37.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh38.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh39.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh40.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh47.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh50.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh51.C          |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh7.C           |  3 ++-
 gcc/testsuite/g++.old-deja/g++.mike/eh8.C           |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/eh9.C           |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/mangle1.C       |  3 ++-
 gcc/testsuite/g++.old-deja/g++.mike/p5958.C         |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/p6004.C         |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/p700.C          |  4 ++--
 gcc/testsuite/g++.old-deja/g++.mike/p7912.C         |  2 +-
 gcc/testsuite/g++.old-deja/g++.mike/p811.C          |  5 +++--
 gcc/testsuite/g++.old-deja/g++.mike/virt4.C         |  3 ++-
 gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C     |  2 +-
 gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C     |  2 +-
 gcc/testsuite/g++.old-deja/g++.other/decl1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/expr1.C        |  3 ++-
 gcc/testsuite/g++.old-deja/g++.other/inline8.C      |  2 +-
 gcc/testsuite/g++.old-deja/g++.other/loop1.C        |  2 +-
 gcc/testsuite/g++.old-deja/g++.other/syntax1.C      |  3 ++-
 gcc/testsuite/g++.old-deja/g++.pt/call2.C           |  2 ++
 gcc/testsuite/g++.old-deja/g++.pt/repo3.C           |  3 ++-
 gcc/testsuite/g++.old-deja/g++.pt/ttp10.C           |  2 ++
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C       |  2 +-
 gcc/testsuite/g++.old-deja/g++.robertl/eb83.C       |  3 ++-
 gcc/testsuite/gcc.c-torture/compile/20090721-1.c    |  2 +-
 gcc/testsuite/gcc.dg/20001012-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20001012-2.c                   |  2 +-
 gcc/testsuite/gcc.dg/20001108-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20010516-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20011008-2.c                   |  2 +-
 gcc/testsuite/gcc.dg/20030612-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20040219-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20040622-2.c                   |  3 ++-
 gcc/testsuite/gcc.dg/20041213-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/20050603-2.c                   |  2 +-
 gcc/testsuite/gcc.dg/20051201-1.c                   |  4 +++-
 gcc/testsuite/gcc.dg/990506-0.c                     |  2 +-
 gcc/testsuite/gcc.dg/Wmissing-return1.c             | 11 +++++++++++
 gcc/testsuite/gcc.dg/Wmissing-return2.c             | 11 +++++++++++
 gcc/testsuite/gcc.dg/Wmissing-return3.c             | 11 +++++++++++
 gcc/testsuite/gcc.dg/Wmissing-return4.c             | 11 +++++++++++
 gcc/testsuite/gcc.dg/Wmissing-return5.c             | 11 +++++++++++
 gcc/testsuite/gcc.dg/Wreturn-type2.c                |  3 ++-
 gcc/testsuite/gcc.dg/attr-alias-3.c                 |  3 ++-
 gcc/testsuite/gcc.dg/c90-impl-int-1.c               |  2 +-
 gcc/testsuite/gcc.dg/c90-return-1.c                 |  6 +++---
 gcc/testsuite/gcc.dg/debug/dwarf2-2.c               |  3 ++-
 gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c      |  1 +
 gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c      |  2 ++
 gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c         |  2 +-
 gcc/testsuite/gcc.dg/debug/pr42767.c                |  2 +-
 gcc/testsuite/gcc.dg/fastmath-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/fork-instrumentation.c         |  3 ++-
 gcc/testsuite/gcc.dg/funcorder.c                    |  4 ++--
 gcc/testsuite/gcc.dg/fwrapv-1.c                     |  2 +-
 gcc/testsuite/gcc.dg/fwrapv-2.c                     |  2 +-
 gcc/testsuite/gcc.dg/gomp/empty.c                   |  2 +-
 gcc/testsuite/gcc.dg/gomp/sharing-3.c               |  2 +-
 gcc/testsuite/gcc.dg/graphite/id-1.c                |  4 ++--
 gcc/testsuite/gcc.dg/graphite/id-2.c                |  2 +-
 gcc/testsuite/gcc.dg/graphite/id-4.c                |  2 +-
 gcc/testsuite/gcc.dg/graphite/id-8.c                |  2 +-
 gcc/testsuite/gcc.dg/graphite/id-pr43464.c          |  7 ++++---
 gcc/testsuite/gcc.dg/graphite/id-pr45230-1.c        |  2 +-
 gcc/testsuite/gcc.dg/graphite/id-pr45230.c          |  2 +-
 gcc/testsuite/gcc.dg/graphite/interchange-4.c       |  1 +
 gcc/testsuite/gcc.dg/graphite/pr38073.c             |  2 +-
 gcc/testsuite/gcc.dg/graphite/pr38125.c             |  2 +-
 gcc/testsuite/gcc.dg/graphite/pr38409.c             |  2 +-
 gcc/testsuite/gcc.dg/graphite/pr38510.c             |  2 ++
 gcc/testsuite/gcc.dg/graphite/pr38786.c             |  2 +-
 gcc/testsuite/gcc.dg/graphite/pr39260.c             |  2 +-
 gcc/testsuite/gcc.dg/graphite/pr43083.c             |  2 ++
 gcc/testsuite/gcc.dg/graphite/pr46185.c             |  1 +
 gcc/testsuite/gcc.dg/graphite/scop-19.c             |  5 +++--
 gcc/testsuite/gcc.dg/inline-33.c                    |  2 +-
 gcc/testsuite/gcc.dg/ipa/inline-6.c                 |  4 ++--
 gcc/testsuite/gcc.dg/ipa/inlinehint-1.c             |  4 ++--
 gcc/testsuite/gcc.dg/ipa/inlinehint-2.c             |  4 ++--
 gcc/testsuite/gcc.dg/ipa/inlinehint-3.c             |  3 ++-
 gcc/testsuite/gcc.dg/ipa/ipa-3.c                    |  1 +
 gcc/testsuite/gcc.dg/ipa/ipa-8.c                    |  2 ++
 gcc/testsuite/gcc.dg/ipa/ipacost-1.c                |  7 ++++++-
 gcc/testsuite/gcc.dg/ipa/ipacost-2.c                |  6 +++++-
 gcc/testsuite/gcc.dg/ipa/ipcp-1.c                   |  1 +
 gcc/testsuite/gcc.dg/ipa/ipcp-4.c                   |  3 +++
 gcc/testsuite/gcc.dg/ipa/pr57539.c                  |  8 +++++++-
 gcc/testsuite/gcc.dg/ipa/pr58106.c                  |  2 ++
 gcc/testsuite/gcc.dg/ipa/pure-const-1.c             |  8 ++++----
 gcc/testsuite/gcc.dg/lto/20080924_0.c               |  2 +-
 gcc/testsuite/gcc.dg/lto/20081115_0.c               |  2 +-
 gcc/testsuite/gcc.dg/lto/20081118_0.c               |  2 +-
 gcc/testsuite/gcc.dg/lto/20081201-1_0.c             |  2 +-
 gcc/testsuite/gcc.dg/lto/20090213_0.c               |  2 +-
 gcc/testsuite/gcc.dg/lto/20090218-2_1.c             |  2 ++
 gcc/testsuite/gcc.dg/lto/20090312_0.c               |  1 +
 gcc/testsuite/gcc.dg/lto/20090706-2_0.c             |  2 +-
 gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c         |  2 +-
 gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c         |  2 +-
 gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c         |  2 +-
 gcc/testsuite/gcc.dg/lto/ipareference2_0.c          |  2 +-
 gcc/testsuite/gcc.dg/lto/ipareference2_1.c          |  1 +
 gcc/testsuite/gcc.dg/lto/ipareference_0.c           |  3 ++-
 gcc/testsuite/gcc.dg/lto/ipareference_1.c           |  3 ++-
 gcc/testsuite/gcc.dg/lto/pr47924_0.c                |  2 +-
 gcc/testsuite/gcc.dg/lto/pr55703_0.c                |  2 +-
 gcc/testsuite/gcc.dg/lto/resolutions_0.c            |  5 +++--
 gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c            |  5 +++--
 gcc/testsuite/gcc.dg/memmove-1.c                    |  2 +-
 gcc/testsuite/gcc.dg/non-local-goto-1.c             |  6 +++---
 gcc/testsuite/gcc.dg/non-local-goto-2.c             |  6 +++---
 gcc/testsuite/gcc.dg/noncompile/920616-2.c          |  2 +-
 gcc/testsuite/gcc.dg/noncompile/930301-1.c          |  2 +-
 gcc/testsuite/gcc.dg/noncompile/930622-1.c          |  2 +-
 gcc/testsuite/gcc.dg/noncompile/930622-2.c          |  2 +-
 gcc/testsuite/gcc.dg/noncompile/950825-1.c          |  4 +++-
 gcc/testsuite/gcc.dg/noncompile/invalid_asm.c       |  2 +-
 gcc/testsuite/gcc.dg/noncompile/pr35447-1.c         |  2 ++
 gcc/testsuite/gcc.dg/noncompile/scope.c             |  4 ++--
 gcc/testsuite/gcc.dg/noncompile/va-arg-1.c          |  2 +-
 gcc/testsuite/gcc.dg/noreturn-8.c                   |  2 +-
 gcc/testsuite/gcc.dg/pr18596-1.c                    |  4 ++--
 gcc/testsuite/gcc.dg/pr18596-2.c                    |  4 ++--
 gcc/testsuite/gcc.dg/pr24561.c                      |  1 +
 gcc/testsuite/gcc.dg/pr25795-1.c                    |  3 ++-
 gcc/testsuite/gcc.dg/pr25795.c                      |  3 ++-
 gcc/testsuite/gcc.dg/pr26004.c                      |  3 ++-
 gcc/testsuite/gcc.dg/pr27861-1.c                    |  2 +-
 gcc/testsuite/gcc.dg/pr28574.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr28888.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr29254.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr31529-1.c                    |  3 ++-
 gcc/testsuite/gcc.dg/pr31529-2.c                    |  2 +-
 gcc/testsuite/gcc.dg/pr33923.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr34263.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr35065.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr36194.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr43564.c                      |  1 +
 gcc/testsuite/gcc.dg/pr45415.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr47443.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr47763.c                      |  3 ++-
 gcc/testsuite/gcc.dg/pr47899.c                      |  1 +
 gcc/testsuite/gcc.dg/pr49000.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr52549.c                      |  6 +++---
 gcc/testsuite/gcc.dg/pr52808.c                      |  2 +-
 gcc/testsuite/gcc.dg/pr60647-1.c                    |  2 +-
 gcc/testsuite/gcc.dg/pragma-align.c                 |  2 +-
 gcc/testsuite/gcc.dg/pragma-diag-1.c                |  3 ++-
 .../gcc.dg/simulate-thread/atomic-load-int.c        |  2 +-
 .../gcc.dg/simulate-thread/atomic-load-int128.c     |  2 +-
 .../gcc.dg/simulate-thread/atomic-load-longlong.c   |  2 +-
 .../gcc.dg/simulate-thread/atomic-load-short.c      |  2 +-
 .../gcc.dg/simulate-thread/atomic-other-int.c       |  2 +-
 gcc/testsuite/gcc.dg/tm/20091013.c                  |  2 +-
 gcc/testsuite/gcc.dg/tm/20091221.c                  |  2 +-
 gcc/testsuite/gcc.dg/tm/debug-1.c                   |  4 ++--
 gcc/testsuite/gcc.dg/tm/irrevocable-1.c             |  2 +-
 gcc/testsuite/gcc.dg/tm/irrevocable-2.c             |  2 +-
 gcc/testsuite/gcc.dg/tm/irrevocable-3.c             |  2 +-
 gcc/testsuite/gcc.dg/tm/irrevocable-4.c             |  2 +-
 gcc/testsuite/gcc.dg/tm/memopt-1.c                  |  2 +-
 gcc/testsuite/gcc.dg/tm/pr52173-1.c                 |  2 +-
 gcc/testsuite/gcc.dg/tm/props-1.c                   |  2 +-
 gcc/testsuite/gcc.dg/tm/props-2.c                   |  2 +-
 gcc/testsuite/gcc.dg/tm/props-3.c                   |  2 +-
 gcc/testsuite/gcc.dg/torture/pr28814.c              |  2 +-
 gcc/testsuite/gcc.dg/torture/pr31254.c              |  2 +-
 gcc/testsuite/gcc.dg/torture/pr35227.c              |  2 +-
 gcc/testsuite/gcc.dg/torture/pr38948.c              |  5 +++--
 gcc/testsuite/gcc.dg/torture/pr55888.c              |  2 ++
 gcc/testsuite/gcc.dg/torture/pr55890-1.c            |  2 +-
 gcc/testsuite/gcc.dg/torture/pr55890-2.c            |  2 +-
 gcc/testsuite/gcc.dg/torture/pr57036-1.c            |  3 ++-
 gcc/testsuite/gcc.dg/torture/pr57393-2.c            |  2 +-
 gcc/testsuite/gcc.dg/torture/pr57584.c              |  1 +
 gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c  |  1 +
 .../gcc.dg/tree-prof/crossmodule-indircall-1.c      |  2 +-
 .../gcc.dg/tree-prof/crossmodule-indircall-1a.c     |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/inliner-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/merge_block.c        |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/peel-1.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/stringop-1.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/stringop-2.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/unroll-1.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c   |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c         |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c          |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c          |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040302-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040319-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040326-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040326-2.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20040408-1.c          |  7 ++++---
 gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20041008-1.c          |  6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/20050719-1.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c          |  4 +++-
 gcc/testsuite/gcc.dg/tree-ssa/alias-16.c            |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c        |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c         | 16 ++++++++--------
 gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/inline-10.c           |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/inline-5.c            |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/inline-6.c            |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/inline-9.c            |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c            |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c         |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c         |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c            |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c            |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c            |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c    |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/loop-20.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/loop-38.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr20913.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr21582.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr23434.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr24670.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr33922.c             |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/scev-3.c              |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/scev-4.c              |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/scev-5.c              |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c          |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c           |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c           |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/vrp01.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp02.c               |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/vrp03.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp04.c               |  3 ++-
 gcc/testsuite/gcc.dg/tree-ssa/vrp05.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp06.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp07.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp08.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp09.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp10.c               |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/vrp11.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp12.c               |  4 ++--
 gcc/testsuite/gcc.dg/tree-ssa/vrp13.c               |  6 +++---
 gcc/testsuite/gcc.dg/tree-ssa/vrp14.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp23.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp24.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp25.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp27.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/vrp55.c               |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c      |  2 +-
 gcc/testsuite/gcc.dg/tree-ssa/writeonly.c           |  2 +-
 gcc/testsuite/gcc.dg/unused-3.c                     |  3 ++-
 gcc/testsuite/gcc.dg/varpool-1.c                    |  6 +++---
 gcc/testsuite/gcc.dg/vect/O3-pr49087.c              |  3 ++-
 gcc/testsuite/gcc.dg/vect/pr26359.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr28952.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr31041.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr32216.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr32224.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr32366.c                 |  2 +-
 gcc/testsuite/gcc.dg/vect/pr43430-2.c               |  2 +-
 gcc/testsuite/gcc.dg/vect/pr43842.c                 |  4 ++--
 gcc/testsuite/gcc.dg/vect/pr46052.c                 |  1 +
 gcc/testsuite/gcc.dg/vect/vect-1-big-array.c        |  2 +-
 gcc/testsuite/gcc.dg/vect/vect-1.c                  |  2 +-
 gcc/testsuite/gcc.dg/vect/vect-93.c                 |  2 +-
 gcc/testsuite/gcc.dg/vla-22.c                       |  1 +
 gcc/testsuite/gcc.dg/webizer.c                      |  5 +++--
 gcc/testsuite/gcc.dg/winline-9.c                    |  4 +++-
 gcc/testsuite/gcc.dg/wtr-func-def-1.c               |  2 +-
 gcc/testsuite/gcc.target/i386/20040112-1.c          |  2 +-
 gcc/testsuite/gcc.target/i386/avxfp-1.c             |  4 ++--
 gcc/testsuite/gcc.target/i386/avxfp-2.c             |  4 ++--
 gcc/testsuite/gcc.target/i386/cadd.c                |  4 ++--
 gcc/testsuite/gcc.target/i386/cmov2.c               |  2 +-
 gcc/testsuite/gcc.target/i386/cmov3.c               |  2 +-
 gcc/testsuite/gcc.target/i386/cmov4.c               |  2 +-
 gcc/testsuite/gcc.target/i386/cold-attribute-1.c    |  4 ++--
 gcc/testsuite/gcc.target/i386/cold-attribute-2.c    |  2 +-
 gcc/testsuite/gcc.target/i386/combine-mul.c         |  2 +-
 gcc/testsuite/gcc.target/i386/cvt-1.c               |  2 +-
 gcc/testsuite/gcc.target/i386/fpcvt-1.c             |  3 ++-
 gcc/testsuite/gcc.target/i386/fpcvt-2.c             |  2 +-
 gcc/testsuite/gcc.target/i386/fpcvt-3.c             |  2 +-
 gcc/testsuite/gcc.target/i386/local.c               |  5 +++--
 gcc/testsuite/gcc.target/i386/memcpy-2.c            |  2 +-
 gcc/testsuite/gcc.target/i386/memcpy-3.c            |  2 +-
 gcc/testsuite/gcc.target/i386/memset-1.c            |  2 +-
 gcc/testsuite/gcc.target/i386/minmax-1.c            |  2 +-
 gcc/testsuite/gcc.target/i386/minmax-2.c            |  2 +-
 gcc/testsuite/gcc.target/i386/pr36786.c             |  2 +-
 gcc/testsuite/gcc.target/i386/pr45352-2.c           |  2 +-
 gcc/testsuite/gcc.target/i386/pr56022.c             |  4 ++--
 gcc/testsuite/gcc.target/i386/pr57003.c             |  2 +-
 gcc/testsuite/gcc.target/i386/pr60902.c             |  2 +-
 gcc/testsuite/gcc.target/i386/sse-14.c              |  2 +-
 gcc/testsuite/gcc.target/i386/sse-19.c              |  2 +-
 gcc/testsuite/gcc.target/i386/sse-22.c              |  2 +-
 gcc/testsuite/gcc.target/i386/sse-22a.c             |  2 +-
 gcc/testsuite/gcc.target/i386/sse4a-extract.c       |  4 ++--
 gcc/testsuite/gcc.target/i386/sse4a-insert.c        |  2 +-
 gcc/testsuite/gcc.target/i386/ssefp-1.c             |  4 ++--
 gcc/testsuite/gcc.target/i386/ssefp-2.c             |  4 ++--
 gcc/testsuite/gcc.target/i386/testimm-10.c          |  6 +++---
 gcc/testsuite/gcc.target/i386/vectorize4-avx.c      |  2 +-
 gcc/testsuite/gcc.target/i386/xop-haddX.c           |  3 +++
 gcc/testsuite/gcc.target/i386/xop-hadduX.c          |  3 +++
 gcc/testsuite/gcc.target/i386/xop-hsubX.c           |  3 +++
 gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90 |  1 +
 gcc/testsuite/gfortran.dg/array_function_3.f90      |  1 +
 gcc/testsuite/gfortran.dg/associate_12.f90          |  1 +
 gcc/testsuite/gfortran.dg/assumed_rank_12.f90       |  3 ++-
 .../gfortran.dg/binding_label_tests_26a.f90         |  1 +
 gcc/testsuite/gfortran.dg/block_11.f90              |  3 ++-
 gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90 |  2 +-
 gcc/testsuite/gfortran.dg/class_13.f03              |  1 +
 gcc/testsuite/gfortran.dg/class_15.f03              |  1 +
 gcc/testsuite/gfortran.dg/class_16.f03              |  1 +
 gcc/testsuite/gfortran.dg/class_23.f03              |  1 +
 gcc/testsuite/gfortran.dg/class_32.f90              |  1 +
 gcc/testsuite/gfortran.dg/class_41.f03              |  1 +
 gcc/testsuite/gfortran.dg/class_result_2.f90        |  1 +
 gcc/testsuite/gfortran.dg/constructor_1.f90         |  1 +
 gcc/testsuite/gfortran.dg/constructor_5.f90         |  1 +
 gcc/testsuite/gfortran.dg/deferred_type_param_3.f90 |  1 +
 gcc/testsuite/gfortran.dg/defined_assignment_1.f90  |  1 +
 gcc/testsuite/gfortran.dg/defined_assignment_6.f90  |  1 +
 gcc/testsuite/gfortran.dg/defined_assignment_7.f90  |  1 +
 gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03    |  1 +
 gcc/testsuite/gfortran.dg/empty_function_1.f90      |  1 +
 gcc/testsuite/gfortran.dg/extends_13.f03            |  1 +
 gcc/testsuite/gfortran.dg/finalize_23.f90           |  1 +
 gcc/testsuite/gfortran.dg/generic_24.f90            |  1 +
 gcc/testsuite/gfortran.dg/graphite/id-2.f90         |  1 +
 gcc/testsuite/gfortran.dg/graphite/id-3.f90         |  1 +
 gcc/testsuite/gfortran.dg/graphite/pr37980.f90      |  1 +
 gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03    |  2 +-
 gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03    |  2 +-
 gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03    |  2 +-
 gcc/testsuite/gfortran.dg/module_write_1.f90        |  1 +
 gcc/testsuite/gfortran.dg/operator_c1202.f90        |  1 +
 gcc/testsuite/gfortran.dg/pointer_check_6.f90       |  2 +-
 gcc/testsuite/gfortran.dg/pr36680.f90               |  2 +-
 gcc/testsuite/gfortran.dg/pr40999.f                 |  2 +-
 gcc/testsuite/gfortran.dg/pr42051.f03               |  1 +
 gcc/testsuite/gfortran.dg/pr61209.f90               |  1 +
 gcc/testsuite/gfortran.dg/pr61921.f90               |  2 ++
 gcc/testsuite/gfortran.dg/private_type_11.f90       |  2 +-
 gcc/testsuite/gfortran.dg/proc_decl_27.f90          |  1 +
 gcc/testsuite/gfortran.dg/proc_ptr_13.f90           |  2 +-
 gcc/testsuite/gfortran.dg/proc_ptr_41.f90           |  1 +
 gcc/testsuite/gfortran.dg/proc_ptr_comp_4.f90       |  1 +
 .../gfortran.dg/public_private_module_3.f90         |  1 +
 .../gfortran.dg/public_private_module_5.f90         |  2 +-
 gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90  |  2 +-
 gcc/testsuite/gfortran.dg/recursive_interface_1.f90 |  1 +
 gcc/testsuite/gfortran.dg/recursive_interface_2.f90 |  1 +
 gcc/testsuite/gfortran.dg/typebound_call_14.f03     |  1 +
 gcc/testsuite/gfortran.dg/typebound_call_16.f03     |  1 +
 gcc/testsuite/gfortran.dg/typebound_generic_8.f03   |  1 +
 gcc/testsuite/gfortran.dg/typebound_operator_18.f90 |  1 +
 gcc/testsuite/gfortran.dg/typebound_operator_19.f90 |  1 +
 gcc/testsuite/gfortran.dg/typebound_operator_9.f03  |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_14.f03     |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_17.f03     |  3 ++-
 gcc/testsuite/gfortran.dg/typebound_proc_18.f03     |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_24.f03     |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_31.f90     |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_32.f90     |  1 +
 gcc/testsuite/gfortran.dg/typebound_proc_33.f90     |  1 +
 gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90    |  1 +
 gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90    |  1 +
 gcc/testsuite/gfortran.dg/use_22.f90                |  1 +
 gcc/testsuite/gfortran.dg/use_23.f90                |  1 +
 gcc/testsuite/gfortran.dg/use_only_5.f90            |  1 +
 .../vect/no-fre-no-copy-prop-O3-pr51704.f90         |  2 ++
 gcc/testsuite/gfortran.dg/vect/pr46213.f90          |  1 +
 gcc/testsuite/gfortran.dg/whole_file_11.f90         |  2 +-
 gcc/testsuite/objc.dg/comp-types-7.m                |  1 +
 gcc/testsuite/objc.dg/stabs-1.m                     |  2 +-
 gcc/testsuite/objc.dg/super-class-2.m               |  4 ++--
 gcc/tree-cfg.c                                      |  4 ++--
 libgomp/testsuite/libgomp.c++/loop-2.C              |  2 +-
 libgomp/testsuite/libgomp.c++/loop-4.C              |  2 +-
 libgomp/testsuite/libgomp.c++/parallel-1.C          |  2 +-
 libgomp/testsuite/libgomp.c++/shared-1.C            |  2 +-
 libgomp/testsuite/libgomp.c++/single-1.C            |  2 +-
 libgomp/testsuite/libgomp.c++/single-2.C            |  2 +-
 libgomp/testsuite/libgomp.c/omp-loop02.c            |  2 +-
 libgomp/testsuite/libgomp.c/omp-parallel-for.c      |  2 +-
 libgomp/testsuite/libgomp.c/omp-parallel-if.c       |  2 +-
 libgomp/testsuite/libgomp.c/omp-single-1.c          |  2 +-
 libgomp/testsuite/libgomp.c/omp-single-2.c          |  2 +-
 libgomp/testsuite/libgomp.c/omp_matvec.c            |  2 +-
 libgomp/testsuite/libgomp.c/omp_workshare3.c        |  2 +-
 libgomp/testsuite/libgomp.c/omp_workshare4.c        |  2 +-
 libgomp/testsuite/libgomp.c/shared-1.c              |  2 +-
 .../23_containers/vector/debug/move_assign_neg.cc   |  2 +-
 823 files changed, 1166 insertions(+), 640 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/Wmissing-return1.c
 create mode 100644 gcc/testsuite/gcc.dg/Wmissing-return2.c
 create mode 100644 gcc/testsuite/gcc.dg/Wmissing-return3.c
 create mode 100644 gcc/testsuite/gcc.dg/Wmissing-return4.c
 create mode 100644 gcc/testsuite/gcc.dg/Wmissing-return5.c

diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index f33a425..79c60c2 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -722,9 +722,13 @@ C++ ObjC++ Var(warn_reorder) Warning LangEnabledBy(C++ ObjC++,Wall)
 Warn when the compiler reorders code
 
 Wreturn-type
-C ObjC C++ ObjC++ Var(warn_return_type) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+C ObjC C++ ObjC++ Var(warn_return_type) Init(1) Warning
 Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)
 
+Wmissing-return
+C ObjC C++ ObjC++ Var(warn_missing_return) LangEnabledBy(C ObjC C++ ObjC++,Wreturn-type)
+Warn whenever control may reach end of non-void function
+
 Wselector
 ObjC ObjC++ Var(warn_selector) Warning
 Warn if a selector has multiple methods
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index f8499bc..d81c2a5 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -261,7 +261,7 @@ Objective-C and Objective-C++ Dialects}.
 -Winvalid-pch -Wlarger-than=@var{len}  -Wunsafe-loop-optimizations @gol
 -Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol
 -Wmain -Wmaybe-uninitialized -Wmemset-transposed-args -Wmissing-braces @gol
--Wmissing-field-initializers -Wmissing-include-dirs @gol
+-Wmissing-field-initializers -Wmissing-include-dirs -Wmissing-return @gol
 -Wno-multichar  -Wnonnull  -Wodr  -Wno-overflow  -Wopenmp-simd @gol
 -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded @gol
 -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
@@ -3332,6 +3332,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
 -Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}  @gol
 -Wmaybe-uninitialized @gol
 -Wmissing-braces @r{(only for C/ObjC)} @gol
+-Wmissing-return @gol
 -Wnonnull  @gol
 -Wopenmp-simd @gol
 -Wparentheses  @gol
@@ -3669,6 +3670,22 @@ int b[2][2] = @{ @{ 0, 1 @}, @{ 2, 3 @} @};
 
 This warning is enabled by @option{-Wall}.
 
+@item -Wmissing-return
+@opindex Wmissing-return
+@opindex Wno-missing-return
+Warn whenever falling off the end of a non-void function body
+
+@smallexample
+int f(int a)
+@{
+  if (a)
+    return 0;
+@}
+@end smallexample
+
+This warning is enabled by @option{-Wreturn-type}.
+
+
 @item -Wmissing-include-dirs @r{(C, C++, Objective-C and Objective-C++ only)}
 @opindex Wmissing-include-dirs
 @opindex Wno-missing-include-dirs
@@ -3800,7 +3817,7 @@ For C++, a function without return type always produces a diagnostic
 message, even when @option{-Wno-return-type} is specified.  The only
 exceptions are @samp{main} and functions defined in system headers.
 
-This warning is enabled by @option{-Wall}.
+This warning is enabled by default.
 
 @item -Wswitch
 @opindex Wswitch
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
index 83325a7..89a3d57 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
@@ -2,13 +2,13 @@
 /* { dg-do compile } */
 /* { dg-options "-fcilkplus" } */
 
-int foo1 ()
+void foo1 ()
 {
   int a;
   a = __sec_reduce_add (1); /* { dg-error "Invalid builtin arguments" } */
 }
 
-int foo2 ()
+void foo2 ()
 {
   int a;
   a = __sec_reduce_add (); /* { dg-error "Invalid builtin arguments" } */
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
index f379e46..9d2ad66 100755
--- a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
@@ -12,6 +12,7 @@ int foo () {
   short s = (short)N;
   long l = (long)N;
   A[l:s:c];
+  return 0;
 }
 
 int foo1 (int N) {
@@ -19,6 +20,7 @@ int foo1 (int N) {
   char c = (char)N;
   short s = (short)N;
   A[l:s:c]; /* { dg-error "declared" } */
+  return 0;
 }
 
 
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c
index 2b47d1e..301a6f2 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60197.c
@@ -1,6 +1,6 @@
 /* PR c/60197 */
 /* { dg-do compile } */
-/* { dg-options "-fcilkplus" } */
+/* { dg-options "-fcilkplus -Wno-return-type" } */
 
 extern int foo (void);
 extern int bar (int);
diff --git a/gcc/testsuite/c-c++-common/dfp/call-by-value.c b/gcc/testsuite/c-c++-common/dfp/call-by-value.c
index 74aec53..835c92b 100644
--- a/gcc/testsuite/c-c++-common/dfp/call-by-value.c
+++ b/gcc/testsuite/c-c++-common/dfp/call-by-value.c
@@ -8,16 +8,19 @@
 int foo32 (_Decimal32 z)
 {
   z = z + 1.0df;
+  return 0;
 }
 
 int foo64 (_Decimal64 z)
 {
   z = z + 1.0dd;
+  return 0;
 }
 
 int foo128 (_Decimal128 z)
 {
   z = z + 1.0dl;
+  return 0;
 }
 
 int
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index 3c12e1a..d81c81d 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -10,4 +10,5 @@ int main2 ()
 {
   char *s, t;
   strchr (s, t);
+  return 0;
 }
diff --git a/gcc/testsuite/c-c++-common/pr36513.c b/gcc/testsuite/c-c++-common/pr36513.c
index 0263254..8cf648f 100644
--- a/gcc/testsuite/c-c++-common/pr36513.c
+++ b/gcc/testsuite/c-c++-common/pr36513.c
@@ -11,5 +11,6 @@ int main1 ()
 		  && (t) == '\0' 
 		  ? (char *) __rawmemchr (s, t) 
 		  : __builtin_strchr (s, t)));
+  return 0;
 }
 
diff --git a/gcc/testsuite/c-c++-common/pr49706-2.c b/gcc/testsuite/c-c++-common/pr49706-2.c
index 09cc9eb..30a46c2 100644
--- a/gcc/testsuite/c-c++-common/pr49706-2.c
+++ b/gcc/testsuite/c-c++-common/pr49706-2.c
@@ -10,7 +10,7 @@
 
 bool r;
 
-int
+void
 same (int a, int b)
 {
   r = !a == !b;
diff --git a/gcc/testsuite/c-c++-common/vector-1.c b/gcc/testsuite/c-c++-common/vector-1.c
index 288dd1e..54ba834 100644
--- a/gcc/testsuite/c-c++-common/vector-1.c
+++ b/gcc/testsuite/c-c++-common/vector-1.c
@@ -12,4 +12,5 @@ int f(void)
 {
  a =  ~a; /* { dg-error "" } */
  a1 =  ~a1;
+ return 0;
 }
diff --git a/gcc/testsuite/c-c++-common/vector-2.c b/gcc/testsuite/c-c++-common/vector-2.c
index e9f40a3..9db53a8 100644
--- a/gcc/testsuite/c-c++-common/vector-2.c
+++ b/gcc/testsuite/c-c++-common/vector-2.c
@@ -9,7 +9,7 @@ vector int a1;
 vector float b;
 vector int b1;
 
-int f(void)
+void f(void)
 {
  a =  a | b; /* { dg-error "" } */
  a =  a & b; /* { dg-error "" } */
diff --git a/gcc/testsuite/g++.dg/abi/covariant2.C b/gcc/testsuite/g++.dg/abi/covariant2.C
index 3231cc4..6c55ad6 100644
--- a/gcc/testsuite/g++.dg/abi/covariant2.C
+++ b/gcc/testsuite/g++.dg/abi/covariant2.C
@@ -10,7 +10,7 @@ struct c1 {};
 
 struct c3 : virtual c1
 {
-    virtual c1* f6() {}
+    virtual c1* f6() { return 0; }
     int i;
 };
 
@@ -18,7 +18,7 @@ struct c6 : virtual c3 { };
 
 struct c7 : c3
 {
-    virtual c3* f6() {}
+    virtual c3* f6() { return 0; }
 };
 
 struct c24 : virtual c7
diff --git a/gcc/testsuite/g++.dg/abi/covariant3.C b/gcc/testsuite/g++.dg/abi/covariant3.C
index 178157c..09b9912 100644
--- a/gcc/testsuite/g++.dg/abi/covariant3.C
+++ b/gcc/testsuite/g++.dg/abi/covariant3.C
@@ -34,7 +34,7 @@ struct c28 : virtual c0, virtual c11 {
     virtual c18* f6();
 };
 
-c0 *c1::f6 () {}
+c0 *c1::f6 () { return 0; }
 void c5::foo () {}
 void c10::foo () {}
 void c18::bar () {}
diff --git a/gcc/testsuite/g++.dg/abi/mangle7.C b/gcc/testsuite/g++.dg/abi/mangle7.C
index af178d3..9b5a237 100644
--- a/gcc/testsuite/g++.dg/abi/mangle7.C
+++ b/gcc/testsuite/g++.dg/abi/mangle7.C
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 
 typedef void *const t1[2];
-float const f1(t1 (&)[79], ...) {}
+float const f1(t1 (&)[79], ...) { return 0.0;}
 
 /* { dg-final { scan-assembler _Z2f1RA79_A2_KPvz } } */
diff --git a/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C b/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
index b1a1de7..c9dd850 100644
--- a/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
+++ b/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
@@ -48,6 +48,7 @@ call_for ()
   for_val2 += test_for2 (1, 3, 1);
   for_val2 += test_for2 (3, 1, 5);
   for_val2 += test_for2 (3, 7, 3);
+  return 0;
 }
 
 /* Check the use of goto. */
diff --git a/gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc b/gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc
index db81912..2bf2900 100644
--- a/gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc
+++ b/gcc/testsuite/g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-fcilkplus" }  */
+/* { dg-options "-fcilkplus -Wno-return-type" }  */
 
 #if HAVE_IO 
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/conversion/op6.C b/gcc/testsuite/g++.dg/conversion/op6.C
index 9aec9f0..8a5efc4 100644
--- a/gcc/testsuite/g++.dg/conversion/op6.C
+++ b/gcc/testsuite/g++.dg/conversion/op6.C
@@ -3,9 +3,9 @@
 
 template<class T> class smart_pointer {
 public:
-    operator T* () const { }
-    operator bool () const { }
-    operator bool () { }
+    operator T* () const { return 0; }
+    operator bool () const { return true; }
+    operator bool () { return true; }
 };
 class Context { };
 typedef smart_pointer<Context> ContextP;
diff --git a/gcc/testsuite/g++.dg/cpp0x/access01.C b/gcc/testsuite/g++.dg/cpp0x/access01.C
index 55c951f..4c645de 100644
--- a/gcc/testsuite/g++.dg/cpp0x/access01.C
+++ b/gcc/testsuite/g++.dg/cpp0x/access01.C
@@ -6,7 +6,7 @@ class A
 {
   T p;
 public:
-  template <class U> auto f() -> decltype(+p) { }
+  template <class U> auto f() -> decltype(+p) { return 0; }
 };
 
 int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto2.C b/gcc/testsuite/g++.dg/cpp0x/auto2.C
index cff36d2..25584a7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/auto2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/auto2.C
@@ -4,12 +4,12 @@
 #include <typeinfo>
 extern "C" void abort();
 
-int f() {}
+int f() { return 0; }
 
 struct A
 {
   int i;
-  int f() {}
+  int f() { return 0; }
   A operator+(A a) { return a; }
 };
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C
index f1ca05f..54fd01f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C
@@ -1,4 +1,5 @@
 // PR c++/46368
+// { dg-options "-Wno-return-type" }
 // { dg-do compile { target c++11 } }
 
 class A;
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
index 775c103..4abb0b3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
@@ -1,4 +1,5 @@
 // PR c++/48296
+// { dg-options "-Wno-return-type" }
 // { dg-do compile { target c++11 } }
 
 struct X
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc1.C b/gcc/testsuite/g++.dg/cpp0x/dc1.C
index e7ccb64..5ce5076 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc1.C
@@ -27,7 +27,7 @@ struct D : public C {
 	D (int _i) : C(), i(_i) { }
 	D () : D(-1) { }
 	virtual ~D() { }
-	virtual int f () { }
+	virtual int f () { return 0; }
 };
 
 void f_D () { C* c = new D(); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc3.C b/gcc/testsuite/g++.dg/cpp0x/dc3.C
index 9c6fd56..9c1fd53 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc3.C
@@ -43,7 +43,7 @@ struct D<X> : public C {
 	D (int _i) : C(), i(_i) { }
 	D () : D(-1) { }
 	virtual ~D() { }
-	virtual int f () { }
+	virtual int f () { return 0; }
 };
 
 void f_D () { D<X>* d = new D<X>(); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype12.C b/gcc/testsuite/g++.dg/cpp0x/decltype12.C
index eae318d..e1edf09 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype12.C
@@ -1,3 +1,4 @@
+// { dg-options "-Wno-return-type" }
 // { dg-do compile { target c++11 } }
 template<typename T, typename U>
 struct is_same
@@ -11,7 +12,7 @@ struct is_same<T, T>
   static const bool value = true;
 };
 
-int&& f(const int&) {}
+int&& f(const int&) { }
 int&& (*fp)(const int&) = f;
 int&& (&fr)(const int&) = f;
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype17.C b/gcc/testsuite/g++.dg/cpp0x/decltype17.C
index 6e5854d..e944719 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype17.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype17.C
@@ -1,4 +1,5 @@
 // PR c++/36628
+// { dg-options "-Wno-return-type" }
 // { dg-do run { target c++11 } }
 
 #include <typeinfo>
@@ -9,10 +10,10 @@ int& lvalueref();
 int&& rvalueref();
 
 decltype(true ? rvalue() : rvalue()) f()
-{}
+{ return 0; }
 
 decltype(true ? lvalueref() : lvalueref()) g()
-{}
+{ }
 
 decltype(true ? rvalueref() : rvalueref()) h()
 {}
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype3.C b/gcc/testsuite/g++.dg/cpp0x/decltype3.C
index b2e6624..b921dd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype3.C
@@ -49,7 +49,7 @@ public:
   int a;
   enum B_enum { b }; 
   decltype(a) c;
-  decltype(a) foo() { }
+  decltype(a) foo() { return 0; }
   decltype(b) enums_are_in_scope() { return b; } // ok 
 }; 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype41.C b/gcc/testsuite/g++.dg/cpp0x/decltype41.C
index 1439e15..1a45460 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype41.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype41.C
@@ -23,15 +23,15 @@ class B
 template <class T>
 struct C
 {
-  template <class U> decltype (a.i) f() { } // #1
-  template <class U> decltype (b.i) f() { } // #2
+  template <class U> decltype (a.i) f() { return 0; } // #1
+  template <class U> decltype (b.i) f() { return 0; } // #2
 };
 
 template <class T>
 struct D
 {
-  template <class U> decltype (A::j) f() { } // #1
-  template <class U> decltype (B::j) f() { } // #2
+  template <class U> decltype (A::j) f() { return 0; } // #1
+  template <class U> decltype (B::j) f() { return 0; } // #2
 };
 
 int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted28.C b/gcc/testsuite/g++.dg/cpp0x/defaulted28.C
index aa90099..2bc3e60 100644
--- a/gcc/testsuite/g++.dg/cpp0x/defaulted28.C
+++ b/gcc/testsuite/g++.dg/cpp0x/defaulted28.C
@@ -9,7 +9,7 @@ private:
   A(A const&) = default;	// { dg-error "private" }
 };
 
-int f(...) { }
+int f(...) { return 0; }
 int main() {
   A a;
   f(a); 			// { dg-error "this context" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
index eb585a8..023d839 100644
--- a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
+++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
@@ -22,7 +22,7 @@ void two [[gnu::unused]] (void) {}
 int
 five(void)
 [[noreturn]] // { dg-warning "ignored" }
-{}
+{ return 0; }
 
 [[noreturn]]
 void
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
index 1c59393..b6a11f0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
@@ -10,7 +10,7 @@ struct function
 
 template<typename T> struct C
 {
-  static T test(function f = [](int i){return i;}) { }
+  static T test(function f = [](int i){return i;}) { return 0; }
 };
 
 int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
index 03a7a4b..c201c9b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice3.C
@@ -14,6 +14,7 @@ bool Klass::dostuff()
     if (local & 1) { return true; } // { dg-error "not captured" }
     return false;
   };
+  return true;
 }
 
 int main()
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
index 914e0f7..2d9e1af 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice5.C
@@ -4,6 +4,7 @@
 template<int> int foo()
 {
   [] (void i) { return 0; } (0); // { dg-error "incomplete|invalid|no match" }
+   return 1;
 }
 
 void bar()
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
index 9e50951..6d977da 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested2.C
@@ -26,6 +26,7 @@ void f1(int i) {
 				// and explicitly by m3
         };
       };
+    return 0;
     }
   };
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C
index 635af97..5dfd6ed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template12.C
@@ -14,6 +14,7 @@ class X
         [&a]{
             typename remove_reference < decltype (a) >::type t;
         };
+	return true;
     }
 };
 template class X< int >;
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
index 29f63af..8fbb821 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C
@@ -10,7 +10,7 @@ struct T
   foo (S<N> *p)
   {
     S<N> u;
-    [&u] ()->bool {} ();
+    [&u] ()->bool { return true; } ();
   }
 };
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C
index ef573b1..41e4edd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this12.C
@@ -3,7 +3,7 @@
 
 struct A
 {
-  int f() {}
+  int f() { return 0; }
   int i;
 
   void foo()
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept16.C b/gcc/testsuite/g++.dg/cpp0x/noexcept16.C
index 10e0be9..42de4af 100644
--- a/gcc/testsuite/g++.dg/cpp0x/noexcept16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept16.C
@@ -1,5 +1,6 @@
 // PR c++/50972
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 // Ignore all errors, we're just testing that this doesn't ICE
 // { dg-prune-output "error" }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nolinkage1.C b/gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
index d38028c..474727c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
@@ -18,4 +18,4 @@ static void g()
   A<B> a;
 }
 
-int main() { g(); f(0); }
+int main() { g(); f(0); return 0; }
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
index fdaf461..b6e9131 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
@@ -1,5 +1,7 @@
 // PR c++/58599
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
+
 
 template<int> struct A1;
 
@@ -7,7 +9,7 @@ template<> struct A1<0>
 {
   template<typename, typename...> struct B1
   {
-    template<typename> int foo1() {}
+    template<typename> int foo1() { return 0; }
 
     int i1 = foo1<int>();
   };
@@ -19,7 +21,7 @@ template<> struct A2<0>
 {
   template<typename, typename> struct B2
   {
-    template<typename> int foo2() {}
+    template<typename> int foo2() { return 0; }
 
     int i2 = foo2<int>();
   };
@@ -31,7 +33,7 @@ template<> struct A3<0>
 {
   template<typename> struct B3
   {
-    template<typename> int foo3() {}
+    template<typename> int foo3() { return 0; }
 
     int i3 = foo3<int>();
   };
diff --git a/gcc/testsuite/g++.dg/cpp0x/parse1.C b/gcc/testsuite/g++.dg/cpp0x/parse1.C
index 5a11b73..3bc9444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/parse1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/parse1.C
@@ -2,4 +2,4 @@
 // { dg-do compile { target c++11 } }
 
 typedef int B;			// { dg-message "" }
-B::B() {}			// { dg-error "" }
+B::B() { return 0; }			// { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr34054.C b/gcc/testsuite/g++.dg/cpp0x/pr34054.C
index 8043f96..b4ee546 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr34054.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr34054.C
@@ -1,4 +1,4 @@
 // PR c++/34054
 // { dg-do compile { target c++11 } }
 
-template<typename... T> T foo() {} // { dg-error "not expanded|T" }
+template<typename... T> T foo() { return 0; } // { dg-error "not expanded|T" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr38795.C b/gcc/testsuite/g++.dg/cpp0x/pr38795.C
index 89ce0d3..cac60e1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr38795.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr38795.C
@@ -1,4 +1,5 @@
 // PR c++/38795
+// { dg-options "-Wno-return-type" }
 // { dg-do compile { target c++11 } }
 
 template<typename... T> int foo(int i)
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr47416.C b/gcc/testsuite/g++.dg/cpp0x/pr47416.C
index e4eb317..59b80f2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr47416.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr47416.C
@@ -1,4 +1,5 @@
 // PR c++/47416
+// { dg-options "-Wno-return-type" }
 // { dg-do compile { target c++11 } }
 
 namespace std
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr58781.C b/gcc/testsuite/g++.dg/cpp0x/pr58781.C
index 58c972f..069fcd5 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr58781.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr58781.C
@@ -9,7 +9,7 @@ operator""_s(const char32_t *a, size_t b)
   return 0;
 }
 
-int
+void
 f()
 {
   using a = decltype(U"\x1181"_s);
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for13.C b/gcc/testsuite/g++.dg/cpp0x/range-for13.C
index ab7bdde..5b20379 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for13.C
@@ -7,10 +7,12 @@
 template<typename T> int *begin(T &t)
 {
     T::fail;
+    return 0;
 }
 template<typename T> int *end(T &t)
 {
     T::fail;
+    return 0;
 }
 
 struct container1
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for14.C b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
index f43e1ab..4e0333c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/range-for14.C
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for14.C
@@ -7,10 +7,12 @@
 template<typename T> int *begin(T &t)
 {
     T::fail;
+    return 0;
 }
 template<typename T> int *end(T &t)
 {
     T::fail;
+    return 0;
 }
 
 //Test for defaults
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv2n.C b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
index 9677f58..3bccfde 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv2n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
@@ -3,7 +3,7 @@
 // Test overload resolution among reference types
 
 // { dg-do compile { target c++11 } }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 template <bool> struct sa;
 template <> struct sa<true> {};
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv3n.C b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
index 8a1730b..d981397 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv3n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
@@ -3,7 +3,7 @@
 // Test overload resolution among reference types
 
 // { dg-do compile { target c++11 } }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 template <bool> struct sa;
 template <> struct sa<true> {};
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert10.C b/gcc/testsuite/g++.dg/cpp0x/static_assert10.C
index 216f259..3b198bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/static_assert10.C
+++ b/gcc/testsuite/g++.dg/cpp0x/static_assert10.C
@@ -1,5 +1,6 @@
 // PR c++/60254
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 template<typename T> bool foo(T)
 {
diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert11.C b/gcc/testsuite/g++.dg/cpp0x/static_assert11.C
index 8a7362d..40509fa 100644
--- a/gcc/testsuite/g++.dg/cpp0x/static_assert11.C
+++ b/gcc/testsuite/g++.dg/cpp0x/static_assert11.C
@@ -1,5 +1,6 @@
 // PR c++/60254
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/cpp0x/trailing1.C b/gcc/testsuite/g++.dg/cpp0x/trailing1.C
index 7d9a906..9796e50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/trailing1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing1.C
@@ -1,6 +1,6 @@
 // Tests for late-specified return type.
 // { dg-do compile { target c++11 } }
-// { dg-options "-fabi-version=5" }
+// { dg-options "-fabi-version=5 -Wno-return-type" }
 
 auto f() -> int
 {
@@ -115,4 +115,5 @@ int main()
   l(1);
   // { dg-final { scan-assembler "_Z1mIiLi1EEDtT0_ET_" } }
   m<int,1>(1);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/trailing5.C b/gcc/testsuite/g++.dg/cpp0x/trailing5.C
index 48f3145..7861e47 100644
--- a/gcc/testsuite/g++.dg/cpp0x/trailing5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing5.C
@@ -1,5 +1,7 @@
 // PR c++/38798, DR 770
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
+
 
 struct A {};
 auto foo() -> struct A {}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic114.C b/gcc/testsuite/g++.dg/cpp0x/variadic114.C
index 82ffe83..4ed22a4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic114.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic114.C
@@ -1,5 +1,6 @@
 // PR c++/49785
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 template <typename, typename ...> struct B { };
 template <typename> class A;
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic57.C b/gcc/testsuite/g++.dg/cpp0x/variadic57.C
index a3d2bf1..f558361 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic57.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic57.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 template<typename T, int... Dims>
 struct array { 
   int foo();
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic65.C b/gcc/testsuite/g++.dg/cpp0x/variadic65.C
index e2ef931..cdcf198 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic65.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic65.C
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
+
 struct unused;
 template<typename T1 = unused, typename T2 = unused, typename T3 = unused,
          typename T4 = unused, typename T5 = unused, typename T6 = unused>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic66.C b/gcc/testsuite/g++.dg/cpp0x/variadic66.C
index ac92221..73d8568 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic66.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic66.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 template<typename Result, typename Functor, typename... ArgTypes>
 Result bind(Functor, ArgTypes...) { }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic77.C b/gcc/testsuite/g++.dg/cpp0x/variadic77.C
index 79badaa..6cd8d04 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic77.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic77.C
@@ -1,5 +1,6 @@
 // PR c++/33496
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 template<int M, int N> struct pair
 {
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic97.C b/gcc/testsuite/g++.dg/cpp0x/variadic97.C
index b251cc3..9a896a4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic97.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic97.C
@@ -1,5 +1,6 @@
 // PR c++/42266
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 template<typename... _Elements>
   class tuple;
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic98.C b/gcc/testsuite/g++.dg/cpp0x/variadic98.C
index c463cac..4aa1a42 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic98.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic98.C
@@ -1,5 +1,6 @@
 // PR c++/42358
 // { dg-do assemble { target c++11 } }
+// { dg-options "-Wno-return-type" }
 
 typedef __PTRDIFF_TYPE__ ptrdiff_t;
 typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-35023.C b/gcc/testsuite/g++.dg/cpp0x/vt-35023.C
index bc59023..cc5d1ff 100644
--- a/gcc/testsuite/g++.dg/cpp0x/vt-35023.C
+++ b/gcc/testsuite/g++.dg/cpp0x/vt-35023.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
 template<typename... T> int foo()
 {
   T t; // { dg-error "parameter packs|T" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-35024.C b/gcc/testsuite/g++.dg/cpp0x/vt-35024.C
index c20501f..124314a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/vt-35024.C
+++ b/gcc/testsuite/g++.dg/cpp0x/vt-35024.C
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-options "-Wno-return-type" }
+
 template<typename... T> int foo()
 {
   typename T::X x; // { dg-error "parameter packs|T" }
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
index 224cd1a..5548ca9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
@@ -3,4 +3,5 @@
 
 int foo () {
   [bar()]{};			// { dg-error "empty initializer" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C b/gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
index 5c72588..7b5c57f 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf-eh-personality-1.C
@@ -13,5 +13,6 @@ int foo (void)
 
 int foobar (void)
 {
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
index 89a6bb4..083606c 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
@@ -11,7 +11,7 @@ struct A {
 
 struct B : public A {
   template <typename A>
-  bool foo(A x[2]) { }
+  bool foo(A x[2]) { return true; }
 };
 
 template <typename T>
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/icf.C b/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
index ca73ab7..595e4ca 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
@@ -25,6 +25,7 @@ int
 test1(A* a)
 {
   a->work();
+  return 0;
 }
 
 int
@@ -35,4 +36,5 @@ test2(A* a)
       B b;
       b.work(a);
     }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C b/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
index a63b8a9..8b25475 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
@@ -1,6 +1,6 @@
 // PR c++/61433
 // { dg-do compile { target c++11 } }
-// { dg-options "-O -fcompare-debug -fno-inline -fno-ipa-pure-const -fipa-sra" }
+// { dg-options "-O -fcompare-debug -fno-inline -fno-ipa-pure-const -fipa-sra -Wno-return-type" }
 
 template <class T>
 struct A
@@ -20,4 +20,5 @@ auto k(T t, U u, V v) -> decltype (t.U::template B<V>::MEM)
 int main()
 {
   k( C(), A<int>(), D() );
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/debug/pr16792.C b/gcc/testsuite/g++.dg/debug/pr16792.C
index 39003cb..bfa880e 100644
--- a/gcc/testsuite/g++.dg/debug/pr16792.C
+++ b/gcc/testsuite/g++.dg/debug/pr16792.C
@@ -1,10 +1,11 @@
 // { dg-do compile }
 
 struct S { S(); };
-int foo (S b, double j) { };
+int foo (S b, double j) { return 0; };
 
 int main ()
 {
   int foo (S, double);
   S v;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/debug/pr46241.C b/gcc/testsuite/g++.dg/debug/pr46241.C
index 95c814d..20e8cb1 100644
--- a/gcc/testsuite/g++.dg/debug/pr46241.C
+++ b/gcc/testsuite/g++.dg/debug/pr46241.C
@@ -1,3 +1,5 @@
+/* { dg-options "-Wno-return-type" } */
+
 class btIDebugDraw;
 class btCollisionWorld {
     virtual btIDebugDraw* getDebugDrawer()  { };
diff --git a/gcc/testsuite/g++.dg/debug/pr46338.C b/gcc/testsuite/g++.dg/debug/pr46338.C
index caf7117..7e242b9 100644
--- a/gcc/testsuite/g++.dg/debug/pr46338.C
+++ b/gcc/testsuite/g++.dg/debug/pr46338.C
@@ -9,6 +9,7 @@ struct S
 {
   int f ()
   {
+    return 0;
   }
 };
 
diff --git a/gcc/testsuite/g++.dg/debug/pr47106.C b/gcc/testsuite/g++.dg/debug/pr47106.C
index 9ef276a..4a2f6df 100644
--- a/gcc/testsuite/g++.dg/debug/pr47106.C
+++ b/gcc/testsuite/g++.dg/debug/pr47106.C
@@ -22,12 +22,14 @@ inline bool
 baz (S s1, S)
 {
   while (f (&s1));
+  return true;
 }
 
 inline bool
 bar (S s1, S s2, S)
 {
   baz (s1, s2);
+  return true;
 }
 
 S getS ();
@@ -36,4 +38,5 @@ bool
 foo ()
 {
   bar (getS (), getS (), getS ());
+  return true;
 }
diff --git a/gcc/testsuite/g++.dg/dfp/44473-1.C b/gcc/testsuite/g++.dg/dfp/44473-1.C
index 38689fa..546025c 100644
--- a/gcc/testsuite/g++.dg/dfp/44473-1.C
+++ b/gcc/testsuite/g++.dg/dfp/44473-1.C
@@ -1,4 +1,5 @@
 /* { dg-do assemble } */
+/* { dg-options "-Wno-return-type" } */
 
 /* Minimized from the testcase in PR c++/44473; mangling of decimal types
    did not include CV qualifiers. */
diff --git a/gcc/testsuite/g++.dg/dfp/44473-2.C b/gcc/testsuite/g++.dg/dfp/44473-2.C
index 311f622..dafa78a 100644
--- a/gcc/testsuite/g++.dg/dfp/44473-2.C
+++ b/gcc/testsuite/g++.dg/dfp/44473-2.C
@@ -14,12 +14,13 @@ namespace std {
   }
 }
 
-int bar (const std::decimal::decimal64 & x) { }
+int bar (const std::decimal::decimal64 & x) { return 0; }
 
 int foo ()
 {
   std::decimal::decimal64 x(0);
   bar (x);
+  return 0;
 }
 
 // { dg-final { scan-assembler "_Z3barRKDd:" } }
diff --git a/gcc/testsuite/g++.dg/eh/builtin1.C b/gcc/testsuite/g++.dg/eh/builtin1.C
index c0516eb..a831ae2 100644
--- a/gcc/testsuite/g++.dg/eh/builtin1.C
+++ b/gcc/testsuite/g++.dg/eh/builtin1.C
@@ -16,6 +16,7 @@ foo (int i)
   } catch (...) {
     callme();
   }
+  return 0;
 }
 
 int
@@ -26,6 +27,7 @@ bar (int i)
   } catch (...) {
     callme();
   }
+  return 0;
 }
 
 /* { dg-final { scan-tree-dump-times "resx" 2 "eh" } } */
diff --git a/gcc/testsuite/g++.dg/eh/builtin2.C b/gcc/testsuite/g++.dg/eh/builtin2.C
index 6610449..a719232 100644
--- a/gcc/testsuite/g++.dg/eh/builtin2.C
+++ b/gcc/testsuite/g++.dg/eh/builtin2.C
@@ -15,6 +15,7 @@ foo (int i)
   } catch (...) {
     callme();
   }
+  return 0;
 }
 
 int
@@ -25,6 +26,7 @@ bar (int i)
   } catch (...) {
     callme();
   }
+  return 0;
 }
 
 /* { dg-final { scan-tree-dump-times "resx" 0 "eh" } } */
diff --git a/gcc/testsuite/g++.dg/eh/builtin3.C b/gcc/testsuite/g++.dg/eh/builtin3.C
index 4b382d9..bd0d492 100644
--- a/gcc/testsuite/g++.dg/eh/builtin3.C
+++ b/gcc/testsuite/g++.dg/eh/builtin3.C
@@ -13,6 +13,7 @@ bar (int i)
   } catch (...) {
     callme();
   }
+  return 0;
 }
 
 /* { dg-final { scan-tree-dump-times "resx" 1 "eh" } } */
diff --git a/gcc/testsuite/g++.dg/eh/pr45569.C b/gcc/testsuite/g++.dg/eh/pr45569.C
index 2c100d2..4d80322 100644
--- a/gcc/testsuite/g++.dg/eh/pr45569.C
+++ b/gcc/testsuite/g++.dg/eh/pr45569.C
@@ -19,5 +19,6 @@ float j ()
       x += g ();
     }
   i (x);
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/eh/sighandle.C b/gcc/testsuite/g++.dg/eh/sighandle.C
index 5c4995e..49ef1cf 100644
--- a/gcc/testsuite/g++.dg/eh/sighandle.C
+++ b/gcc/testsuite/g++.dg/eh/sighandle.C
@@ -1,5 +1,5 @@
 // { dg-do run { target { *-*-aix5* i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } }
-// { dg-options "-fexceptions -fnon-call-exceptions" }
+// { dg-options "-fexceptions -fnon-call-exceptions -Wno-return-type" }
 
 #include <signal.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/eh/unwind2.C b/gcc/testsuite/g++.dg/eh/unwind2.C
index d6181c8..8055b2e 100644
--- a/gcc/testsuite/g++.dg/eh/unwind2.C
+++ b/gcc/testsuite/g++.dg/eh/unwind2.C
@@ -1,7 +1,7 @@
 // PR debug/43290
 // { dg-do compile }
-// { dg-options "-O2" }
-// { dg-options "-O3 -mavx -fPIC -mtune=core2" { target { { i?86-*-* x86_64-*-* } && { ilp32 && fpic } } } }
+// { dg-options "-O2 -Wno-return-type" }
+// { dg-options "-O3 -mavx -fPIC -mtune=core2 -Wno-return-type" { target { { i?86-*-* x86_64-*-* } && { ilp32 && fpic } } } }
 
 namespace std
 {
diff --git a/gcc/testsuite/g++.dg/expr/bitfield11.C b/gcc/testsuite/g++.dg/expr/bitfield11.C
index bab303e..3edbcb5 100644
--- a/gcc/testsuite/g++.dg/expr/bitfield11.C
+++ b/gcc/testsuite/g++.dg/expr/bitfield11.C
@@ -10,4 +10,5 @@ bool
 foo (A *x, A *y)
 {
   x->a = y ? y->a : true;
+  return true;
 }
diff --git a/gcc/testsuite/g++.dg/expr/cond12.C b/gcc/testsuite/g++.dg/expr/cond12.C
index 9134f81..7f3f5ff 100644
--- a/gcc/testsuite/g++.dg/expr/cond12.C
+++ b/gcc/testsuite/g++.dg/expr/cond12.C
@@ -1,5 +1,6 @@
 // PR c++/58714
 // { dg-do run }
+// { dg-options "-Wno-return-type" }
 
 struct X {
     X& operator=(const X&){}
@@ -9,4 +10,5 @@ struct X {
 int main(int argv,char**) {
   X a, b;
   ((argv > 2) ? a : b) = X();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/expr/static_cast7.C b/gcc/testsuite/g++.dg/expr/static_cast7.C
index bced805..4ccaac6 100644
--- a/gcc/testsuite/g++.dg/expr/static_cast7.C
+++ b/gcc/testsuite/g++.dg/expr/static_cast7.C
@@ -1,10 +1,11 @@
 // Regression test for bug 39415 (and its duplicate 44916).
 struct S {};
 struct T : S {};
-int f(const T*) {}
+int f(const T*) { return 0; }
 void f(T*);
 int main() {
   S* s(0);
   int a = f(static_cast<const T*>(s));
   int b = f(static_cast<const T*>(0));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ext/builtin-object-size3.C b/gcc/testsuite/g++.dg/ext/builtin-object-size3.C
index 09263e5..7314f4c 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-object-size3.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-object-size3.C
@@ -13,6 +13,7 @@ foo ()
   MEMCPY (p, "abcdefghijklmnopqrstuvwxyz", sizeof (int));
   MEMCPY (q, "abcdefghijklmnopqrstuvwxyz", 4 * sizeof (int));
   baz (p, q);
+  return 0;
 }
 
 int
@@ -23,4 +24,5 @@ bar ()
   MEMCPY (p, "abcdefghijklmnopqrstuvwxyz", sizeof (int) + 1);		// { dg-warning "will always overflow destination buffer" }
   MEMCPY (q, "abcdefghijklmnopqrstuvwxyz", 4 * sizeof (int) + 1);	// { dg-warning "will always overflow destination buffer" }
   baz (p, q);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index c2e99ef..e10f431 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,7 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-options "-Wno-return-type" }
+
 #include <cassert>
 
 struct S { const S& operator= (const S&); };
@@ -9,6 +11,7 @@ bool f ();
 int main ()
 {
   assert (__has_nothrow_assign (S) == f ());
+  return 0;
 }
 
 const S& S::operator= (const S&) { }
diff --git a/gcc/testsuite/g++.dg/ext/java-1.C b/gcc/testsuite/g++.dg/ext/java-1.C
index f88e1fc..0af3add 100644
--- a/gcc/testsuite/g++.dg/ext/java-1.C
+++ b/gcc/testsuite/g++.dg/ext/java-1.C
@@ -1,5 +1,5 @@
 // { dg-do compile { target { ! { powerpc-ibm-aix* } } } }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 // Test extern "java" and some throwing of the objects.
 
 extern "Java"
diff --git a/gcc/testsuite/g++.dg/ext/label7.C b/gcc/testsuite/g++.dg/ext/label7.C
index e92dccf..a32b8cd 100644
--- a/gcc/testsuite/g++.dg/ext/label7.C
+++ b/gcc/testsuite/g++.dg/ext/label7.C
@@ -9,4 +9,5 @@ int f (void)
   __label__ c;	// { dg-error "not at the beginning" }
   a:;		// { dg-error "duplicate label" }
   c:;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ext/label8.C b/gcc/testsuite/g++.dg/ext/label8.C
index 1f6175d..c32d29c 100644
--- a/gcc/testsuite/g++.dg/ext/label8.C
+++ b/gcc/testsuite/g++.dg/ext/label8.C
@@ -19,4 +19,5 @@ int f (void)
 	e:;
       }
   }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ext/tmplattr7.C b/gcc/testsuite/g++.dg/ext/tmplattr7.C
index ee6c418..545e089 100644
--- a/gcc/testsuite/g++.dg/ext/tmplattr7.C
+++ b/gcc/testsuite/g++.dg/ext/tmplattr7.C
@@ -8,4 +8,4 @@ bool test(const List<int> &);
 
 int i = bar(List<int>());
 
-bool test(const List<int> &) {}
+bool test(const List<int> &) { return true; }
diff --git a/gcc/testsuite/g++.dg/ext/vector14.C b/gcc/testsuite/g++.dg/ext/vector14.C
index 8e79210..b5476b0 100644
--- a/gcc/testsuite/g++.dg/ext/vector14.C
+++ b/gcc/testsuite/g++.dg/ext/vector14.C
@@ -1,5 +1,6 @@
 // PR c++/35758
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 // { dg-options "-msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
 // { dg-require-effective-target sse }
 // Ignore warning on some powerpc-linux configurations.
@@ -8,7 +9,7 @@
 
 #define vector __attribute__((vector_size(16)))
 
-template<int N> vector signed int foo (vector float value) {}
+template<int N> vector signed int foo (vector float value) { }
 
 template<int> void foo (float) {}
 
@@ -19,4 +20,5 @@ main ()
   float f;
   foo<1> (v);
   foo<1> (f);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ext/vector8.C b/gcc/testsuite/g++.dg/ext/vector8.C
index 5f9f956..408d586 100644
--- a/gcc/testsuite/g++.dg/ext/vector8.C
+++ b/gcc/testsuite/g++.dg/ext/vector8.C
@@ -17,5 +17,6 @@ int f(void)
  a1 =  a1 | b1;
  a1 =  a1 & b1;
  a1 =  a1 ^ b1;
+ return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon1.C b/gcc/testsuite/g++.dg/ext/visibility/anon1.C
index 16647b2..ae08d71 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/anon1.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/anon1.C
@@ -6,5 +6,5 @@
 
 namespace
 {
-  int f() { }
+  int f() { return 0; }
 }
diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon2.C b/gcc/testsuite/g++.dg/ext/visibility/anon2.C
index 1d8e479..3a2b488 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/anon2.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/anon2.C
@@ -1,6 +1,7 @@
 // Test for propagation of anonymous namespace internal linkage
 
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 // { dg-final { scan-assembler-not "globl.*_Z1fv" } }
 
 namespace
diff --git a/gcc/testsuite/g++.dg/ext/visibility/namespace1.C b/gcc/testsuite/g++.dg/ext/visibility/namespace1.C
index b7773dc..1da1c14 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/namespace1.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/namespace1.C
@@ -10,7 +10,7 @@
 
 namespace foo __attribute ((visibility ("hidden")))
 {
-  int f() { }
+  int f() { return 0; }
   void g();
   template <typename T> void t() { }
   class A
diff --git a/gcc/testsuite/g++.dg/gcov/gcov-1.C b/gcc/testsuite/g++.dg/gcov/gcov-1.C
index c279b14..e1a5733 100644
--- a/gcc/testsuite/g++.dg/gcov/gcov-1.C
+++ b/gcc/testsuite/g++.dg/gcov/gcov-1.C
@@ -1,7 +1,7 @@
 /* Check that execution counts and branch probabilities for various C
    constructs are reported correctly by gcov. */
 
-/* { dg-options "-fprofile-arcs -ftest-coverage" } */
+/* { dg-options "-fprofile-arcs -ftest-coverage -Wno-return-type" } */
 /* { dg-do run { target native } } */
 
 extern "C" void abort (void);
diff --git a/gcc/testsuite/g++.dg/gomp/pr37189.C b/gcc/testsuite/g++.dg/gomp/pr37189.C
index 31d95f2..6ec28d7 100644
--- a/gcc/testsuite/g++.dg/gomp/pr37189.C
+++ b/gcc/testsuite/g++.dg/gomp/pr37189.C
@@ -24,4 +24,5 @@ foo ()
   T t;
   #pragma omp task
     bar (t);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/gomp/pr39495-1.C b/gcc/testsuite/g++.dg/gomp/pr39495-1.C
index 8563e68..e5fbb98 100644
--- a/gcc/testsuite/g++.dg/gomp/pr39495-1.C
+++ b/gcc/testsuite/g++.dg/gomp/pr39495-1.C
@@ -48,6 +48,7 @@ foo (void)
 #pragma omp for
   for (u = UINT_MAX - 6; u < UINT_MAX; u++)
     ;
+  return 0;
 }
 
 int
@@ -92,4 +93,5 @@ bar (void)
 #pragma omp for
   for (u = UINT_MAX - 6; u < UINT_MAX; u += 2)
     ;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/gomp/pr39495-2.C b/gcc/testsuite/g++.dg/gomp/pr39495-2.C
index c0b4d5d..c6b9ea1 100644
--- a/gcc/testsuite/g++.dg/gomp/pr39495-2.C
+++ b/gcc/testsuite/g++.dg/gomp/pr39495-2.C
@@ -36,4 +36,6 @@ foo (void)
 #pragma omp for
   for (u = UINT_MAX - 6; u == UINT_MAX; u++)	// { dg-error "invalid controlling predicate" }
     ;
+
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/gomp/pr41429.C b/gcc/testsuite/g++.dg/gomp/pr41429.C
index 7de41b8..e299600 100644
--- a/gcc/testsuite/g++.dg/gomp/pr41429.C
+++ b/gcc/testsuite/g++.dg/gomp/pr41429.C
@@ -1,5 +1,5 @@
 // PR middle-end/41429
 // { dg-do compile { target fpic } }
-// { dg-options "-fopenmp -O2 -fpic" }
+// { dg-options "-fopenmp -O2 -fpic -Wno-return-type" }
 
 #include "pr37189.C"
diff --git a/gcc/testsuite/g++.dg/graphite/pr41305.C b/gcc/testsuite/g++.dg/graphite/pr41305.C
index 6a30b0e..756b126 100644
--- a/gcc/testsuite/g++.dg/graphite/pr41305.C
+++ b/gcc/testsuite/g++.dg/graphite/pr41305.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-O3 -floop-interchange -Wno-conversion-null" }
+// { dg-options "-O3 -floop-interchange -Wno-conversion-null -Wno-return-type" }
 
 void __throw_bad_alloc ();
 
diff --git a/gcc/testsuite/g++.dg/graphite/pr42930.C b/gcc/testsuite/g++.dg/graphite/pr42930.C
index c1150ce..30319f2 100644
--- a/gcc/testsuite/g++.dg/graphite/pr42930.C
+++ b/gcc/testsuite/g++.dg/graphite/pr42930.C
@@ -1,4 +1,5 @@
 /* { dg-options "-O1 -floop-block" } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef unsigned char byte;
 typedef unsigned int uint;
diff --git a/gcc/testsuite/g++.dg/inherit/covariant10.C b/gcc/testsuite/g++.dg/inherit/covariant10.C
index fe5d03c..d150953 100644
--- a/gcc/testsuite/g++.dg/inherit/covariant10.C
+++ b/gcc/testsuite/g++.dg/inherit/covariant10.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 // Contributed by Nathan Sidwell 23 Oct 2003 <nathan@codesourcery.com>
 // Origin: grigory@stl.sarov.ru
diff --git a/gcc/testsuite/g++.dg/inherit/covariant11.C b/gcc/testsuite/g++.dg/inherit/covariant11.C
index acba965..785105f 100644
--- a/gcc/testsuite/g++.dg/inherit/covariant11.C
+++ b/gcc/testsuite/g++.dg/inherit/covariant11.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 // Contributed by Nathan Sidwell 23 Oct 2003 <nathan@codesourcery.com>
 // Origin: grigory@stl.sarov.ru
diff --git a/gcc/testsuite/g++.dg/init/inline1.C b/gcc/testsuite/g++.dg/init/inline1.C
index f3e3234..68e2e81 100644
--- a/gcc/testsuite/g++.dg/init/inline1.C
+++ b/gcc/testsuite/g++.dg/init/inline1.C
@@ -1,5 +1,5 @@
 // PR c++/9167
-// { dg-options "-finline" }
+// { dg-options "-finline -Wno-return-type" }
 
 struct A {
   ~A();
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index 45f6e7a..afe3da9 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-O2 -fstrict-aliasing" }
+// { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/reference2.C b/gcc/testsuite/g++.dg/init/reference2.C
index 42f5374..bdcfcf1 100644
--- a/gcc/testsuite/g++.dg/init/reference2.C
+++ b/gcc/testsuite/g++.dg/init/reference2.C
@@ -9,5 +9,6 @@ int f()
 {
   typedef int& T;
   T a = T();  // { dg-error "value-initialization of reference" }
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/init/reference3.C b/gcc/testsuite/g++.dg/init/reference3.C
index 8cc5afd..4db4c3e 100644
--- a/gcc/testsuite/g++.dg/init/reference3.C
+++ b/gcc/testsuite/g++.dg/init/reference3.C
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
+
 // This code used to be accepted but it is invalid as there is no
 // value initialization of a reference type.
 // PR c++/36695
diff --git a/gcc/testsuite/g++.dg/init/switch1.C b/gcc/testsuite/g++.dg/init/switch1.C
index b0b06b7..1042b63 100644
--- a/gcc/testsuite/g++.dg/init/switch1.C
+++ b/gcc/testsuite/g++.dg/init/switch1.C
@@ -5,4 +5,5 @@ int f(int c)
     case d: /* { dg-error "'d' was not declared" } */
      int optBzip2 = true;
   }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-10.C b/gcc/testsuite/g++.dg/ipa/devirt-10.C
index 658442e..5ed23eb 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-10.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-10.C
@@ -4,7 +4,7 @@ class wxPaintEvent {  };
 struct wxDCBase
 { 
   wxDCBase ();
-  virtual int GetLayoutDirection() const{}
+  virtual int GetLayoutDirection() const{ return 0; }
   virtual void SetLayoutDirection(int){}
 };
 struct wxWindowDC  : public wxDCBase {};
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-13.C b/gcc/testsuite/g++.dg/ipa/devirt-13.C
index b338a4c..3e82911 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-13.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-13.C
@@ -11,7 +11,7 @@ public:
 };
 }
 class A a, *b=&a;
-main()
+int main()
 {
   return b->foo();
 }
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-14.C b/gcc/testsuite/g++.dg/ipa/devirt-14.C
index 456d44f..b4a2f12 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-14.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-14.C
@@ -20,7 +20,7 @@ public:
 };
 }
 class B a, *b=&a;
-main()
+int main()
 {
   if (0)
     {
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-15.C b/gcc/testsuite/g++.dg/ipa/devirt-15.C
index 9245646..8a9e837 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-15.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-15.C
@@ -28,9 +28,10 @@ m(void)
 {
   b->foo();
 }
-main()
+int main()
 {
   m();
+  return 0;
 }
 
 /* { dg-final { scan-ipa-dump "speculatively devirtualizing call" "devirt"} } */
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-16.C b/gcc/testsuite/g++.dg/ipa/devirt-16.C
index dd7696e..c58da84 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-16.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-16.C
@@ -19,7 +19,7 @@ public:
 };
 }
 class B *b;
-main()
+int main()
 {
   int c;
   if (c)
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-17.C b/gcc/testsuite/g++.dg/ipa/devirt-17.C
index ce7943a..2a8822e 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-17.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-17.C
@@ -20,7 +20,7 @@ public:
 }
 class B *b;
 void get_me_lost (void *);
-main()
+int main()
 {
   int c;
   if (c)
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-18.C b/gcc/testsuite/g++.dg/ipa/devirt-18.C
index dbbe597..6ff2bb3 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-18.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-18.C
@@ -19,7 +19,7 @@ public:
 };
 }
 class B *b;
-main()
+int main()
 {
   if (0)
     {
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-19.C b/gcc/testsuite/g++.dg/ipa/devirt-19.C
index 13686e3..b62611e 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-19.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-19.C
@@ -2,7 +2,7 @@
    Previously we were failing by considering CLOBBER statement to be
    a type change.  */
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-cp"  } */
+/* { dg-options "-O2 -fdump-ipa-cp -Wno-return-type"  } */
 struct A {
   void operator==(const A &);
 };
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-21.C b/gcc/testsuite/g++.dg/ipa/devirt-21.C
index 675bd08..8bdc3f1 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-21.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-21.C
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O3 -fno-early-inlining -fno-ipa-sra -fdump-ipa-cp"  } */
+/* { dg-options "-O3 -fno-early-inlining -fno-ipa-sra -fdump-ipa-cp -Wno-return-type"  } */
 /* Main purpose is to verify that we do not produce wrong devirtualization to
    C::m_fn1.  We currently devirtualize to B::m_fn1, so check that. */
 #include <stdlib.h>
@@ -33,9 +33,10 @@ MultiTermDocs::~MultiTermDocs() {
 
 B *C::m_fn1(int *) { abort (); }
 
-main()
+int main()
 {
   class C c;
+  return 0;
 }
 /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
 /* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-23.C b/gcc/testsuite/g++.dg/ipa/devirt-23.C
index 98d86ae..d925ffb 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-23.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-23.C
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O3 -fno-partial-inlining -fdump-ipa-cp -fno-devirtualize-speculatively"  } */
+/* { dg-options "-O3 -Wno-return-type -fno-partial-inlining -fdump-ipa-cp -fno-devirtualize-speculatively"  } */
 /* Main purpose is to verify that we do not produce wrong devirtualization to
    C::m_fn1.  We currently devirtualize to B::m_fn1, so check that. */
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-34.C b/gcc/testsuite/g++.dg/ipa/devirt-34.C
index 5d56e1e..2a802d3 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-34.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-34.C
@@ -10,6 +10,7 @@ t(struct B *b)
 {
   struct A *a=b;
   a->t();
+  return 0;
 }
 
 /* We should guess that the pointer of type B probably points to an instance
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-38.C b/gcc/testsuite/g++.dg/ipa/devirt-38.C
index 2d95bf7..ec12296 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-38.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-38.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ccp1"  } */
+/* { dg-options "-O2 -fdump-tree-ccp1 -Wno-return-type"  } */
 class SnmpSyntax
 {
 public:
diff --git a/gcc/testsuite/g++.dg/ipa/pr43812.C b/gcc/testsuite/g++.dg/ipa/pr43812.C
index cc46eed..c9971b4 100644
--- a/gcc/testsuite/g++.dg/ipa/pr43812.C
+++ b/gcc/testsuite/g++.dg/ipa/pr43812.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fwhole-program -fipa-cp" } */
+/* { dg-options "-O -fwhole-program -fipa-cp -Wno-return-type" } */
 
 typedef float scoord_t;
 typedef scoord_t sdist_t;
diff --git a/gcc/testsuite/g++.dg/ipa/pr44372.C b/gcc/testsuite/g++.dg/ipa/pr44372.C
index 22aa747..539f32b 100644
--- a/gcc/testsuite/g++.dg/ipa/pr44372.C
+++ b/gcc/testsuite/g++.dg/ipa/pr44372.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fipa-cp -fipa-cp-clone" } */
+/* { dg-options "-O -fipa-cp -fipa-cp-clone -Wno-return-type" } */
 
 template < typename > class S3;
 
diff --git a/gcc/testsuite/g++.dg/ipa/pr45572-1.C b/gcc/testsuite/g++.dg/ipa/pr45572-1.C
index 82f3470..2266d81 100644
--- a/gcc/testsuite/g++.dg/ipa/pr45572-1.C
+++ b/gcc/testsuite/g++.dg/ipa/pr45572-1.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-finline-small-functions -findirect-inlining -finline-functions -O" }
+// { dg-options "-finline-small-functions -findirect-inlining -finline-functions -O -Wno-return-type" }
 
 extern "C" {
 typedef long unsigned int size_t;
diff --git a/gcc/testsuite/g++.dg/ipa/pr58371.C b/gcc/testsuite/g++.dg/ipa/pr58371.C
index 00cfbb8..02c14fa 100644
--- a/gcc/testsuite/g++.dg/ipa/pr58371.C
+++ b/gcc/testsuite/g++.dg/ipa/pr58371.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 
 typedef int size_t;
diff --git a/gcc/testsuite/g++.dg/ipa/pr59176.C b/gcc/testsuite/g++.dg/ipa/pr59176.C
index d576bc3..123e50a 100644
--- a/gcc/testsuite/g++.dg/ipa/pr59176.C
+++ b/gcc/testsuite/g++.dg/ipa/pr59176.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3" } */
+/* { dg-options "-O3 -Wno-return-type" } */
 
 template <class> class A {
 protected:
diff --git a/gcc/testsuite/g++.dg/ipa/pr60640-1.C b/gcc/testsuite/g++.dg/ipa/pr60640-1.C
index 7a0b918..2e0353d 100644
--- a/gcc/testsuite/g++.dg/ipa/pr60640-1.C
+++ b/gcc/testsuite/g++.dg/ipa/pr60640-1.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-O3" }
+// { dg-options "-O3 -Wno-return-type" }
 
 class ASN1Object
 {
diff --git a/gcc/testsuite/g++.dg/ipa/pr61540.C b/gcc/testsuite/g++.dg/ipa/pr61540.C
index e7dee72..e297fe3 100644
--- a/gcc/testsuite/g++.dg/ipa/pr61540.C
+++ b/gcc/testsuite/g++.dg/ipa/pr61540.C
@@ -6,7 +6,7 @@ struct data {
 };
 
 struct top {
-  virtual int topf() {}
+  virtual int topf() { return 0; }
 };
 
 struct intermediate: top {
diff --git a/gcc/testsuite/g++.dg/ipa/remref-1.C b/gcc/testsuite/g++.dg/ipa/remref-1.C
index c25c425..a2c316a 100644
--- a/gcc/testsuite/g++.dg/ipa/remref-1.C
+++ b/gcc/testsuite/g++.dg/ipa/remref-1.C
@@ -28,7 +28,7 @@ allocate_a ()
   a = new A();
 }
 
-main()
+int main()
 {
   allocate_a();
   for (int i=0; i<10000;i++)
diff --git a/gcc/testsuite/g++.dg/ipa/remref-2.C b/gcc/testsuite/g++.dg/ipa/remref-2.C
index 06bc71a..1cece65 100644
--- a/gcc/testsuite/g++.dg/ipa/remref-2.C
+++ b/gcc/testsuite/g++.dg/ipa/remref-2.C
@@ -29,7 +29,7 @@ allocate_a ()
   a = new A();
 }
 
-main()
+int main()
 {
   allocate_a();
   for (int i=0; i<10000;i++)
diff --git a/gcc/testsuite/g++.dg/lookup/builtin2.C b/gcc/testsuite/g++.dg/lookup/builtin2.C
index be0a6f6..1ce128e 100644
--- a/gcc/testsuite/g++.dg/lookup/builtin2.C
+++ b/gcc/testsuite/g++.dg/lookup/builtin2.C
@@ -16,4 +16,5 @@ namespace std
 
 int f () {
   std::toupper((signed int)'a');
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lookup/crash3.C b/gcc/testsuite/g++.dg/lookup/crash3.C
index 5b58e8e..f6187e0 100644
--- a/gcc/testsuite/g++.dg/lookup/crash3.C
+++ b/gcc/testsuite/g++.dg/lookup/crash3.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 // Contributed by Wolfgang Wieser <wwieser at gmx dot de>
 // PR c++/15967: ICE with ambiguous operator new
 
@@ -12,4 +13,5 @@ struct C : A,B {};
 int crash() 
 {
   C *c=new C();   // { dg-error "ambiguous" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lookup/hidden-var1.C b/gcc/testsuite/g++.dg/lookup/hidden-var1.C
index 6be32b5..027388c 100644
--- a/gcc/testsuite/g++.dg/lookup/hidden-var1.C
+++ b/gcc/testsuite/g++.dg/lookup/hidden-var1.C
@@ -1,5 +1,7 @@
 // Origin PR c++/45625
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
+
 
 struct Outer
 {
diff --git a/gcc/testsuite/g++.dg/lookup/struct2.C b/gcc/testsuite/g++.dg/lookup/struct2.C
index a66f403..a63e03d 100644
--- a/gcc/testsuite/g++.dg/lookup/struct2.C
+++ b/gcc/testsuite/g++.dg/lookup/struct2.C
@@ -4,4 +4,4 @@ struct c {};
 namespace A {
   int c(struct c*req);
 }
-int A::c(struct c*req) {}
+int A::c(struct c*req) { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/20080709_0.C b/gcc/testsuite/g++.dg/lto/20080709_0.C
index 55ae8c9..fba903e 100644
--- a/gcc/testsuite/g++.dg/lto/20080709_0.C
+++ b/gcc/testsuite/g++.dg/lto/20080709_0.C
@@ -4,6 +4,7 @@ class Init     {
 };
 
 int f(Init *a) {
+  return 0;
 }
 
 int main(void){
diff --git a/gcc/testsuite/g++.dg/lto/20080907_0.C b/gcc/testsuite/g++.dg/lto/20080907_0.C
index 9a45523..b35f0e3 100644
--- a/gcc/testsuite/g++.dg/lto/20080907_0.C
+++ b/gcc/testsuite/g++.dg/lto/20080907_0.C
@@ -1,3 +1,4 @@
 // { dg-lto-do assemble }
+// { dg-lto-options "-Wno-return-type" }
 struct Foo { void func (); }; Foo & bar () { } struct Baz { Baz (Baz &); };
 Baz dummy() { bar().func(); }
diff --git a/gcc/testsuite/g++.dg/lto/20080915_0.C b/gcc/testsuite/g++.dg/lto/20080915_0.C
index 3789765..3a88c12 100644
--- a/gcc/testsuite/g++.dg/lto/20080915_0.C
+++ b/gcc/testsuite/g++.dg/lto/20080915_0.C
@@ -1,4 +1,6 @@
 // { dg-lto-do assemble }
+// { dg-lto-options "-Wno-return-type" }
+
 struct Foo {
  static const int dummy;
 
diff --git a/gcc/testsuite/g++.dg/lto/20080916_0.C b/gcc/testsuite/g++.dg/lto/20080916_0.C
index 3c900cd..1378cf7 100644
--- a/gcc/testsuite/g++.dg/lto/20080916_0.C
+++ b/gcc/testsuite/g++.dg/lto/20080916_0.C
@@ -1,4 +1,5 @@
 /* { dg-lto-do assemble } */
+/* { dg-lto-options "-Wno-return-type" } */
 
 enum _Ios_Fmtflags     {
  _S_boolalpha };
diff --git a/gcc/testsuite/g++.dg/lto/20081022_0.C b/gcc/testsuite/g++.dg/lto/20081022_0.C
index 219f92d..ff5bdb1 100644
--- a/gcc/testsuite/g++.dg/lto/20081022_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081022_0.C
@@ -6,6 +6,7 @@ f (foo * a)
   return a->bar ();
 }
 
-main()
+int main()
 {
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lto/20081023_0.C b/gcc/testsuite/g++.dg/lto/20081023_0.C
index ab3fc36..7d591ae 100644
--- a/gcc/testsuite/g++.dg/lto/20081023_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081023_0.C
@@ -9,6 +9,7 @@ f (void)
   func ();
 }
 
-main()
+int main()
 {
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lto/20081118_0.C b/gcc/testsuite/g++.dg/lto/20081118_0.C
index 7be32b6..2d0b4fc 100644
--- a/gcc/testsuite/g++.dg/lto/20081118_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081118_0.C
@@ -18,4 +18,5 @@ class foo : public object
 int
 foo::method(void)
 {
+	return 0;
 }
diff --git a/gcc/testsuite/g++.dg/lto/20081118_1.C b/gcc/testsuite/g++.dg/lto/20081118_1.C
index a1bf081..4b97319 100644
--- a/gcc/testsuite/g++.dg/lto/20081118_1.C
+++ b/gcc/testsuite/g++.dg/lto/20081118_1.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" }
+
 class object {
 public:
   virtual ~object() {}
diff --git a/gcc/testsuite/g++.dg/lto/20081120-1_0.C b/gcc/testsuite/g++.dg/lto/20081120-1_0.C
index 6827337..09f5dff 100644
--- a/gcc/testsuite/g++.dg/lto/20081120-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081120-1_0.C
@@ -4,6 +4,7 @@ extern "C"
 {
  extern __inline __attribute__((__gnu_inline__)) int pthread_equal(int, int)
  {
+	return 0;
  }
 }
 static __typeof(pthread_equal)
diff --git a/gcc/testsuite/g++.dg/lto/20081120-1_1.C b/gcc/testsuite/g++.dg/lto/20081120-1_1.C
index e7e24a5..cc3f4ad 100644
--- a/gcc/testsuite/g++.dg/lto/20081120-1_1.C
+++ b/gcc/testsuite/g++.dg/lto/20081120-1_1.C
@@ -2,6 +2,7 @@ extern "C"
 {
  extern __inline __attribute__((__gnu_inline__)) int pthread_equal(int, int)
  {
+   return 0;
  }
 }
 static __typeof(pthread_equal)
diff --git a/gcc/testsuite/g++.dg/lto/20081127_1.C b/gcc/testsuite/g++.dg/lto/20081127_1.C
index 6488ac8..63ae50c 100644
--- a/gcc/testsuite/g++.dg/lto/20081127_1.C
+++ b/gcc/testsuite/g++.dg/lto/20081127_1.C
@@ -1,3 +1,3 @@
 struct Foo { Foo(); };
 Foo::Foo() { }
-main() { return 0; }
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/20081217-2_0.C b/gcc/testsuite/g++.dg/lto/20081217-2_0.C
index a47b0b5..600b042 100644
--- a/gcc/testsuite/g++.dg/lto/20081217-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20081217-2_0.C
@@ -1,5 +1,5 @@
 struct A {
-  virtual int foo() {}
+  virtual int foo() { return 0; }
 };
 struct B {
   virtual int f() {return 1; }
@@ -13,7 +13,7 @@ C::C()
 {
 }
 
-main()
+int main()
 {
   C c;
   return c.f();
diff --git a/gcc/testsuite/g++.dg/lto/20090303_0.C b/gcc/testsuite/g++.dg/lto/20090303_0.C
index 88bd6ad..13514cd 100644
--- a/gcc/testsuite/g++.dg/lto/20090303_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090303_0.C
@@ -16,7 +16,7 @@ void Test() {
  int int_set_;
  foobar (&int_set_, &test_ints[j]);
 }
-main()
+int main()
 {
   Test();
   return 0;
diff --git a/gcc/testsuite/g++.dg/lto/20090311-1_0.C b/gcc/testsuite/g++.dg/lto/20090311-1_0.C
index 6d40327..4bc9f14 100644
--- a/gcc/testsuite/g++.dg/lto/20090311-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090311-1_0.C
@@ -26,7 +26,7 @@ struct A {
 A a;
 
 extern int foo();
-main()
+int main()
 {
   a.x = 4 + c.x;
   foo();
diff --git a/gcc/testsuite/g++.dg/lto/20090312_0.C b/gcc/testsuite/g++.dg/lto/20090312_0.C
index b2222c2..14b71b7 100644
--- a/gcc/testsuite/g++.dg/lto/20090312_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090312_0.C
@@ -5,7 +5,7 @@ extern "C" {
     extern JSErrorCallback p;
 };
 
-main()
+int main()
 {
   if ( x == ONE && p == 0)
     return 0;
diff --git a/gcc/testsuite/g++.dg/lto/20090315_0.C b/gcc/testsuite/g++.dg/lto/20090315_0.C
index 930fb16..1cae572 100644
--- a/gcc/testsuite/g++.dg/lto/20090315_0.C
+++ b/gcc/testsuite/g++.dg/lto/20090315_0.C
@@ -6,4 +6,4 @@ struct Foo {
   static Foo *foo_;
 };
 Foo *Foo::foo_;
-main() { return 0; }
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/20091002-1_0.C b/gcc/testsuite/g++.dg/lto/20091002-1_0.C
index c63b079..a59a0cb 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-1_0.C
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-require-effective-target fpic }
-// { dg-lto-options {{-fPIC -flto}} }
+// { dg-lto-options {{-fPIC -flto -Wno-return-type}} }
 // { dg-extra-ld-options "-fPIC -r -nostdlib" }
 
 namespace std __attribute__ ((__visibility__ ("default")))
diff --git a/gcc/testsuite/g++.dg/lto/20091002-2_0.C b/gcc/testsuite/g++.dg/lto/20091002-2_0.C
index bf936bf..12a1596 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-2_0.C
@@ -4,7 +4,7 @@
 // { dg-extra-ld-options "-fPIC -r -nostdlib" }
 
 class DataArray {
-    int max() const    { }
+    int max() const    { return 0; }
 };
 template < class HashItem > 
 class DataHashTable {
diff --git a/gcc/testsuite/g++.dg/lto/20091002-3_0.C b/gcc/testsuite/g++.dg/lto/20091002-3_0.C
index 4bff78b..0d9afc4 100644
--- a/gcc/testsuite/g++.dg/lto/20091002-3_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091002-3_0.C
@@ -5,7 +5,7 @@
 
 template < class T > 
 class DataArray {
-    int max() const { }
+    int max() const { return 0; }
 };
 class Name { };
 class DataHashTable {
diff --git a/gcc/testsuite/g++.dg/lto/20091004-1_0.C b/gcc/testsuite/g++.dg/lto/20091004-1_0.C
index 649e35c..79b19b9 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-1_0.C
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-require-effective-target fpic }
-// { dg-lto-options {{-fPIC -O -flto}} }
+// { dg-lto-options {{-fPIC -O -flto -Wno-return-type }} }
 
 typedef double Real;
 class Vector {
diff --git a/gcc/testsuite/g++.dg/lto/20091004-1_1.C b/gcc/testsuite/g++.dg/lto/20091004-1_1.C
index 0328aba..78b332c 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-1_1.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-1_1.C
@@ -1,3 +1,4 @@
+// { dg-lto-options {{ -Wno-return-type }} }
 typedef double Real;
 class Vector {
     int dimen;
diff --git a/gcc/testsuite/g++.dg/lto/20091004-2_0.C b/gcc/testsuite/g++.dg/lto/20091004-2_0.C
index cc1204e..2da3df6 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-2_0.C
@@ -1,6 +1,6 @@
 // { dg-lto-do link }
 // { dg-require-effective-target fpic }
-// { dg-lto-options {{-fPIC -O -flto}} }
+// { dg-lto-options {{-fPIC -O -flto -Wno-return-type }} }
 
 typedef double Real;
 class Vector {
diff --git a/gcc/testsuite/g++.dg/lto/20091004-2_1.C b/gcc/testsuite/g++.dg/lto/20091004-2_1.C
index 9bbcd51..10b2a3e 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-2_1.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-2_1.C
@@ -1,3 +1,5 @@
+// { dg-lto-options {{ -Wno-return-type }} }
+
 typedef double Real;
 class Vector {
     int dimen;
diff --git a/gcc/testsuite/g++.dg/lto/20091004-3_1.C b/gcc/testsuite/g++.dg/lto/20091004-3_1.C
index 641c749..f46b8fc 100644
--- a/gcc/testsuite/g++.dg/lto/20091004-3_1.C
+++ b/gcc/testsuite/g++.dg/lto/20091004-3_1.C
@@ -12,5 +12,6 @@ All_Torus_Intersections(void)
   VECTOR D;
   VLength(len, D);
   VLength(len, D);
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/lto/20100721-1_0.C b/gcc/testsuite/g++.dg/lto/20100721-1_0.C
index 09132e5..e39184b 100644
--- a/gcc/testsuite/g++.dg/lto/20100721-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20100721-1_0.C
@@ -1,6 +1,6 @@
 /* { dg-lto-do assemble } */
 
-static inline int __gthread_active_p (void) { }
+static inline int __gthread_active_p (void) { return 0; }
 template <int rank, int dim> class Tensor;
 template <int dimension> struct G;
 template <int dim> class T {
diff --git a/gcc/testsuite/g++.dg/lto/20101010-1_0.C b/gcc/testsuite/g++.dg/lto/20101010-1_0.C
index 6eb40ef..8f694c7 100644
--- a/gcc/testsuite/g++.dg/lto/20101010-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/20101010-1_0.C
@@ -1,4 +1,5 @@
 // { dg-lto-do link }
+// { dg-lto-options "-Wno-return-type" }
 
 typedef long size_t;
 template < class, class > struct pair
diff --git a/gcc/testsuite/g++.dg/lto/20101010-2_0.C b/gcc/testsuite/g++.dg/lto/20101010-2_0.C
index c68bcd6..a26956f 100644
--- a/gcc/testsuite/g++.dg/lto/20101010-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20101010-2_0.C
@@ -1,4 +1,5 @@
 // { dg-lto-do link }
+// { dg-lto-options "-Wno-return-type" }
 
 typedef int size_t;
 template < size_t _Nw > struct _Base_bitset
diff --git a/gcc/testsuite/g++.dg/lto/pr45679-1_1.C b/gcc/testsuite/g++.dg/lto/pr45679-1_1.C
index c5e2db0..31c9113 100644
--- a/gcc/testsuite/g++.dg/lto/pr45679-1_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr45679-1_1.C
@@ -1,4 +1,5 @@
-    extern "C" {
+// { dg-lto-options {{-Wno-return-type}} }
+extern "C" {
     typedef struct _IO_FILE FILE;
     extern struct _IO_FILE *stderr;
     extern int fprintf (FILE *__restrict __stream,       __const char *__restrict __format, ...);
@@ -40,6 +41,7 @@
      if(cond == false)  {
      fprintf(stderr, "POVMS_ASSERT failed in %s line %d: %s\n", filename, (int)line, str);
     }
+     return 0;
     }
        int POVMSObject_Copy(POVMSObjectPtr sourceobject, POVMSObjectPtr destobject) {
      POVMSNode *cur = __null;
diff --git a/gcc/testsuite/g++.dg/lto/pr45679-2_0.C b/gcc/testsuite/g++.dg/lto/pr45679-2_0.C
index 5497419..b46a3c3 100644
--- a/gcc/testsuite/g++.dg/lto/pr45679-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr45679-2_0.C
@@ -32,6 +32,7 @@
   }
   typedef long long COUNTER;
   inline double DBL_Counter(COUNTER x) {
+	return 0.0;
   }
   struct Image_Struct {
     union   {
diff --git a/gcc/testsuite/g++.dg/lto/pr45679-2_1.C b/gcc/testsuite/g++.dg/lto/pr45679-2_1.C
index 23ba08a..58983a6 100644
--- a/gcc/testsuite/g++.dg/lto/pr45679-2_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr45679-2_1.C
@@ -1,3 +1,4 @@
+// { dg-lto-options "-Wno-return-type" }
 extern "C" {
    typedef struct __locale_struct {
    }
@@ -58,6 +59,7 @@ extern "C" {
     if(cond == false)  {
      fprintf(stderr, "POVMS_ASSERT failed in %s line %d: %s\n", filename, (int)line, str);
     }
+    return 0;
    }
      int POVMSObject_Copy(POVMSObjectPtr sourceobject, POVMSObjectPtr destobject) {
     POVMSNode *cur = __null;
@@ -79,6 +81,7 @@ extern "C" {
     return ret;
    }
      int POVMSObject_Set(POVMSObjectPtr object, POVMSAttributePtr attr, unsigned int key) {
+       return 0;
    }
      int POVMSAttrList_Copy(POVMSAttributeListPtr sourcelist, POVMSAttributeListPtr destlist) {
     int cnt;
diff --git a/gcc/testsuite/g++.dg/lto/pr48042_0.C b/gcc/testsuite/g++.dg/lto/pr48042_0.C
index 00b3428..4f1bad5 100644
--- a/gcc/testsuite/g++.dg/lto/pr48042_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr48042_0.C
@@ -10,5 +10,6 @@ class B:public A {
 };
 
 int B::x() {
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.dg/lto/pr51650-1_0.C b/gcc/testsuite/g++.dg/lto/pr51650-1_0.C
index 4c9ef3c..1c37e62 100644
--- a/gcc/testsuite/g++.dg/lto/pr51650-1_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr51650-1_0.C
@@ -15,5 +15,6 @@ int
 fn ()
 {
   C::m ();
+  return 0;
 }
-int main() {}
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/pr51650-3_0.C b/gcc/testsuite/g++.dg/lto/pr51650-3_0.C
index e84d555..ff55e4a 100644
--- a/gcc/testsuite/g++.dg/lto/pr51650-3_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr51650-3_0.C
@@ -16,5 +16,6 @@ int
 fn ()
 {
   C::m ();
+  return 0;
 }
-int main() {}
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/pr54625-1_0.c b/gcc/testsuite/g++.dg/lto/pr54625-1_0.c
index 5ab90dd..bbdc62f 100644
--- a/gcc/testsuite/g++.dg/lto/pr54625-1_0.c
+++ b/gcc/testsuite/g++.dg/lto/pr54625-1_0.c
@@ -3,7 +3,7 @@
 
 float a;
 double sin ();
-speex_resampler_init_frac ()
+void speex_resampler_init_frac ()
 {
   a = sin (0);
 }
diff --git a/gcc/testsuite/g++.dg/lto/pr54625-2_0.c b/gcc/testsuite/g++.dg/lto/pr54625-2_0.c
index 6511ba5..10511be 100644
--- a/gcc/testsuite/g++.dg/lto/pr54625-2_0.c
+++ b/gcc/testsuite/g++.dg/lto/pr54625-2_0.c
@@ -3,7 +3,8 @@
 
 float a;
 double sin ();
-update_filter ()
+double update_filter ()
 {
   a = sin (0);
+  return 0.0;
 }
diff --git a/gcc/testsuite/g++.dg/opt/combine.C b/gcc/testsuite/g++.dg/opt/combine.C
index d01ae78..3fbf697 100644
--- a/gcc/testsuite/g++.dg/opt/combine.C
+++ b/gcc/testsuite/g++.dg/opt/combine.C
@@ -1,5 +1,5 @@
 // { dg-do assemble { target fpic } }
-// { dg-options "-O2 -fweb -fPIC -fvisibility=hidden" }
+// { dg-options "-O2 -fweb -fPIC -fvisibility=hidden -Wno-return-type" }
 // { dg-require-visibility "" }
 
 class QBasicAtomicInt
diff --git a/gcc/testsuite/g++.dg/opt/complex3.C b/gcc/testsuite/g++.dg/opt/complex3.C
index 9a3fdf3..4cb67da 100644
--- a/gcc/testsuite/g++.dg/opt/complex3.C
+++ b/gcc/testsuite/g++.dg/opt/complex3.C
@@ -1,6 +1,6 @@
 // PR 22022
 // { dg-do compile }
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-return-type" }
 
 _Complex float f();
 _Complex float g();
diff --git a/gcc/testsuite/g++.dg/opt/const3.C b/gcc/testsuite/g++.dg/opt/const3.C
index c7c0a16..1452904 100644
--- a/gcc/testsuite/g++.dg/opt/const3.C
+++ b/gcc/testsuite/g++.dg/opt/const3.C
@@ -3,7 +3,7 @@
 // were wrongly swapped in the constructor.
 
 // { dg-do run }
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-return-type" }
 
 extern "C" void abort(void);
 
diff --git a/gcc/testsuite/g++.dg/opt/covariant1.C b/gcc/testsuite/g++.dg/opt/covariant1.C
index e57cf4c..8dcdd34 100644
--- a/gcc/testsuite/g++.dg/opt/covariant1.C
+++ b/gcc/testsuite/g++.dg/opt/covariant1.C
@@ -1,6 +1,6 @@
 // PR c++/20206
 // { dg-do run }
-// { dg-options "-O0" }
+// { dg-options "-O0 -Wno-return-type" }
 
 void
 bar (int x)
diff --git a/gcc/testsuite/g++.dg/opt/dump1.C b/gcc/testsuite/g++.dg/opt/dump1.C
index d90061f..648c2b1 100644
--- a/gcc/testsuite/g++.dg/opt/dump1.C
+++ b/gcc/testsuite/g++.dg/opt/dump1.C
@@ -1,5 +1,5 @@
 // PR c++/57102
-// { dg-options "-O2 -fno-inline -fdump-final-insns" }
+// { dg-options "-O2 -fno-inline -fdump-final-insns -Wno-return-type" }
 // { dg-do compile { target c++11 } }
 // { dg-final cleanup-saved-temps }
 
diff --git a/gcc/testsuite/g++.dg/opt/inline15.C b/gcc/testsuite/g++.dg/opt/inline15.C
index 5da3a61..e587326 100644
--- a/gcc/testsuite/g++.dg/opt/inline15.C
+++ b/gcc/testsuite/g++.dg/opt/inline15.C
@@ -1,6 +1,6 @@
 // PR tree-optimization/40813
 // { dg-do compile }
-// { dg-options "-O -fcheck-new" }
+// { dg-options "-O -fcheck-new -Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 typedef void *P;
diff --git a/gcc/testsuite/g++.dg/opt/local1.C b/gcc/testsuite/g++.dg/opt/local1.C
index 9cecaee..ecbd331 100644
--- a/gcc/testsuite/g++.dg/opt/local1.C
+++ b/gcc/testsuite/g++.dg/opt/local1.C
@@ -1,4 +1,4 @@
-// { dg-options "-O" }
+// { dg-options "-O -Wno-return-type" }
 
 struct Outer {
   struct Inner { virtual bool f() = 0; };
diff --git a/gcc/testsuite/g++.dg/opt/memcpy1.C b/gcc/testsuite/g++.dg/opt/memcpy1.C
index f291345..3374f4b 100644
--- a/gcc/testsuite/g++.dg/opt/memcpy1.C
+++ b/gcc/testsuite/g++.dg/opt/memcpy1.C
@@ -2,7 +2,7 @@
 // Origin: Martin Michlmayr <tbm@cyrius.com>
 
 // { dg-do compile }
-// { dg-options "-O" }
+// { dg-options "-O -Wno-return-type" }
 
 typedef unsigned char uint8_t;
 typedef uint8_t uint8;
diff --git a/gcc/testsuite/g++.dg/opt/new1.C b/gcc/testsuite/g++.dg/opt/new1.C
index dbcc0f8..846f6f26 100644
--- a/gcc/testsuite/g++.dg/opt/new1.C
+++ b/gcc/testsuite/g++.dg/opt/new1.C
@@ -1,5 +1,5 @@
 // PR c++/39367
-// { dg-options "-O" }
+// { dg-options "-O -Wno-return-type" }
 
 class QScriptEnginePrivate;
 class QScriptClassInfo;
diff --git a/gcc/testsuite/g++.dg/opt/nrv8.C b/gcc/testsuite/g++.dg/opt/nrv8.C
index 19999a1..ff35977 100644
--- a/gcc/testsuite/g++.dg/opt/nrv8.C
+++ b/gcc/testsuite/g++.dg/opt/nrv8.C
@@ -1,6 +1,6 @@
 // PR optimization/19531
 // forbids NRV on volatile return value.
-// { dg-options -O2 }
+// { dg-options "-O2 -Wno-return-type" }
 // { dg-do run }
 
 extern "C" { void abort(); }
diff --git a/gcc/testsuite/g++.dg/opt/pr23299.C b/gcc/testsuite/g++.dg/opt/pr23299.C
index 94a414a..b855169 100644
--- a/gcc/testsuite/g++.dg/opt/pr23299.C
+++ b/gcc/testsuite/g++.dg/opt/pr23299.C
@@ -1,6 +1,6 @@
 // PR rtl-optimization/23299
 // { dg-do run }
-// { dg-options "-Os" }
+// { dg-options "-Os -Wno-return-type" }
 
 extern "C" void abort ();
 
@@ -50,6 +50,7 @@ E::c ()
   if (x > 10)
     throw 1;
   x |= 2;
+  return 0;
 }
 
 int
@@ -60,4 +61,5 @@ main (void)
   }
   if (x != 3)
     abort ();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/opt/pr27826.C b/gcc/testsuite/g++.dg/opt/pr27826.C
index 5e40f17..28be12f 100644
--- a/gcc/testsuite/g++.dg/opt/pr27826.C
+++ b/gcc/testsuite/g++.dg/opt/pr27826.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3" } */
+/* { dg-options "-O3 -Wno-return-type" } */
 
 struct Geometry
 {
diff --git a/gcc/testsuite/g++.dg/opt/pr44919.C b/gcc/testsuite/g++.dg/opt/pr44919.C
index e90851b..cb00a5b 100644
--- a/gcc/testsuite/g++.dg/opt/pr44919.C
+++ b/gcc/testsuite/g++.dg/opt/pr44919.C
@@ -1,5 +1,5 @@
 // { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
-// { dg-options "-O3 -fselective-scheduling2" }
+// { dg-options "-O3 -fselective-scheduling2 -Wno-return-type" }
 
 namespace std {
 
diff --git a/gcc/testsuite/g++.dg/opt/pr46640.C b/gcc/testsuite/g++.dg/opt/pr46640.C
index 0892c9a..a4560d5 100644
--- a/gcc/testsuite/g++.dg/opt/pr46640.C
+++ b/gcc/testsuite/g++.dg/opt/pr46640.C
@@ -1,5 +1,5 @@
 // { dg-do compile { target x86_64-*-* } }
-// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -fno-exceptions -O" }
+// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -fno-exceptions -O -Wno-return-type" }
 
 struct QBasicAtomicInt
 {
@@ -41,4 +41,5 @@ bool makeDir (unsigned len)
         return false;
       i = pos;
     }
+  return true;
 }
diff --git a/gcc/testsuite/g++.dg/opt/pr47615.C b/gcc/testsuite/g++.dg/opt/pr47615.C
index f8dbcf7..caea8f1 100644
--- a/gcc/testsuite/g++.dg/opt/pr47615.C
+++ b/gcc/testsuite/g++.dg/opt/pr47615.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-O -fstrict-aliasing -ftree-pre -fno-tree-fre -fno-tree-sra" }
+// { dg-options "-O -fstrict-aliasing -ftree-pre -fno-tree-fre -fno-tree-sra -Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 namespace std 
diff --git a/gcc/testsuite/g++.dg/opt/pr55329.C b/gcc/testsuite/g++.dg/opt/pr55329.C
index 3646785..c5e8757 100644
--- a/gcc/testsuite/g++.dg/opt/pr55329.C
+++ b/gcc/testsuite/g++.dg/opt/pr55329.C
@@ -1,6 +1,6 @@
 // PR tree-optimization/55329
 // { dg-do compile }
-// { dg-options "-O -fno-guess-branch-probability -fnon-call-exceptions --param=early-inlining-insns=111" }
+// { dg-options "-O -fno-guess-branch-probability -fnon-call-exceptions --param=early-inlining-insns=111 -Wno-return-type" }
 
 void *f1 ();
 void f2 (void *);
diff --git a/gcc/testsuite/g++.dg/opt/pr61456.C b/gcc/testsuite/g++.dg/opt/pr61456.C
index 14a118b..51a1e61 100644
--- a/gcc/testsuite/g++.dg/opt/pr61456.C
+++ b/gcc/testsuite/g++.dg/opt/pr61456.C
@@ -14,6 +14,7 @@ typedef decltype (&Funcs::f1) pfunc;
 static int Set (Funcs * f, const pfunc & fp)
 {
   (f->*fp) ();
+  return 0;
 }
 
 void
diff --git a/gcc/testsuite/g++.dg/other/array3.C b/gcc/testsuite/g++.dg/other/array3.C
index ce3641e..3e6f7d1 100644
--- a/gcc/testsuite/g++.dg/other/array3.C
+++ b/gcc/testsuite/g++.dg/other/array3.C
@@ -10,5 +10,6 @@ extern unsigned char xvalue_store[];
 bool reserve (int want)
 {
   new unsigned char[want];
+  return true;
 }
 unsigned char xvalue_store[257];
diff --git a/gcc/testsuite/g++.dg/other/copy2.C b/gcc/testsuite/g++.dg/other/copy2.C
index 335cab8..b9b4325 100644
--- a/gcc/testsuite/g++.dg/other/copy2.C
+++ b/gcc/testsuite/g++.dg/other/copy2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-options "-Wno-return-type" }
 
 // Test that A's copy assignment method is called when B's instance
 // member array of A is assigned.
diff --git a/gcc/testsuite/g++.dg/other/crash-5.C b/gcc/testsuite/g++.dg/other/crash-5.C
index 25a70b7..bb4894e 100644
--- a/gcc/testsuite/g++.dg/other/crash-5.C
+++ b/gcc/testsuite/g++.dg/other/crash-5.C
@@ -12,5 +12,5 @@ void assert_fail (const char*);
 int f(const set<int, int_less_than>&)
 {
     assert_fail (__PRETTY_FUNCTION__);
-
+    return 0;
 }
diff --git a/gcc/testsuite/g++.dg/other/crash-8.C b/gcc/testsuite/g++.dg/other/crash-8.C
index dcae7da..352b0bc 100644
--- a/gcc/testsuite/g++.dg/other/crash-8.C
+++ b/gcc/testsuite/g++.dg/other/crash-8.C
@@ -1,6 +1,6 @@
 // Origin: PR c++/42797
 // { dg-do compile { target c++11 } }
-// { dg-options "-g -O2" }
+// { dg-options "-g -O2 -Wno-return-type" }
 
 template<typename _Tp, _Tp __v>     struct integral_constant     {
     static const _Tp value = __v;
diff --git a/gcc/testsuite/g++.dg/other/error34.C b/gcc/testsuite/g++.dg/other/error34.C
index d6f3eb5..606a584 100644
--- a/gcc/testsuite/g++.dg/other/error34.C
+++ b/gcc/testsuite/g++.dg/other/error34.C
@@ -1,6 +1,6 @@
 // PR c++/46538
 // { dg-do compile }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 S () : str(__PRETTY_FUNCTION__) {}	// { dg-error "forbids declaration" "decl" }
 // { dg-error "only constructors" "constructor" { target *-*-* } 5 }
diff --git a/gcc/testsuite/g++.dg/other/i386-8.C b/gcc/testsuite/g++.dg/other/i386-8.C
index cf833a5..6faf89f 100644
--- a/gcc/testsuite/g++.dg/other/i386-8.C
+++ b/gcc/testsuite/g++.dg/other/i386-8.C
@@ -19,4 +19,5 @@ foo (float *x, short *y)
   __m64 c = _mm_cvtps_pi16 (b);
   __builtin_memcpy (y, &c, sizeof (short) * 4);
   y[0] = bar (y[0]);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/other/pr22003.C b/gcc/testsuite/g++.dg/other/pr22003.C
index 222ccac..ca97a14 100644
--- a/gcc/testsuite/g++.dg/other/pr22003.C
+++ b/gcc/testsuite/g++.dg/other/pr22003.C
@@ -1,7 +1,7 @@
 /* PR rtl-optimization/22003 */
 /* { dg-do compile } */
 /* { dg-require-effective-target freorder } */
-/* { dg-options "-O2 -fno-exceptions -freorder-blocks-and-partition" } */
+/* { dg-options "-O2 -fno-exceptions -freorder-blocks-and-partition -Wno-return-type" } */
 
 struct c1
 {
diff --git a/gcc/testsuite/g++.dg/other/pr24623.C b/gcc/testsuite/g++.dg/other/pr24623.C
index 480bb39..bbbce94 100644
--- a/gcc/testsuite/g++.dg/other/pr24623.C
+++ b/gcc/testsuite/g++.dg/other/pr24623.C
@@ -1,7 +1,7 @@
 /* This used to ICE due to a backend problem on s390.  */
 
 /* { dg-do compile } */
-/* { dg-options "-O1" } */
+/* { dg-options "-O1 -Wno-return-type" } */
 
 class ReferenceCounted
 {
diff --git a/gcc/testsuite/g++.dg/other/pr29610.C b/gcc/testsuite/g++.dg/other/pr29610.C
index 6566fb9..d01807e 100644
--- a/gcc/testsuite/g++.dg/other/pr29610.C
+++ b/gcc/testsuite/g++.dg/other/pr29610.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -funswitch-loops" } */
+/* { dg-options "-O2 -funswitch-loops -Wno-return-type" } */
 
 struct __normal_iterator 
 {
diff --git a/gcc/testsuite/g++.dg/other/pr42645-1.C b/gcc/testsuite/g++.dg/other/pr42645-1.C
index 5dc76f9..f1f7c7b 100644
--- a/gcc/testsuite/g++.dg/other/pr42645-1.C
+++ b/gcc/testsuite/g++.dg/other/pr42645-1.C
@@ -1,6 +1,6 @@
 // PR tree-optimization/42645
 // { dg-do compile }
-// { dg-options "-fcompare-debug -O1" }
+// { dg-options "-fcompare-debug -O1 -Wno-return-type" }
 
 extern void foo ();
 
diff --git a/gcc/testsuite/g++.dg/other/pr42645-2.C b/gcc/testsuite/g++.dg/other/pr42645-2.C
index 67632e5..36df440 100644
--- a/gcc/testsuite/g++.dg/other/pr42645-2.C
+++ b/gcc/testsuite/g++.dg/other/pr42645-2.C
@@ -1,6 +1,6 @@
 // PR tree-optimization/42645
 // { dg-do compile }
-// { dg-options "-fcompare-debug -O1" }
+// { dg-options "-fcompare-debug -O1 -Wno-return-type" }
 
 struct C
 {
@@ -16,6 +16,7 @@ static inline int
 f3 ()
 {
   f4 ();
+  return 0;
 }
 
 static inline void
diff --git a/gcc/testsuite/g++.dg/other/pr52048.C b/gcc/testsuite/g++.dg/other/pr52048.C
index 6bf51f1..7edd283 100644
--- a/gcc/testsuite/g++.dg/other/pr52048.C
+++ b/gcc/testsuite/g++.dg/other/pr52048.C
@@ -1,6 +1,6 @@
 // PR debug/52048
 // { dg-do compile }
-// { dg-options "-fcompare-debug -fnon-call-exceptions -fno-tree-dominator-opts -O2" }
+// { dg-options "-fcompare-debug -fnon-call-exceptions -fno-tree-dominator-opts -O2 -Wno-return-type" }
 
 template <typename T> struct A;
 template <typename T>
diff --git a/gcc/testsuite/g++.dg/other/typedef3.C b/gcc/testsuite/g++.dg/other/typedef3.C
index 8ead5b8..dc15629 100644
--- a/gcc/testsuite/g++.dg/other/typedef3.C
+++ b/gcc/testsuite/g++.dg/other/typedef3.C
@@ -1,6 +1,7 @@
 // Contributed by Dodji Seketeli <dodji@redhat.com>
 // Origin: PR c++/40357
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 struct XalanCProcessor
 {
diff --git a/gcc/testsuite/g++.dg/overload/addr1.C b/gcc/testsuite/g++.dg/overload/addr1.C
index 25856a2..be2f608 100644
--- a/gcc/testsuite/g++.dg/overload/addr1.C
+++ b/gcc/testsuite/g++.dg/overload/addr1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-options "-Wno-return-type" }
 
 // Copyright (C) 2003 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 6 Sep 2003 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/overload/defarg4.C b/gcc/testsuite/g++.dg/overload/defarg4.C
index 3fa0751..03c3cba 100644
--- a/gcc/testsuite/g++.dg/overload/defarg4.C
+++ b/gcc/testsuite/g++.dg/overload/defarg4.C
@@ -1,6 +1,7 @@
 // Contributed by Dodji Seketeli <dodji@redhat.com>
 // Origin PR c++/39987
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 class foo
 {
diff --git a/gcc/testsuite/g++.dg/overload/operator5.C b/gcc/testsuite/g++.dg/overload/operator5.C
index 6e7703b..2d9bace 100644
--- a/gcc/testsuite/g++.dg/overload/operator5.C
+++ b/gcc/testsuite/g++.dg/overload/operator5.C
@@ -1,4 +1,5 @@
 // PR c++/50858
+// { dg-options "-Wno-return-type" }
 
 class String {
    typedef struct ImplicitConversionFromWTFStringToBoolDisallowedA* 
diff --git a/gcc/testsuite/g++.dg/overload/ref-conv1.C b/gcc/testsuite/g++.dg/overload/ref-conv1.C
index 7e14114..349d5a4 100644
--- a/gcc/testsuite/g++.dg/overload/ref-conv1.C
+++ b/gcc/testsuite/g++.dg/overload/ref-conv1.C
@@ -1,4 +1,5 @@
 // PR c++/50442
+// { dg-options "-Wno-return-type" }
 
 template <typename T> struct MoveRef { operator T& () {} };
 template <typename T> MoveRef <T> Move(T&) {}
diff --git a/gcc/testsuite/g++.dg/overload/template5.C b/gcc/testsuite/g++.dg/overload/template5.C
index b1dc65e..5f67aec 100644
--- a/gcc/testsuite/g++.dg/overload/template5.C
+++ b/gcc/testsuite/g++.dg/overload/template5.C
@@ -12,4 +12,5 @@ int test (void)
   // { dg-message "(candidate|3 arguments, 2 provided)" "" { target *-*-* } 11 }
   high (5, 6, 7, 8);		// { dg-error "no matching function" }
   // { dg-message "(candidate|3 arguments, 4 provided)" "" { target *-*-* } 13 }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/parse/crash40.C b/gcc/testsuite/g++.dg/parse/crash40.C
index 6b67d8d..2e0223c 100644
--- a/gcc/testsuite/g++.dg/parse/crash40.C
+++ b/gcc/testsuite/g++.dg/parse/crash40.C
@@ -1,5 +1,6 @@
 /* PR c++/34059 */
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/parse/crash61.C b/gcc/testsuite/g++.dg/parse/crash61.C
index 790df0e..ed9e54d 100644
--- a/gcc/testsuite/g++.dg/parse/crash61.C
+++ b/gcc/testsuite/g++.dg/parse/crash61.C
@@ -1,5 +1,6 @@
 // PR c++/56241
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 struct pair { constexpr pair (const) : }; // { dg-error "" }
 template <0> make_pair () {}		  // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/ctor5.C b/gcc/testsuite/g++.dg/parse/ctor5.C
index f980b4a..063923e 100644
--- a/gcc/testsuite/g++.dg/parse/ctor5.C
+++ b/gcc/testsuite/g++.dg/parse/ctor5.C
@@ -1,4 +1,5 @@
 // PR c++/27309
+// { dg-options "-Wno-return-type" }
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/parse/defarg4.C b/gcc/testsuite/g++.dg/parse/defarg4.C
index bafdadb..bcceda8 100644
--- a/gcc/testsuite/g++.dg/parse/defarg4.C
+++ b/gcc/testsuite/g++.dg/parse/defarg4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 // Copyright (C) 2003 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 3 Jul 2003 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/parse/defarg6.C b/gcc/testsuite/g++.dg/parse/defarg6.C
index 827b605..c4a3d80 100644
--- a/gcc/testsuite/g++.dg/parse/defarg6.C
+++ b/gcc/testsuite/g++.dg/parse/defarg6.C
@@ -6,6 +6,6 @@
 
 namespace sc_dt {
     class sc_length_param {
-	friend int compare_unsigned(int if_v_signed = 0) {}
+      friend int compare_unsigned(int if_v_signed = 0) { return 0; }
     };
 }
diff --git a/gcc/testsuite/g++.dg/parse/error5.C b/gcc/testsuite/g++.dg/parse/error5.C
index eb1f9c7..e8911cc 100644
--- a/gcc/testsuite/g++.dg/parse/error5.C
+++ b/gcc/testsuite/g++.dg/parse/error5.C
@@ -1,5 +1,5 @@
 // PR c++/13269
-// { dg-options "-fshow-column" }
+// { dg-options "-fshow-column -Wno-return-type" }
 
 class Foo { int foo() return 0; } };
 
diff --git a/gcc/testsuite/g++.dg/parse/expr2.C b/gcc/testsuite/g++.dg/parse/expr2.C
index 32800e4..c3a1a0f 100644
--- a/gcc/testsuite/g++.dg/parse/expr2.C
+++ b/gcc/testsuite/g++.dg/parse/expr2.C
@@ -5,4 +5,5 @@ struct X {
 int foo(double d0) {
   double * data;
   X(data,d0,d0);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/parse/friend7.C b/gcc/testsuite/g++.dg/parse/friend7.C
index 72ab430..44aacb8 100644
--- a/gcc/testsuite/g++.dg/parse/friend7.C
+++ b/gcc/testsuite/g++.dg/parse/friend7.C
@@ -1,5 +1,6 @@
 // PR c++/34488
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/parse/namespace1.C b/gcc/testsuite/g++.dg/parse/namespace1.C
index 7740bce..8376e0c 100644
--- a/gcc/testsuite/g++.dg/parse/namespace1.C
+++ b/gcc/testsuite/g++.dg/parse/namespace1.C
@@ -4,4 +4,5 @@ void baz(int);
 
 int bar(int foo) {
   foo::baz (3);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/parse/namespace9.C b/gcc/testsuite/g++.dg/parse/namespace9.C
index 7ff0267..c712722 100644
--- a/gcc/testsuite/g++.dg/parse/namespace9.C
+++ b/gcc/testsuite/g++.dg/parse/namespace9.C
@@ -5,4 +5,5 @@ int g()
 {
   struct f { };
   using A::f;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/parse/ret-type2.C b/gcc/testsuite/g++.dg/parse/ret-type2.C
index 35638c2..17dddbf 100644
--- a/gcc/testsuite/g++.dg/parse/ret-type2.C
+++ b/gcc/testsuite/g++.dg/parse/ret-type2.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" }
+
 struct S {} f(); // { dg-error "return" "err" }
 // { dg-message "note" "note" { target *-*-* } 1 }
 struct T {} *g(); // { dg-error "return" }
diff --git a/gcc/testsuite/g++.dg/parse/typedef8.C b/gcc/testsuite/g++.dg/parse/typedef8.C
index 4c1823e..00b3209 100644
--- a/gcc/testsuite/g++.dg/parse/typedef8.C
+++ b/gcc/testsuite/g++.dg/parse/typedef8.C
@@ -1,4 +1,5 @@
 //PR c++ 29024
+// { dg-options "-Wno-return-type" }
 
 typedef static int a;   // { dg-error "conflicting" }
 typedef register int b; // { dg-error "conflicting" }
diff --git a/gcc/testsuite/g++.dg/pch/static-1.C b/gcc/testsuite/g++.dg/pch/static-1.C
index 21e7789..bea24f9 100644
--- a/gcc/testsuite/g++.dg/pch/static-1.C
+++ b/gcc/testsuite/g++.dg/pch/static-1.C
@@ -1,10 +1,12 @@
-#include "static-1.H"
+ #include "static-1.H"
 int LocalStaticTest()
 {
         static A sa;
+	return 0;
 }
 
 int main(int argc, char **argv)
 {
         A::StaticTest();
+	return 0;
 }
diff --git a/gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C b/gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
index 70101c8..70efb00 100644
--- a/gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
+++ b/gcc/testsuite/g++.dg/plugin/dumb-plugin-test-1.C
@@ -47,6 +47,7 @@ int func()
   bar_array[x+g].b_ = bar_array[x+g].b_;
   y = x;
   x = y;
+  return 0;
 } // { dg-warning "Before genericizing function" }
 
 // { dg-warning "Analyze function" "" { target *-*-* } 50 }
diff --git a/gcc/testsuite/g++.dg/plugin/self-assign-test-1.C b/gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
index 607381f..65eb4c4 100644
--- a/gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
+++ b/gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
@@ -1,6 +1,6 @@
 // Test the self-assignemnt detection plugin.
 // { dg-do compile }
-// { dg-options "-O" }
+// { dg-options "-O -Wno-return-type" }
 
 class Foo {
  private:
@@ -47,4 +47,5 @@ int func()
   bar_array[x+g].b_ = bar_array[x+g].b_; // { dg-warning "self-assignment detected" }
   y = x;
   x = y;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/plugin/self-assign-test-2.C b/gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
index 35e1fb8..e9e8b1e 100644
--- a/gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
+++ b/gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
@@ -1,6 +1,6 @@
 // Test the self-assignemnt detection plugin without checking of operator-eq.
 // { dg-do compile }
-// { dg-options "-O -fplugin-arg-selfassign-no-check-operator-eq" }
+// { dg-options "-O -fplugin-arg-selfassign-no-check-operator-eq -Wno-return-type" }
 
 class Foo {
  private:
@@ -47,4 +47,5 @@ int func()
   bar_array[x+g].b_ = bar_array[x+g].b_; // { dg-warning "self-assignment detected" }
   y = x;
   x = y;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/plugin/self-assign-test-3.C b/gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
index e5b354b..1183405 100644
--- a/gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
+++ b/gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
@@ -1,6 +1,6 @@
 // Test the self-assignemnt detection plugin with the 'disable' argument.
 // { dg-do compile }
-// { dg-options "-O -fplugin-arg-selfassign-disable" }
+// { dg-options "-O -fplugin-arg-selfassign-disable -Wno-return-type" }
 
 class Foo {
  private:
diff --git a/gcc/testsuite/g++.dg/pr45788.C b/gcc/testsuite/g++.dg/pr45788.C
index de3340d..2295216 100644
--- a/gcc/testsuite/g++.dg/pr45788.C
+++ b/gcc/testsuite/g++.dg/pr45788.C
@@ -1,5 +1,5 @@
 // { dg-do compile { target x86_64-*-* } }
-// { dg-options "-O3 -fwhole-program -msse2" }
+// { dg-options "-O3 -fwhole-program -msse2 -Wno-return-type" }
 
 typedef long unsigned int __darwin_size_t;
 typedef __darwin_size_t size_t;
diff --git a/gcc/testsuite/g++.dg/pr55513.C b/gcc/testsuite/g++.dg/pr55513.C
index 06eedee..0931cc0 100644
--- a/gcc/testsuite/g++.dg/pr55513.C
+++ b/gcc/testsuite/g++.dg/pr55513.C
@@ -1,11 +1,12 @@
 // { dg-do compile }
 // { dg-options "-O0 -fdump-tree-gimple" }
 
-main ()
+int main ()
 {
   char s[10];
   const int t = (__builtin_memcpy (s, "Hello", 6), 777);
   __builtin_printf ("%d %s\n", t, s);
+  return 0;
 }
 
 // { dg-final { scan-tree-dump-times "memcpy" 1 "gimple" } }
diff --git a/gcc/testsuite/g++.dg/pr55604.C b/gcc/testsuite/g++.dg/pr55604.C
index 135ae4d..3ebae6b 100644
--- a/gcc/testsuite/g++.dg/pr55604.C
+++ b/gcc/testsuite/g++.dg/pr55604.C
@@ -1,11 +1,12 @@
 /* { dg-do compile } */
 /* { dg-options "-O -fdump-rtl-reload" } */
 
-main ()
+int main ()
 {
   char s[10];
   const int t = (__builtin_memcpy (s, "Hello", 6), 5);
   __builtin_printf ("%d %s\n", t, s);
+  return 0;
 }
 
 /* { dg-final { cleanup-rtl-dump "reload" } } */
diff --git a/gcc/testsuite/g++.dg/pr57662.C b/gcc/testsuite/g++.dg/pr57662.C
index 1354790..399364b 100644
--- a/gcc/testsuite/g++.dg/pr57662.C
+++ b/gcc/testsuite/g++.dg/pr57662.C
@@ -1,5 +1,5 @@
 /* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
-/* { dg-options "-O2 -fselective-scheduling2 -fsel-sched-pipelining" } */
+/* { dg-options "-O2 -fselective-scheduling2 -fsel-sched-pipelining -Wno-return-type" } */
 
 extern "C" {
 	typedef struct _IO_FILE FILE;
diff --git a/gcc/testsuite/g++.dg/pr58389.C b/gcc/testsuite/g++.dg/pr58389.C
index 648c145..25c8d43 100644
--- a/gcc/testsuite/g++.dg/pr58389.C
+++ b/gcc/testsuite/g++.dg/pr58389.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 template <typename _RandomAccessIterator, typename _Compare>
 void __insertion_sort(_RandomAccessIterator, _Compare);
diff --git a/gcc/testsuite/g++.dg/pr59510.C b/gcc/testsuite/g++.dg/pr59510.C
index dcdf860..14a6af3 100644
--- a/gcc/testsuite/g++.dg/pr59510.C
+++ b/gcc/testsuite/g++.dg/pr59510.C
@@ -1,6 +1,6 @@
 // PR debug/59510
 // { dg-do compile }
-// { dg-options "-O2 -g --param=large-stack-frame-growth=1" }
+// { dg-options "-O2 -g --param=large-stack-frame-growth=1 -Wno-return-type" }
 
 template <typename _Iterator>
 struct _Iter_base
diff --git a/gcc/testsuite/g++.dg/tc1/dr152.C b/gcc/testsuite/g++.dg/tc1/dr152.C
index e787f8b..639cc8e 100644
--- a/gcc/testsuite/g++.dg/tc1/dr152.C
+++ b/gcc/testsuite/g++.dg/tc1/dr152.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
-// DR152: explicit copy constructors 
+// DR152: explicit copy constructors
 
 namespace N1 {
   struct X {
diff --git a/gcc/testsuite/g++.dg/template/aggr-init1.C b/gcc/testsuite/g++.dg/template/aggr-init1.C
index a09c7a7..4f73ab2 100644
--- a/gcc/testsuite/g++.dg/template/aggr-init1.C
+++ b/gcc/testsuite/g++.dg/template/aggr-init1.C
@@ -1,4 +1,5 @@
 // PR c++/46903
+// { dg-options "-Wno-return-type" }
 
 struct A {};
 struct B {
diff --git a/gcc/testsuite/g++.dg/template/anon1.C b/gcc/testsuite/g++.dg/template/anon1.C
index ef73df6..dd916ad 100644
--- a/gcc/testsuite/g++.dg/template/anon1.C
+++ b/gcc/testsuite/g++.dg/template/anon1.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" } 
+
 struct x {
     int foo () {}
 };
diff --git a/gcc/testsuite/g++.dg/template/array7.C b/gcc/testsuite/g++.dg/template/array7.C
index 1fb130f..59364be 100644
--- a/gcc/testsuite/g++.dg/template/array7.C
+++ b/gcc/testsuite/g++.dg/template/array7.C
@@ -6,6 +6,7 @@ template <unsigned N, unsigned M>
 int bar( const char(&val)[M] ) 
 { 
   foo (N,M); 
+  return 0;
 } 
  
 int i = bar<10>("1234"); 
diff --git a/gcc/testsuite/g++.dg/template/canon-type-8.C b/gcc/testsuite/g++.dg/template/canon-type-8.C
index fd1fe3c..dde7d20 100644
--- a/gcc/testsuite/g++.dg/template/canon-type-8.C
+++ b/gcc/testsuite/g++.dg/template/canon-type-8.C
@@ -1,7 +1,7 @@
 // PR c++/45984
 // We were getting different canonical types for matching types because
 // TYPE_ALIGN wasn't propagated to all the variants fast enough.
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 enum { chunk_size = 16 };
diff --git a/gcc/testsuite/g++.dg/template/conv1.C b/gcc/testsuite/g++.dg/template/conv1.C
index e0c7492..20d37ea 100644
--- a/gcc/testsuite/g++.dg/template/conv1.C
+++ b/gcc/testsuite/g++.dg/template/conv1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" } 
 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 29 Dec 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/crash107.C b/gcc/testsuite/g++.dg/template/crash107.C
index d92ee33..ccc53c5 100644
--- a/gcc/testsuite/g++.dg/template/crash107.C
+++ b/gcc/testsuite/g++.dg/template/crash107.C
@@ -1,6 +1,6 @@
 // PR c++/44625
 // { dg-do compile }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 template<typename FP_> struct Vec { // { dg-message "note" }
     Vec& operator^=(Vec& rhs)     {
diff --git a/gcc/testsuite/g++.dg/template/crash23.C b/gcc/testsuite/g++.dg/template/crash23.C
index 0c3eac1..e9e7dd8 100644
--- a/gcc/testsuite/g++.dg/template/crash23.C
+++ b/gcc/testsuite/g++.dg/template/crash23.C
@@ -1,4 +1,5 @@
 // PR c++/17642
+// { dg-options "-Wno-return-type" } 
 
 template<int dim>
 int f(const int* const lsh, const int* const bbox, const int* const nghostzones, int d)
diff --git a/gcc/testsuite/g++.dg/template/crash8.C b/gcc/testsuite/g++.dg/template/crash8.C
index a6f26b3..8aff375 100644
--- a/gcc/testsuite/g++.dg/template/crash8.C
+++ b/gcc/testsuite/g++.dg/template/crash8.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" } 
 
 // Origin: David Robinson <drtr@dial.pipex.com>
 
diff --git a/gcc/testsuite/g++.dg/template/defarg4.C b/gcc/testsuite/g++.dg/template/defarg4.C
index 293538a..42cfc3c 100644
--- a/gcc/testsuite/g++.dg/template/defarg4.C
+++ b/gcc/testsuite/g++.dg/template/defarg4.C
@@ -1,4 +1,5 @@
 // PR c++/14763
+// { dg-options "-Wno-return-type" } 
 
 struct A { 
   int get() const {} 
diff --git a/gcc/testsuite/g++.dg/template/error10.C b/gcc/testsuite/g++.dg/template/error10.C
index 02ea64b..ba6d201 100644
--- a/gcc/testsuite/g++.dg/template/error10.C
+++ b/gcc/testsuite/g++.dg/template/error10.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-std=gnu++98" }
+// { dg-options "-std=gnu++98 -Wno-return-type" }
 // Origin: <tilps at hotmail dot com>
 // c++/9154: poor error message for ">>" vs "> >" in template argument list
 
diff --git a/gcc/testsuite/g++.dg/template/friend32.C b/gcc/testsuite/g++.dg/template/friend32.C
index d5b78e0..1798a68 100644
--- a/gcc/testsuite/g++.dg/template/friend32.C
+++ b/gcc/testsuite/g++.dg/template/friend32.C
@@ -18,4 +18,5 @@ template<class T> class B
 int f ()
 {
   B<int> b;			// { dg-message "required" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/template/init6.C b/gcc/testsuite/g++.dg/template/init6.C
index 1437466..1849e92 100644
--- a/gcc/testsuite/g++.dg/template/init6.C
+++ b/gcc/testsuite/g++.dg/template/init6.C
@@ -1,4 +1,6 @@
 // PR c++/25836
+// { dg-options "-Wno-return-type" }
+
 
 template <class T>
 class Iter {};
@@ -28,4 +30,5 @@ Iter<typename Graph<T>::Node*> *Graph<T>::Inner::get() {
 
 int main() {
   Iter<Graph<int>::Node*> *n2_iter = new SubIter<Graph<int>::Node*>();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/template/memfriend7.C b/gcc/testsuite/g++.dg/template/memfriend7.C
index 26ca6d8..2b498da 100644
--- a/gcc/testsuite/g++.dg/template/memfriend7.C
+++ b/gcc/testsuite/g++.dg/template/memfriend7.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" } 
 
 // Copyright (C) 2003 Free Software Foundation
 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
diff --git a/gcc/testsuite/g++.dg/template/new10.C b/gcc/testsuite/g++.dg/template/new10.C
index 98293ba..60142e9 100644
--- a/gcc/testsuite/g++.dg/template/new10.C
+++ b/gcc/testsuite/g++.dg/template/new10.C
@@ -1,4 +1,5 @@
 // PR c++/46658
+// { dg-options "-Wno-return-type" } 
 
 typedef unsigned short int uint16_t;
 typedef unsigned int uint32_t;
diff --git a/gcc/testsuite/g++.dg/template/nontype12.C b/gcc/testsuite/g++.dg/template/nontype12.C
index b4bb41d..09bf13a 100644
--- a/gcc/testsuite/g++.dg/template/nontype12.C
+++ b/gcc/testsuite/g++.dg/template/nontype12.C
@@ -1,5 +1,6 @@
 // PR c++/20172
 // Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+// { dg-options "-Wno-return-type" } 
 
 template<typename T> struct A
 {
diff --git a/gcc/testsuite/g++.dg/template/overload12.C b/gcc/testsuite/g++.dg/template/overload12.C
index 656dcae..037c62f 100644
--- a/gcc/testsuite/g++.dg/template/overload12.C
+++ b/gcc/testsuite/g++.dg/template/overload12.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" } 
 
 struct S {int x; int y;};
 template<typename T>
@@ -8,7 +9,7 @@ int foo(T a, T2& b, T2 c) {return a + b;}  // { dg-message "template" }
 int foo(char*, S&); // { dg-message "foo" }
 // { dg-message "candidate expects 2 arguments, 3 provided" "arity" { target *-*-* } 8 }
 
-int foo2(int x)
+void foo2(int x)
 {
   S s={1,2};
   char c;
diff --git a/gcc/testsuite/g++.dg/template/overload5.C b/gcc/testsuite/g++.dg/template/overload5.C
index 8e520e9..e550d9a 100644
--- a/gcc/testsuite/g++.dg/template/overload5.C
+++ b/gcc/testsuite/g++.dg/template/overload5.C
@@ -1,4 +1,5 @@
 // PR c++/22621
+// { dg-options "-Wno-return-type" } 
 
 struct foo {
     typedef int (*fun)(int);
diff --git a/gcc/testsuite/g++.dg/template/overload8.C b/gcc/testsuite/g++.dg/template/overload8.C
index cc6a05b..a75aa36 100644
--- a/gcc/testsuite/g++.dg/template/overload8.C
+++ b/gcc/testsuite/g++.dg/template/overload8.C
@@ -1,4 +1,5 @@
 // PR c++/24915
+// { dg-options "-Wno-return-type" } 
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/template/partial10.C b/gcc/testsuite/g++.dg/template/partial10.C
index 53a48fb..8d674f0 100644
--- a/gcc/testsuite/g++.dg/template/partial10.C
+++ b/gcc/testsuite/g++.dg/template/partial10.C
@@ -1,5 +1,6 @@
 // PR c++/35255, DR 115
 // { dg-do link }
+// { dg-options "-Wno-return-type" }
 
 // 14.8.1: In contexts where deduction is done and fails, or in contexts
 // where deduction is not done, if a template argument list is specified
@@ -15,4 +16,5 @@ template <class T1> int fn(T1) { }
 int main()
 {
   def(fn<int>);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/template/partial9.C b/gcc/testsuite/g++.dg/template/partial9.C
index 4c340fc..9ee11c1 100644
--- a/gcc/testsuite/g++.dg/template/partial9.C
+++ b/gcc/testsuite/g++.dg/template/partial9.C
@@ -1,4 +1,5 @@
 // PR c++/36435
+// { dg-options "-Wno-return-type" } 
 
 template <class T> T f();
 template <class T> T* f() { }
diff --git a/gcc/testsuite/g++.dg/template/qual1.C b/gcc/testsuite/g++.dg/template/qual1.C
index 8fa79b3..ce2ed5c 100644
--- a/gcc/testsuite/g++.dg/template/qual1.C
+++ b/gcc/testsuite/g++.dg/template/qual1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" } 
 
 template<class T>
 class Link_array
diff --git a/gcc/testsuite/g++.dg/template/sizeof8.C b/gcc/testsuite/g++.dg/template/sizeof8.C
index 861febc..15be075 100644
--- a/gcc/testsuite/g++.dg/template/sizeof8.C
+++ b/gcc/testsuite/g++.dg/template/sizeof8.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // Testcase by: bangerth@dealii.org
 // PR c++/11406: ICE
+// { dg-options "-Wno-return-type" } 
 
 template <int> struct S{};
 
diff --git a/gcc/testsuite/g++.dg/template/sizeof9.C b/gcc/testsuite/g++.dg/template/sizeof9.C
index 8d9ec95..44f97c7 100644
--- a/gcc/testsuite/g++.dg/template/sizeof9.C
+++ b/gcc/testsuite/g++.dg/template/sizeof9.C
@@ -1,4 +1,5 @@
 // PR c++/21025
+// { dg-options "-Wno-return-type" } 
 
 template<int N> struct X { char x[N]; };
 template<typename T> X<1 + sizeof(T) - sizeof(T)> F(T const &);
diff --git a/gcc/testsuite/g++.dg/template/spec6.C b/gcc/testsuite/g++.dg/template/spec6.C
index 915b833..adc0763 100644
--- a/gcc/testsuite/g++.dg/template/spec6.C
+++ b/gcc/testsuite/g++.dg/template/spec6.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" } 
+
 template <bool, int> struct X {};
 
 template <bool C>    struct X<C,1> {
diff --git a/gcc/testsuite/g++.dg/template/spec7.C b/gcc/testsuite/g++.dg/template/spec7.C
index 18d3c90..ad9dfb2 100644
--- a/gcc/testsuite/g++.dg/template/spec7.C
+++ b/gcc/testsuite/g++.dg/template/spec7.C
@@ -24,4 +24,5 @@ int h()
 {
   b.f();
   b.g(0);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/template/typedef8.C b/gcc/testsuite/g++.dg/template/typedef8.C
index f132606..f482173 100644
--- a/gcc/testsuite/g++.dg/template/typedef8.C
+++ b/gcc/testsuite/g++.dg/template/typedef8.C
@@ -1,4 +1,5 @@
 // PR c++/34206
+// { dg-options "-Wno-return-type" } 
 
 template<class _T1, class _T2> struct pair { };
 template <class T0, class T1> struct tuple {
diff --git a/gcc/testsuite/g++.dg/template/using20.C b/gcc/testsuite/g++.dg/template/using20.C
index 1df9549..cf180d2 100644
--- a/gcc/testsuite/g++.dg/template/using20.C
+++ b/gcc/testsuite/g++.dg/template/using20.C
@@ -15,4 +15,5 @@ int f(void)
 {
   G<int> a;
   a.f();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/template/vla1.C b/gcc/testsuite/g++.dg/template/vla1.C
index fe93440..d873f2b 100644
--- a/gcc/testsuite/g++.dg/template/vla1.C
+++ b/gcc/testsuite/g++.dg/template/vla1.C
@@ -5,5 +5,6 @@ template <bool>
 static int label (int w)
 {
   sizeof(int[w]);
+  return 0;
 }
 int a = label<false>(1);
diff --git a/gcc/testsuite/g++.dg/tls/thread_local3.C b/gcc/testsuite/g++.dg/tls/thread_local3.C
index e05a0b9..3a34549 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local3.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local3.C
@@ -2,7 +2,7 @@
 // { dg-require-effective-target c++11 }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
-// { dg-options -pthread }
+// { dg-options "-pthread -Wno-return-type" }
 // { dg-add-options tls }
 
 int c;
@@ -35,4 +35,5 @@ int main()
 
   if (c != 2 || d != 2)
     __builtin_abort();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local3g.C b/gcc/testsuite/g++.dg/tls/thread_local3g.C
index a3c9ebc..d9a7b41 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local3g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local3g.C
@@ -3,7 +3,7 @@
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
 // { dg-require-cxa-atexit "" }
-// { dg-options -pthread }
+// { dg-options "-pthread -Wno-return-type" }
 // { dg-add-options tls }
 
 int c;
@@ -33,4 +33,5 @@ int main()
 
   if (c != 2 || d != 2)
     __builtin_abort();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local5.C b/gcc/testsuite/g++.dg/tls/thread_local5.C
index 8d17584..30e2067 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local5.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local5.C
@@ -4,7 +4,7 @@
 // { dg-require-effective-target c++11 }
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
-// { dg-options -pthread }
+// { dg-options "-pthread -Wno-return-type" }
 // { dg-add-options tls }
 
 #include <pthread.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local5g.C b/gcc/testsuite/g++.dg/tls/thread_local5g.C
index f87b038..b360af5 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local5g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local5g.C
@@ -5,7 +5,7 @@
 // { dg-require-effective-target tls_runtime }
 // { dg-require-effective-target pthread }
 // { dg-require-cxa-atexit "" }
-// { dg-options -pthread }
+// { dg-options "-pthread -Wno-return-type" }
 // { dg-add-options tls }
 
 #include <pthread.h>
diff --git a/gcc/testsuite/g++.dg/tls/thread_local6.C b/gcc/testsuite/g++.dg/tls/thread_local6.C
index 378cf3d..a213cce 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local6.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local6.C
@@ -1,5 +1,6 @@
 // Test for cleanups in the main thread without -pthread.
 
+// { dg-options "-Wno-return-type" }
 // { dg-do run { target c++11 } }
 // { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
diff --git a/gcc/testsuite/g++.dg/tls/thread_local6g.C b/gcc/testsuite/g++.dg/tls/thread_local6g.C
index f261d54..e26de30 100644
--- a/gcc/testsuite/g++.dg/tls/thread_local6g.C
+++ b/gcc/testsuite/g++.dg/tls/thread_local6g.C
@@ -1,5 +1,6 @@
 // Test for cleanups in the main thread without -pthread.
 
+// { dg-options "-Wno-return-type" }
 // { dg-do run { target c++11 } }
 // { dg-add-options tls }
 // { dg-require-effective-target tls_runtime }
diff --git a/gcc/testsuite/g++.dg/tm/cgraph_edge.C b/gcc/testsuite/g++.dg/tm/cgraph_edge.C
index d4c8f77..1a6138b 100644
--- a/gcc/testsuite/g++.dg/tm/cgraph_edge.C
+++ b/gcc/testsuite/g++.dg/tm/cgraph_edge.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fgnu-tm -O3" }
+// { dg-options "-fgnu-tm -O3 -Wno-return-type" }
 
 template<typename _InputIterator, typename _Distance>  inline void advance(_InputIterator& __i, _Distance __n)
   {
diff --git a/gcc/testsuite/g++.dg/tm/pr46646.C b/gcc/testsuite/g++.dg/tm/pr46646.C
index 9431615..40dabde 100644
--- a/gcc/testsuite/g++.dg/tm/pr46646.C
+++ b/gcc/testsuite/g++.dg/tm/pr46646.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fgnu-tm -O0"}
+// { dg-options "-fgnu-tm -O0 -Wno-return-type" }
 
 namespace std __attribute__ ((__visibility__ ("default"))) {
   template<class _T1, class _T2>
diff --git a/gcc/testsuite/g++.dg/tm/pr47554.C b/gcc/testsuite/g++.dg/tm/pr47554.C
index 28841bb..9fda9ef 100644
--- a/gcc/testsuite/g++.dg/tm/pr47554.C
+++ b/gcc/testsuite/g++.dg/tm/pr47554.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fgnu-tm" }
+// { dg-options "-fgnu-tm -Wno-return-type" }
 
 class list
 {
diff --git a/gcc/testsuite/g++.dg/tm/pr47573.C b/gcc/testsuite/g++.dg/tm/pr47573.C
index 239d922..6b545d1 100644
--- a/gcc/testsuite/g++.dg/tm/pr47573.C
+++ b/gcc/testsuite/g++.dg/tm/pr47573.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fgnu-tm" }
+// { dg-options "-fgnu-tm -Wno-return-type" }
 
 template<typename _Tp> class allocator
 {
@@ -22,4 +22,5 @@ template<typename _Alloc = allocator<char> > class basic_string
 int getStringHeight()
 {
 	basic_string<> tmp;
+	return 0;
 }
diff --git a/gcc/testsuite/g++.dg/torture/20070621-1.C b/gcc/testsuite/g++.dg/torture/20070621-1.C
index 15d1ac7..921e659 100644
--- a/gcc/testsuite/g++.dg/torture/20070621-1.C
+++ b/gcc/testsuite/g++.dg/torture/20070621-1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 /* Reduced from libstdc++-v3/testsuite/25_algorithms/equal/1.cc
 
 1.2.ii: In function 'void test1()':
diff --git a/gcc/testsuite/g++.dg/torture/20090329-1.C b/gcc/testsuite/g++.dg/torture/20090329-1.C
index 0274a19..9b869e3 100644
--- a/gcc/testsuite/g++.dg/torture/20090329-1.C
+++ b/gcc/testsuite/g++.dg/torture/20090329-1.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 struct input_iterator_tag { };
 template<typename _Category, typename _Tp, typename _Distance = long, typename _Pointer = _Tp*, typename _Reference = _Tp&>
diff --git a/gcc/testsuite/g++.dg/torture/pr33134.C b/gcc/testsuite/g++.dg/torture/pr33134.C
index 43482c7..bd82f84 100644
--- a/gcc/testsuite/g++.dg/torture/pr33134.C
+++ b/gcc/testsuite/g++.dg/torture/pr33134.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 /* Used to crash in VRP.  */
 /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
diff --git a/gcc/testsuite/g++.dg/torture/pr33340.C b/gcc/testsuite/g++.dg/torture/pr33340.C
index bac8821..4aae480 100644
--- a/gcc/testsuite/g++.dg/torture/pr33340.C
+++ b/gcc/testsuite/g++.dg/torture/pr33340.C
@@ -1,3 +1,5 @@
+/* { dg-options "-Wno-return-type" } */
+
 void* operator new(__SIZE_TYPE__, void* __p) { }
 
 struct auto_ptr {
diff --git a/gcc/testsuite/g++.dg/torture/pr33627.C b/gcc/testsuite/g++.dg/torture/pr33627.C
index a14e345..8ac0907 100644
--- a/gcc/testsuite/g++.dg/torture/pr33627.C
+++ b/gcc/testsuite/g++.dg/torture/pr33627.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef unsigned int UT_uint32;
 typedef UT_uint32 PT_DocPosition;
diff --git a/gcc/testsuite/g++.dg/torture/pr34222.C b/gcc/testsuite/g++.dg/torture/pr34222.C
index 130896d..883e444 100644
--- a/gcc/testsuite/g++.dg/torture/pr34222.C
+++ b/gcc/testsuite/g++.dg/torture/pr34222.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 namespace std __attribute__ ((__visibility__ ("default"))) {
     template<class _CharT>     struct char_traits;
diff --git a/gcc/testsuite/g++.dg/torture/pr34241.C b/gcc/testsuite/g++.dg/torture/pr34241.C
index 70f186c..0d348bf 100644
--- a/gcc/testsuite/g++.dg/torture/pr34241.C
+++ b/gcc/testsuite/g++.dg/torture/pr34241.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 inline void *operator  new (__SIZE_TYPE__, void *__p) throw ()
 {
diff --git a/gcc/testsuite/g++.dg/torture/pr34641.C b/gcc/testsuite/g++.dg/torture/pr34641.C
index 0cf5077..44f2d5c 100644
--- a/gcc/testsuite/g++.dg/torture/pr34641.C
+++ b/gcc/testsuite/g++.dg/torture/pr34641.C
@@ -1,7 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target fpic }
 // { dg-require-visibility "" }
-// { dg-options "-fPIC" }
+// { dg-options "-fPIC -Wno-return-type" }
 
 
 typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr34850.C b/gcc/testsuite/g++.dg/torture/pr34850.C
index c33dbfb..47935a5 100644
--- a/gcc/testsuite/g++.dg/torture/pr34850.C
+++ b/gcc/testsuite/g++.dg/torture/pr34850.C
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
-/* { dg-options "-ffat-lto-objects" } */
+/* { dg-options "-ffat-lto-objects -Wno-return-type" } */
 
 typedef unsigned char uint8_t;
 typedef unsigned int uint32_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr35164-1.C b/gcc/testsuite/g++.dg/torture/pr35164-1.C
index 1704c22..0b9ca18 100644
--- a/gcc/testsuite/g++.dg/torture/pr35164-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr35164-1.C
@@ -1,3 +1,4 @@
+/* { dg-options "-Wno-return-type" } */
 typedef __SIZE_TYPE__ size_t;
 template<typename _Iterator, typename _Container> class __normal_iterator {
 public:
diff --git a/gcc/testsuite/g++.dg/torture/pr36745.C b/gcc/testsuite/g++.dg/torture/pr36745.C
index 53845aa..b1ff299 100644
--- a/gcc/testsuite/g++.dg/torture/pr36745.C
+++ b/gcc/testsuite/g++.dg/torture/pr36745.C
@@ -1,6 +1,6 @@
 /* PR target/36745 */
 /* { dg-do compile } */
-/* { dg-options "-O2 -fPIC" } */
+/* { dg-options "-O2 -fPIC -Wno-return-type" } */
 /* { dg-require-effective-target fpic } */
 
 typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr38705.C b/gcc/testsuite/g++.dg/torture/pr38705.C
index 8058d3a..07dec55 100644
--- a/gcc/testsuite/g++.dg/torture/pr38705.C
+++ b/gcc/testsuite/g++.dg/torture/pr38705.C
@@ -24,4 +24,5 @@ S::bar () const
 {
   foo (u);
   foo (t);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/torture/pr38811.C b/gcc/testsuite/g++.dg/torture/pr38811.C
index e9b304d..831e514 100644
--- a/gcc/testsuite/g++.dg/torture/pr38811.C
+++ b/gcc/testsuite/g++.dg/torture/pr38811.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef unsigned long ULONG;
 void iwos_ErrorMessage(long error, const char * const file_name,
diff --git a/gcc/testsuite/g++.dg/torture/pr39362.C b/gcc/testsuite/g++.dg/torture/pr39362.C
index 554f9d0..39d285f 100644
--- a/gcc/testsuite/g++.dg/torture/pr39362.C
+++ b/gcc/testsuite/g++.dg/torture/pr39362.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 void *fastMalloc (int n);
 void fastFree (void *p);
diff --git a/gcc/testsuite/g++.dg/torture/pr39732.C b/gcc/testsuite/g++.dg/torture/pr39732.C
index 4b3975b..c51acad 100644
--- a/gcc/testsuite/g++.dg/torture/pr39732.C
+++ b/gcc/testsuite/g++.dg/torture/pr39732.C
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-profiling "-fprofile-generate" } */
-/* { dg-options "-fprofile-generate" } */
+/* { dg-options "-fprofile-generate -Wno-return-type" } */
 
 template<class _CharT>     struct char_traits;
 template<typename _OI>
diff --git a/gcc/testsuite/g++.dg/torture/pr41775.C b/gcc/testsuite/g++.dg/torture/pr41775.C
index 3d8548e..8ead836 100644
--- a/gcc/testsuite/g++.dg/torture/pr41775.C
+++ b/gcc/testsuite/g++.dg/torture/pr41775.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-visibility "" } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef unsigned int size_t;
 namespace std __attribute__ ((__visibility__ ("default")))
diff --git a/gcc/testsuite/g++.dg/torture/pr42183.C b/gcc/testsuite/g++.dg/torture/pr42183.C
index 375b37f..82ccf49 100644
--- a/gcc/testsuite/g++.dg/torture/pr42183.C
+++ b/gcc/testsuite/g++.dg/torture/pr42183.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 class IntSize {
 public:
diff --git a/gcc/testsuite/g++.dg/torture/pr42450.C b/gcc/testsuite/g++.dg/torture/pr42450.C
index f630fa2..6ca8612 100644
--- a/gcc/testsuite/g++.dg/torture/pr42450.C
+++ b/gcc/testsuite/g++.dg/torture/pr42450.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 template < typename > class basic_stringstream;
 
diff --git a/gcc/testsuite/g++.dg/torture/pr42704.C b/gcc/testsuite/g++.dg/torture/pr42704.C
index 735b1e7..fb2e954 100644
--- a/gcc/testsuite/g++.dg/torture/pr42704.C
+++ b/gcc/testsuite/g++.dg/torture/pr42704.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef int PRInt32;
 class nsTreeRows {
diff --git a/gcc/testsuite/g++.dg/torture/pr42760.C b/gcc/testsuite/g++.dg/torture/pr42760.C
index be85f7f..57d6753 100644
--- a/gcc/testsuite/g++.dg/torture/pr42760.C
+++ b/gcc/testsuite/g++.dg/torture/pr42760.C
@@ -1,5 +1,6 @@
 // PR middle-end/42760
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 template <typename T>
 struct A
diff --git a/gcc/testsuite/g++.dg/torture/pr42773.C b/gcc/testsuite/g++.dg/torture/pr42773.C
index 478ad27..bc43c5f 100644
--- a/gcc/testsuite/g++.dg/torture/pr42773.C
+++ b/gcc/testsuite/g++.dg/torture/pr42773.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fno-exceptions" }
+// { dg-options "-fno-exceptions -Wno-return-type" }
 
 typedef unsigned int uint;
 struct QShared {
diff --git a/gcc/testsuite/g++.dg/torture/pr42883.C b/gcc/testsuite/g++.dg/torture/pr42883.C
index f164c37..cba9d89 100644
--- a/gcc/testsuite/g++.dg/torture/pr42883.C
+++ b/gcc/testsuite/g++.dg/torture/pr42883.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
diff --git a/gcc/testsuite/g++.dg/torture/pr43905.C b/gcc/testsuite/g++.dg/torture/pr43905.C
index 0e49a32..2f48de8 100644
--- a/gcc/testsuite/g++.dg/torture/pr43905.C
+++ b/gcc/testsuite/g++.dg/torture/pr43905.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" }
+
 extern void sf ( __const char *);
 struct Matrix{
   int operator[](int n){
diff --git a/gcc/testsuite/g++.dg/torture/pr44148.C b/gcc/testsuite/g++.dg/torture/pr44148.C
index a60ba9a..0da666a 100644
--- a/gcc/testsuite/g++.dg/torture/pr44148.C
+++ b/gcc/testsuite/g++.dg/torture/pr44148.C
@@ -1,7 +1,6 @@
 // PR c++/44148
 // { dg-do compile }
-// { dg-options "" }
-// { dg-options "-fpic" { target fpic } }
+// { dg-options "-fpic -Wno-return-type" { target fpic } }
 
 template <typename T> struct S2
 {
diff --git a/gcc/testsuite/g++.dg/torture/pr44295.C b/gcc/testsuite/g++.dg/torture/pr44295.C
index 8169bb0..6193628 100644
--- a/gcc/testsuite/g++.dg/torture/pr44295.C
+++ b/gcc/testsuite/g++.dg/torture/pr44295.C
@@ -1,4 +1,6 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
+
 extern "C" {
   typedef __SIZE_TYPE__ size_t;
   typedef struct   {
diff --git a/gcc/testsuite/g++.dg/torture/pr44357.C b/gcc/testsuite/g++.dg/torture/pr44357.C
index 3380350..9815a20 100644
--- a/gcc/testsuite/g++.dg/torture/pr44357.C
+++ b/gcc/testsuite/g++.dg/torture/pr44357.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 extern "C"
 {
   typedef long unsigned int size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr44813.C b/gcc/testsuite/g++.dg/torture/pr44813.C
index 1dc01b0..edca5e4 100644
--- a/gcc/testsuite/g++.dg/torture/pr44813.C
+++ b/gcc/testsuite/g++.dg/torture/pr44813.C
@@ -1,3 +1,4 @@
+// { dg-options "-Wno-return-type" }
 typedef unsigned int PRUint32;
 typedef int PRInt32;
 typedef unsigned long PRUint64;
diff --git a/gcc/testsuite/g++.dg/torture/pr45580.C b/gcc/testsuite/g++.dg/torture/pr45580.C
index c3af491..f490978 100644
--- a/gcc/testsuite/g++.dg/torture/pr45580.C
+++ b/gcc/testsuite/g++.dg/torture/pr45580.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std {
     typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr45874.C b/gcc/testsuite/g++.dg/torture/pr45874.C
index 70965ff..17c92b3 100644
--- a/gcc/testsuite/g++.dg/torture/pr45874.C
+++ b/gcc/testsuite/g++.dg/torture/pr45874.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef struct {
 } IppLibraryVersion;
diff --git a/gcc/testsuite/g++.dg/torture/pr45877.C b/gcc/testsuite/g++.dg/torture/pr45877.C
index 9af6ae9..4934dfa 100644
--- a/gcc/testsuite/g++.dg/torture/pr45877.C
+++ b/gcc/testsuite/g++.dg/torture/pr45877.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std __attribute__ ((__visibility__ ("default")))
 {
diff --git a/gcc/testsuite/g++.dg/torture/pr46383.C b/gcc/testsuite/g++.dg/torture/pr46383.C
index 2b61039..d6e5285 100644
--- a/gcc/testsuite/g++.dg/torture/pr46383.C
+++ b/gcc/testsuite/g++.dg/torture/pr46383.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std {
 template<class,class>struct pair{};
diff --git a/gcc/testsuite/g++.dg/torture/pr46469.C b/gcc/testsuite/g++.dg/torture/pr46469.C
index 8212ea4..c16a0f2 100644
--- a/gcc/testsuite/g++.dg/torture/pr46469.C
+++ b/gcc/testsuite/g++.dg/torture/pr46469.C
@@ -1,5 +1,6 @@
 extern "C"  __inline __attribute__ ((__gnu_inline__)) int pthread_equal ()
   {
+    return 0;
   }
 
 static
@@ -10,4 +11,5 @@ static
 int identifierByPthreadHandle ()
 {
   pthread_equal ();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/torture/pr47313.C b/gcc/testsuite/g++.dg/torture/pr47313.C
index c10f558..5b7fd16 100644
--- a/gcc/testsuite/g++.dg/torture/pr47313.C
+++ b/gcc/testsuite/g++.dg/torture/pr47313.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace internal {
     template < class DSC, bool Const >   struct CC_iterator   {
diff --git a/gcc/testsuite/g++.dg/torture/pr48271.C b/gcc/testsuite/g++.dg/torture/pr48271.C
index 5b60ccd..917814e 100644
--- a/gcc/testsuite/g++.dg/torture/pr48271.C
+++ b/gcc/testsuite/g++.dg/torture/pr48271.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-ftree-vrp -fno-guess-branch-probability -fnon-call-exceptions" }
+// { dg-options "-ftree-vrp -fno-guess-branch-probability -fnon-call-exceptions -Wno-return-type" }
 
 void *xalloc ();
 void xfree (void *);
diff --git a/gcc/testsuite/g++.dg/torture/pr49615.C b/gcc/testsuite/g++.dg/torture/pr49615.C
index 98a2f95..28db78d 100644
--- a/gcc/testsuite/g++.dg/torture/pr49615.C
+++ b/gcc/testsuite/g++.dg/torture/pr49615.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-g" } */
+/* { dg-options "-g -Wno-return-type" } */
 
 template <class T>
 static inline bool Dispatch (T* obj, void (T::*func) ())
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543..d5e9a7c 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index 91804f4..c94d28b 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" }
+
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51436.C b/gcc/testsuite/g++.dg/torture/pr51436.C
index 43d6c73..578a075 100644
--- a/gcc/testsuite/g++.dg/torture/pr51436.C
+++ b/gcc/testsuite/g++.dg/torture/pr51436.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef __SIZE_TYPE__ size_t;
 extern "C" void *memcpy (void *, __const void *, size_t);
diff --git a/gcc/testsuite/g++.dg/torture/pr51482.C b/gcc/testsuite/g++.dg/torture/pr51482.C
index 2843591..e038055 100644
--- a/gcc/testsuite/g++.dg/torture/pr51482.C
+++ b/gcc/testsuite/g++.dg/torture/pr51482.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef enum { CLASS_IN = 1, CLASS_OUT = -1 } FERGUSON_KEY_CLASS, BEZIER_KEY_CLASS;
 typedef class flag_interface { } VECT3DF_SIMPLE;
diff --git a/gcc/testsuite/g++.dg/torture/pr51737.C b/gcc/testsuite/g++.dg/torture/pr51737.C
index ff77edb..2be3f03 100644
--- a/gcc/testsuite/g++.dg/torture/pr51737.C
+++ b/gcc/testsuite/g++.dg/torture/pr51737.C
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
+
 template<class T> class intrusive_ptr {
 public:
     ~intrusive_ptr() { intrusive_ptr_release( px ); }
diff --git a/gcc/testsuite/g++.dg/torture/pr51959.C b/gcc/testsuite/g++.dg/torture/pr51959.C
index da0be71..fdea361 100644
--- a/gcc/testsuite/g++.dg/torture/pr51959.C
+++ b/gcc/testsuite/g++.dg/torture/pr51959.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std {
     typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr52772.C b/gcc/testsuite/g++.dg/torture/pr52772.C
index 810e657..6409c27 100644
--- a/gcc/testsuite/g++.dg/torture/pr52772.C
+++ b/gcc/testsuite/g++.dg/torture/pr52772.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 
diff --git a/gcc/testsuite/g++.dg/torture/pr52918-2.C b/gcc/testsuite/g++.dg/torture/pr52918-2.C
index ba31295..925f1cc 100644
--- a/gcc/testsuite/g++.dg/torture/pr52918-2.C
+++ b/gcc/testsuite/g++.dg/torture/pr52918-2.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef __SIZE_TYPE__ size_t;
 void*   __cxa_allocate_exception(size_t) throw();
diff --git a/gcc/testsuite/g++.dg/torture/pr53011.C b/gcc/testsuite/g++.dg/torture/pr53011.C
index 2cd8a60..eece038 100644
--- a/gcc/testsuite/g++.dg/torture/pr53011.C
+++ b/gcc/testsuite/g++.dg/torture/pr53011.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 extern "C" class WvFastString;
 typedef WvFastString& WvStringParm;
diff --git a/gcc/testsuite/g++.dg/torture/pr53752.C b/gcc/testsuite/g++.dg/torture/pr53752.C
index fd6c687..fe0459e 100644
--- a/gcc/testsuite/g++.dg/torture/pr53752.C
+++ b/gcc/testsuite/g++.dg/torture/pr53752.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-g" }
+// { dg-options "-g -Wno-return-type" }
 
 typedef unsigned int uint32_t;
 typedef unsigned long int uint64_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr54838.C b/gcc/testsuite/g++.dg/torture/pr54838.C
index 6d34d57..63804ba 100644
--- a/gcc/testsuite/g++.dg/torture/pr54838.C
+++ b/gcc/testsuite/g++.dg/torture/pr54838.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-ftracer -fno-tree-dce -fno-tree-sra" }
+// { dg-options "-ftracer -fno-tree-dce -fno-tree-sra -Wno-return-type" }
 
 struct bidirectional_iterator_tag
 {};
diff --git a/gcc/testsuite/g++.dg/torture/pr54902.C b/gcc/testsuite/g++.dg/torture/pr54902.C
index 790ffe5..b8929ca 100644
--- a/gcc/testsuite/g++.dg/torture/pr54902.C
+++ b/gcc/testsuite/g++.dg/torture/pr54902.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std __attribute__ ((__visibility__ ("default"))) {
     template<typename _Iterator>     struct iterator_traits     {
diff --git a/gcc/testsuite/g++.dg/torture/pr56029.C b/gcc/testsuite/g++.dg/torture/pr56029.C
index ca4a82a..b5af047 100644
--- a/gcc/testsuite/g++.dg/torture/pr56029.C
+++ b/gcc/testsuite/g++.dg/torture/pr56029.C
@@ -1,5 +1,6 @@
 // PR tree-optimization/56029
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 template <class T>
 struct DefaultDeleter
diff --git a/gcc/testsuite/g++.dg/torture/pr57107.C b/gcc/testsuite/g++.dg/torture/pr57107.C
index 516dec1..6cbb831 100644
--- a/gcc/testsuite/g++.dg/torture/pr57107.C
+++ b/gcc/testsuite/g++.dg/torture/pr57107.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 typedef long unsigned int size_t;
 namespace std {
diff --git a/gcc/testsuite/g++.dg/torture/pr57140.C b/gcc/testsuite/g++.dg/torture/pr57140.C
index 2ea2f9c..0c2a907 100644
--- a/gcc/testsuite/g++.dg/torture/pr57140.C
+++ b/gcc/testsuite/g++.dg/torture/pr57140.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std {
     typedef long unsigned int size_t;
diff --git a/gcc/testsuite/g++.dg/torture/pr57235.C b/gcc/testsuite/g++.dg/torture/pr57235.C
index fd56633..9f86edf 100644
--- a/gcc/testsuite/g++.dg/torture/pr57235.C
+++ b/gcc/testsuite/g++.dg/torture/pr57235.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 namespace std
 {
diff --git a/gcc/testsuite/g++.dg/torture/pr58252.C b/gcc/testsuite/g++.dg/torture/pr58252.C
index d38a7a7..0e5529d 100644
--- a/gcc/testsuite/g++.dg/torture/pr58252.C
+++ b/gcc/testsuite/g++.dg/torture/pr58252.C
@@ -1,5 +1,5 @@
 // { dg-do compile }
-// { dg-options "-fpermissive" }
+// { dg-options "-fpermissive -Wno-return-type" }
 typedef long unsigned int size_t;
        typedef bool _CORBA_Boolean;
          typedef unsigned int _CORBA_ULong;
diff --git a/gcc/testsuite/g++.dg/torture/pr58555.C b/gcc/testsuite/g++.dg/torture/pr58555.C
index ac5009a..b37c026 100644
--- a/gcc/testsuite/g++.dg/torture/pr58555.C
+++ b/gcc/testsuite/g++.dg/torture/pr58555.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 template <typename _Tp> _Tp *__addressof(_Tp &) {}
 template <typename _Tp> class A {
 public:
diff --git a/gcc/testsuite/g++.dg/torture/pr59208.C b/gcc/testsuite/g++.dg/torture/pr59208.C
index 3dc110c..30d1f4b 100644
--- a/gcc/testsuite/g++.dg/torture/pr59208.C
+++ b/gcc/testsuite/g++.dg/torture/pr59208.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 class A {
 public:
   A();
diff --git a/gcc/testsuite/g++.dg/torture/pr60438-1.C b/gcc/testsuite/g++.dg/torture/pr60438-1.C
index 748295a..2dc88f6 100644
--- a/gcc/testsuite/g++.dg/torture/pr60438-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr60438-1.C
@@ -23,4 +23,5 @@ foo (struct C *y, float x)
       d.a = (int) (b * x);
     }
   baz (&d);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/torture/pr60438-2.C b/gcc/testsuite/g++.dg/torture/pr60438-2.C
index b32576f..a3299e8 100644
--- a/gcc/testsuite/g++.dg/torture/pr60438-2.C
+++ b/gcc/testsuite/g++.dg/torture/pr60438-2.C
@@ -1,3 +1,3 @@
 // { dg-do compile }
-// { dg-options "-fomit-frame-pointer -fno-crossjumping" }
+// { dg-options "-fomit-frame-pointer -fno-crossjumping -Wno-return-type" }
 #include "pr60438-1.C"
diff --git a/gcc/testsuite/g++.dg/torture/pr60746.C b/gcc/testsuite/g++.dg/torture/pr60746.C
index 7ce6ebe..46fd160 100644
--- a/gcc/testsuite/g++.dg/torture/pr60746.C
+++ b/gcc/testsuite/g++.dg/torture/pr60746.C
@@ -20,4 +20,5 @@ Two::run ()
       || list_arry[4][orig].getSize () > 0)
     {
     }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/torture/pr61554.C b/gcc/testsuite/g++.dg/torture/pr61554.C
index 6f609c8..dc80df8 100644
--- a/gcc/testsuite/g++.dg/torture/pr61554.C
+++ b/gcc/testsuite/g++.dg/torture/pr61554.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
 
 struct A
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
index b30e5dd..15eabc0 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
@@ -1,7 +1,7 @@
 // PR 39548 verify ssa ICE
 //
 // { dg-do compile { target { lp64 } } }
-// { dg-options  "-Wno-error -fno-exceptions -fno-tree-vrp -O2 -fprofile-generate  -finline-limit=500 -std=c++98"  }
+// { dg-options  "-Wno-error -fno-exceptions -fno-tree-vrp -O2 -fprofile-generate  -finline-limit=500 -std=c++98 -Wno-return-type"  }
 //
 
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr22444.C b/gcc/testsuite/g++.dg/tree-ssa/pr22444.C
index 7df4b9c..ca081ca 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr22444.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr22444.C
@@ -3,7 +3,7 @@
 // to the addressable vars list, because this may cause false aliasing
 // with the subvars leading to the subvars not being renamed when they should
 // { dg-do compile }
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-return-type" }
 __extension__ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 __extension__ typedef __SIZE_TYPE__ size_t;
 namespace std
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr23948.C b/gcc/testsuite/g++.dg/tree-ssa/pr23948.C
index c341614..929e302 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr23948.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr23948.C
@@ -13,6 +13,7 @@ int make_scheduler_request(double a, double b)
   f1(a/prrs);
   f1(1/prrs);
   f1(b/prrs);
+  return 0;
 }
 
 /* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr24172.C b/gcc/testsuite/g++.dg/tree-ssa/pr24172.C
index 245186a..2fbbc6f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr24172.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr24172.C
@@ -1,4 +1,4 @@
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-return-type" }
 void IOException( char);
 inline int* dummy( const char* const mode )
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C b/gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
index 09a3f94..af8576f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr24351-3.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 namespace sigc {
     template <class T_type>     struct type_trait     {
     	typedef T_type& pass;
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27283.C b/gcc/testsuite/g++.dg/tree-ssa/pr27283.C
index 224ea6a..78b77f0 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr27283.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr27283.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 namespace Gambit
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27291.C b/gcc/testsuite/g++.dg/tree-ssa/pr27291.C
index b8b5e13..c5407c5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr27291.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr27291.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 namespace std
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27548.C b/gcc/testsuite/g++.dg/tree-ssa/pr27548.C
index d23b959..c5a6fe1 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr27548.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr27548.C
@@ -1,6 +1,6 @@
 // PR tree-optimization/27548
 // { dg-do compile }
-// { dg-options "-O1" }
+// { dg-options "-O1 -Wno-return-type" }
 
 namespace Gambit
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
index 039b3be..c6ff58d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O -fdump-tree-optimized-vops" } */
+/* { dg-options "-O -fdump-tree-optimized-vops -Wno-return-type" } */
 
 struct Value
 {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr34355.C b/gcc/testsuite/g++.dg/tree-ssa/pr34355.C
index 978ed75..800b7cf 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr34355.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr34355.C
@@ -24,4 +24,5 @@ double Parse_Float ()
   EXPRESS Express = {1.0, 2.0, 3.0, 4.0, 5.0};
 
   Parse_Rel_Factor (Express, &Terms);
+  return 1.0;
 }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr42337.C b/gcc/testsuite/g++.dg/tree-ssa/pr42337.C
index 8abd4b2..a05ba4f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr42337.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr42337.C
@@ -1,6 +1,6 @@
 // PR tree-optimize/42337
 // { dg-do compile }
-// { dg-options "-O2" }
+// { dg-options "-O2 -Wno-return-type" }
 
 template<class _T1, class _T2> struct pair {
   _T2 second;
diff --git a/gcc/testsuite/g++.dg/vect/pr60836.cc b/gcc/testsuite/g++.dg/vect/pr60836.cc
index 83bb183..00a3465 100644
--- a/gcc/testsuite/g++.dg/vect/pr60836.cc
+++ b/gcc/testsuite/g++.dg/vect/pr60836.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-options "-Wno-return-type" }
+
 
 int a, b;
 typedef double (*NormFunc) (const int &);
diff --git a/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C b/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
index a71551f..34c637f 100644
--- a/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
@@ -1,5 +1,5 @@
 // { dg-do link  }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 
 #include <cstddef>
 
@@ -69,10 +69,12 @@ int warn_for___null()
   h<__null>(); // No warning: __null bound to integer template parameter
   l(__null);   // No warning: __null is used to implicitly instantiate the template
   __null && __null; // No warning: converting NULL to bool is OK
+  return 0;
 }
 
 int main()
 {
   warn_for_NULL();
   warn_for___null();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C b/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
index 92a87d1..4c08656 100644
--- a/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
@@ -34,7 +34,7 @@ void func1(long int a) {
 
 int x = 1;
 
-main()
+int main()
 {
   int *p = &x;
 
@@ -42,4 +42,5 @@ main()
   Foo::Compare<long int, int>(NULL, p);  // { dg-warning "passing NULL to" }
   Foo::Compare(NULL, p);
   func1(NULL);                           // { dg-warning "passing NULL to" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-10.C b/gcc/testsuite/g++.dg/warn/Wparentheses-10.C
index c30df09..51e4e1e 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-10.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-10.C
@@ -116,4 +116,5 @@ bar (int a, int b, int c)
   foo (1 ^ 2 < 3); // { dg-warning "parentheses" "correct warning" }
   foo ((1 ^ 2) < 3);
   foo (1 ^ (2 < 3));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-11.C b/gcc/testsuite/g++.dg/warn/Wparentheses-11.C
index 912c3b7..53d68b7 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-11.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-11.C
@@ -98,4 +98,5 @@ bar (int a, int b, int c)
   foo (1 & 2 != 3); // { dg-warning "parentheses" "correct warning" }
   foo ((1 & 2) != 3);
   foo (1 & (2 != 3));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-12.C b/gcc/testsuite/g++.dg/warn/Wparentheses-12.C
index b045298..db7bef7 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-12.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-12.C
@@ -57,4 +57,5 @@ bar (void)
     else
       foo (17);
   }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-25.C b/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
index ab00c25..337e9c2 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
@@ -153,6 +153,7 @@ bar (int a, int b, int c)
   foo (!2 | !1);
   foo (!(2 | 1));
   foo (2 | (!1));
+  return 0;
 }
 
 
@@ -256,4 +257,6 @@ baz (int a, int b, int c)
   foo (~2 | !1);
   foo ((2 & c) | !1);
   foo ((2 | c) | !1);
+
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-6.C b/gcc/testsuite/g++.dg/warn/Wparentheses-6.C
index 9963d82..19c15c6 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-6.C
@@ -62,4 +62,5 @@ bar (int a, int b, int c)
   foo (1 != 2 != 3); // { dg-warning "comparison" "correct warning" }
   foo ((1 != 2) != 3);
   foo (1 != (2 != 3));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-7.C b/gcc/testsuite/g++.dg/warn/Wparentheses-7.C
index 7d549c3..b70e0d9 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-7.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-7.C
@@ -80,4 +80,5 @@ bar (int a, int b, int c)
   foo (6 >> 5 - 4); // { dg-warning "parentheses" "correct warning" }
   foo ((6 >> 5) - 4);
   foo (6 >> (5 - 4));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-8.C b/gcc/testsuite/g++.dg/warn/Wparentheses-8.C
index ddb5e64..af86c8a 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-8.C
@@ -26,4 +26,5 @@ bar (int a, int b, int c)
   foo (1 || 2 && 3); // { dg-warning "parentheses" "correct warning" }
   foo ((1 || 2) && 3);
   foo (1 || (2 && 3));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-9.C b/gcc/testsuite/g++.dg/warn/Wparentheses-9.C
index bad6fb1..ffee537 100644
--- a/gcc/testsuite/g++.dg/warn/Wparentheses-9.C
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-9.C
@@ -116,4 +116,5 @@ bar (int a, int b, int c)
   foo (1 | 2 <= 3); // { dg-warning "parentheses" "correct warning" }
   foo ((1 | 2) <= 3);
   foo (1 | (2 <= 3));
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wshadow-5.C b/gcc/testsuite/g++.dg/warn/Wshadow-5.C
index 6623291..633dd81 100644
--- a/gcc/testsuite/g++.dg/warn/Wshadow-5.C
+++ b/gcc/testsuite/g++.dg/warn/Wshadow-5.C
@@ -1,7 +1,7 @@
 // Wshadows was giving warnings for nested function parameters in nested class
 // or structure that we didn't want.
 // { dg-do compile }
-// { dg-options "-Wshadow" }
+// { dg-options "-Wshadow -Wno-return-type" }
 
 // PR c++/41825
 int f (int n)
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
index f840f30..3092de2 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits-Wextra.C
@@ -1,6 +1,6 @@
 /* Test that -Wtype-limits is enabled by -Wextra.  */
 /* { dg-do compile } */
-/* { dg-options "-Wextra" } */
+/* { dg-options "-Wextra -Wno-return-type" } */
 extern void assert (int);
 
 void a (unsigned char x)
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits-no.C b/gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
index 5040e26..4deb4b8 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits-no.C
@@ -1,6 +1,6 @@
 /* Test disabling -Wtype-limits.  */
 /* { dg-do compile } */
-/* { dg-options "-Wextra -Wno-type-limits" } */
+/* { dg-options "-Wextra -Wno-type-limits -Wno-return-type" } */
 extern void assert (int);
 
 void a (unsigned char x)
diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits.C b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
index a352e7b..8a6dc06 100644
--- a/gcc/testsuite/g++.dg/warn/Wtype-limits.C
+++ b/gcc/testsuite/g++.dg/warn/Wtype-limits.C
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-Wtype-limits" } */
+/* { dg-options "-Wtype-limits -Wno-return-type" } */
 
 extern void assert (int);
 
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C b/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C
index 4fc8640..27014e8 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs.C
@@ -1,5 +1,5 @@
 // Origin PR c++/33255
-// { dg-options "-Wunused" } <-- should trigger -Wunused-local-typedefs
+// { dg-options "-Wunused -Wno-return-type" } <-- should trigger -Wunused-local-typedefs
 // { dg-do compile }
 
 void
diff --git a/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C b/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C
index 185d2b5..4269bed 100644
--- a/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C
+++ b/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-5.C
@@ -1,5 +1,5 @@
 // PR c++/52718
-// { dg-options "-Wzero-as-null-pointer-constant" }
+// { dg-options "-Wzero-as-null-pointer-constant -Wno-return-type" }
 
 struct foo
 {
diff --git a/gcc/testsuite/g++.dg/warn/pmf1.C b/gcc/testsuite/g++.dg/warn/pmf1.C
index 013c21b..a63a00c 100644
--- a/gcc/testsuite/g++.dg/warn/pmf1.C
+++ b/gcc/testsuite/g++.dg/warn/pmf1.C
@@ -15,4 +15,5 @@ int
 a::f() const
 {
   int (a::* b)() const = &f; // { dg-error "&a::f" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 2670f63..37ac8d5 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -15,4 +15,5 @@ int test() {
   //
   std::string s = "";
   s += 'x' + "y";	      // { dg-warning "bounds of constant string" }
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C b/gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
index 132b13d..e705f0d 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 // prms-id: 13417
 
 class   Foo {
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash24.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
index 42d0fab..1254861 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
@@ -11,9 +11,11 @@
 // array bounds, and then force the array to be allocated on the stack instead
 // of a register.
 
-main()
+int main()
 {
   char i[1];
 
   i[1] = 0;
+
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/constructor.C b/gcc/testsuite/g++.old-deja/g++.ext/constructor.C
index a7995bb..e8c1ab4 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/constructor.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/constructor.C
@@ -9,7 +9,7 @@ struct Any {
 
 int i, j;
 
-main () {
+int main () {
   struct Any *ap = (struct Any *)
     __builtin_alloca (sizeof(struct Any));
   *ap = ((struct Any){ &i, &j }) ;
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C b/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
index 29955fb..0f165c0 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 
 int f(int x) return y(x) { } // { dg-error "" } 
 
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C b/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
index 7a0e0d5..0caf6a3 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 
 extern "C" void abort();
 
diff --git a/gcc/testsuite/g++.old-deja/g++.ext/return1.C b/gcc/testsuite/g++.old-deja/g++.ext/return1.C
index f6bbc4d..60d7c8a 100644
--- a/gcc/testsuite/g++.old-deja/g++.ext/return1.C
+++ b/gcc/testsuite/g++.old-deja/g++.ext/return1.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 // Test that the named return value extension works when passed as a reference.
 // Origin: Jason Merrill <jason@redhat.com>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/anon4.C b/gcc/testsuite/g++.old-deja/g++.jason/anon4.C
index 588bf26..2e8b5ca 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/anon4.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/anon4.C
@@ -3,7 +3,7 @@
 // PRMS Id: 5371
 // Bug: g++ screws up the alignment of buff and dies.
 
-main()
+int main()
 {
   union {
     double a;
@@ -11,4 +11,5 @@ main()
   };
 
   void *p = buff;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/enum6.C b/gcc/testsuite/g++.old-deja/g++.jason/enum6.C
index 97bc2ba..e8d4f64 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/enum6.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/enum6.C
@@ -20,7 +20,7 @@ enum C { c1 = -1, c2 = 0x80000000 };
 enum D { d1 = CHAR_MIN, d2 = CHAR_MAX };
 enum E { e1 = CHAR_MIN, e2 = CHAR_MIN };
 
-main()
+int main()
 {
   return (sizeof (A) != 4 || sizeof (B) != 4 || sizeof (C) != 8
 	  || sizeof (D) != 1 || sizeof (E) != 1);
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/lineno2.C b/gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
index 7f33176..f8e0a1f 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
@@ -8,7 +8,8 @@ public:
 # 200 "lineno2.C"
 };
 
-main()
+int main()
 {
    undef1(); // { dg-error "" "" { target *-*-* } 204 }
+   return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/lineno3.C b/gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
index 997267e..0c5e44c 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 // GROUPS passed error-reporting
 // potential bug: # line directive does not get reproduced in template
 // expansion
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/lineno4.C b/gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
index caa5bc2..6d29356 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 // GROUPS passed error-reporting
 // Bug: # line directive in template definition interferes with growing obstack
 template <class T> class A
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/new2.C b/gcc/testsuite/g++.old-deja/g++.jason/new2.C
index 75d353d..0076f62 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/new2.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/new2.C
@@ -7,7 +7,8 @@ struct A {
   A() { i = 2; }
 };
  
-main()
+int main()
 {
   A *p = new A ();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/new4.C b/gcc/testsuite/g++.old-deja/g++.jason/new4.C
index 770a2a2..1126dd5 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/new4.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/new4.C
@@ -10,7 +10,7 @@ struct A {
 A* ap = new A (1);
 A* ap2 = new A[3];
 
-main ()
+int main ()
 {
   if (ap->i != 1 || ap2[0].i != 42 || ap2[1].i != 42 || ap2[2].i != 42)
     return 1;
@@ -20,4 +20,5 @@ main ()
 
   if (ap->i != 1 || ap2[0].i != 42 || ap2[1].i != 42 || ap2[2].i != 42)
     return 1;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/shadow1.C b/gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
index 941f80c..f0e9fa9 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
@@ -10,7 +10,8 @@ private:
 
 void x::fun() { }
 
-main ()
+int main ()
 {
         float foo;
+	return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/tempcons.C b/gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
index a9974db..80fe51f 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-options "-Wno-return-type" }
 // Bug: member initializers are allowed where they shouldn't be.
 
 template <class T>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C b/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
index 88e06d8..4b4594d 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
@@ -1,5 +1,5 @@
 // { dg-do run { target fpic } }
-// { dg-options "-fPIC" }
+// { dg-options "-fPIC -Wno-return-type" }
 // { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } { "*" } { "" } }
 // Test that non-variadic function calls using thunks and PIC work right.
 
@@ -40,10 +40,11 @@ void* test(MMixin& anExample)
   return anExample.MixinFunc(1,A(0)).p;
 }
 
-main ()
+int main ()
 {
   CExample c;
 
   if (test(c) != &c)
     return 1;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/builtin1.C b/gcc/testsuite/g++.old-deja/g++.law/builtin1.C
index 67b71a8..3338483 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/builtin1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/builtin1.C
@@ -14,4 +14,4 @@ extern "C" int printf (const char *, ...);
 void* junk() {
   return __builtin_alloca(10);
 }
-main() { printf ("PASS\n");}
+int main() { printf ("PASS\n"); return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/enum9.C b/gcc/testsuite/g++.old-deja/g++.law/enum9.C
index e4045b5..cae04a3 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/enum9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/enum9.C
@@ -1,5 +1,5 @@
 // { dg-do run  }
-// { dg-options "-fshort-enums" }
+// { dg-options "-fshort-enums -Wno-return-type" }
 
 // On ARM EABI targets this testcase will cause a warning to be emitted
 // whilst EABI attributes are being merged at link time unless
@@ -17,7 +17,7 @@
 
   enum E { A = 0x80000000, B = 0 };
 
-  main()
+  int main()
   {
     if (sizeof (E) != 4)
 	{ printf ("FAIL\n"); return 1; }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except3.C b/gcc/testsuite/g++.old-deja/g++.law/except3.C
index ec8bb10..280ae72 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except3.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-fexceptions" }
+// { dg-options "-fexceptions -Wno-return-type" }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com>
@@ -34,7 +34,7 @@ void do_something(Vector& v)
     int i = v[v.size()+10];
 }
  
-main()
+int main()
 {
     Vector v(10);
  
@@ -47,4 +47,5 @@ main()
     {
         printf("Range error exception\n");
     }
+    return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/init6.C b/gcc/testsuite/g++.old-deja/g++.law/init6.C
index 861b925..55de705 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/init6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/init6.C
@@ -1,4 +1,6 @@
 // { dg-do assemble  }
+// { dg-options "-Wno-return-type" }
+
 // GROUPS passed initialization
 class Vector {
         double  *v;
diff --git a/gcc/testsuite/g++.old-deja/g++.law/profile1.C b/gcc/testsuite/g++.old-deja/g++.law/profile1.C
index ecd3b83..73b435e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/profile1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/profile1.C
@@ -4,9 +4,10 @@
 // { dg-options "-pg -static" { target hppa*-*-hpux* } }
 // GROUPS passed profiling
 #include <stdio.h>
-main()
+int main()
 {
   printf ("PASS\n");
+  return 0;
 }
 
 /* { dg-final { cleanup-profile-file } } */
diff --git a/gcc/testsuite/g++.old-deja/g++.law/shadow2.C b/gcc/testsuite/g++.old-deja/g++.law/shadow2.C
index 46f9dfc..2a5cff7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/shadow2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/shadow2.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wshadow" }
+// { dg-options "-Wshadow -Wno-return-type" }
 // GROUPS passed shadow-warnings
 // (Message bugs/shadow:2)
 // From: michael@utex.rni.sub.org (Michael Utech)
@@ -22,7 +22,8 @@ public:
   int f (int count) { return (count); }
 };
 
-main ()
+int main ()
 {
   Y<char> y;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/temps4.C b/gcc/testsuite/g++.old-deja/g++.law/temps4.C
index 3f8c9ed..2cfd778 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/temps4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/temps4.C
@@ -31,10 +31,11 @@ X foo() {
     return x;
 }
 
-main() {
+int main() {
     X x = foo();
     if (did_it)
 	abort ();
     else
 	printf ("PASS\n");
+    return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/weak.C b/gcc/testsuite/g++.old-deja/g++.law/weak.C
index 49132ad..9f5cde2 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/weak.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/weak.C
@@ -11,10 +11,11 @@
 
 std::istream x (0);
 
-main () {
+int main () {
   x.get();
   std::putc(0, 0);
   std::fgets(0, 0, 0); 
   x.get((char*) 0, 0);
+  return 0;
 }
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/bool2.C b/gcc/testsuite/g++.old-deja/g++.mike/bool2.C
index 3d8bc3c..ca9dbe3 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/bool2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/bool2.C
@@ -46,7 +46,7 @@ int i = true;
 bool b = true;
 bool c = (bool)(void (A::*)())0;
 bool d = 256;
-main() {
+int main() {
   if (!d) return 1;
   if (!a) return 1;
   if (!(bool)a) return 1;
@@ -55,4 +55,5 @@ main() {
   if (!a2) return 1;
   if (!a3) return 1;
   if (!a5) return 1;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh1.C b/gcc/testsuite/g++.old-deja/g++.mike/eh1.C
index 8105107..b0a5728 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh1.C
@@ -24,7 +24,7 @@ struct Exception
      }
  }
 
-main (int argc, const char *argv[])
+int main (int argc, const char *argv[])
 {
   if (argc != 2)
     {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh10.C b/gcc/testsuite/g++.old-deja/g++.mike/eh10.C
index a38e2eb..74b9359 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh10.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh10.C
@@ -1,5 +1,5 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
-// { dg-options "-fexceptions" }
+// { dg-options "-fexceptions -Wno-return-type" }
 
 void foo() {
   int i;
@@ -16,7 +16,7 @@ void bar() {
 
 void ee(int *) { }
 
-main() {
+int main() {
   try {
     foo();
     return 3;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index bac5686..e2c7435 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -3,4 +3,4 @@
 
 #include <string>
 
-main() { }
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh16.C b/gcc/testsuite/g++.old-deja/g++.mike/eh16.C
index 73beac0..e387023 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh16.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh16.C
@@ -1,5 +1,5 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
-// { dg-options "-fexceptions" }
+// { dg-options "-fexceptions -Wno-return-type" }
 
 int e = 1;
 
@@ -16,7 +16,7 @@ struct B {
   }
 };
 
-main() {
+int main() {
   try {
     B b;
   } catch (...) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh17.C b/gcc/testsuite/g++.old-deja/g++.mike/eh17.C
index 5b066c9..7f33a37 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh17.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh17.C
@@ -1,5 +1,5 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
-// { dg-options "-fexceptions" }
+// { dg-options "-fexceptions -Wno-return-type" }
 
 int e = 1;
 
@@ -15,7 +15,7 @@ struct B : public A {
   }
 };
 
-main() {
+int main() {
   try {
     B b;
   } catch (...) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 0a08790..eabc8f2 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,5 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
-// { dg-options "-fexceptions" }
+// { dg-options "-fexceptions -Wno-return-type" }
 
 #include <cstdlib>
 #include <iostream>
@@ -63,7 +63,7 @@ f(Vector& v) {
   }
 }
 
-main() {
+int main() {
   Vector v(10);
 
   f( v );
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh23.C b/gcc/testsuite/g++.old-deja/g++.mike/eh23.C
index da2ac0e..250f2cd 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh23.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh23.C
@@ -36,7 +36,7 @@ void my_terminate() {
   exit (0);		// double faults should call terminate
 }
 
-main() {
+int main() {
   std::set_terminate (my_terminate);
   try {
     bar();
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh24.C b/gcc/testsuite/g++.old-deja/g++.mike/eh24.C
index 829819b..215c435 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh24.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh24.C
@@ -15,7 +15,7 @@ struct A {
   }
 };
 
-main() {
+int main() {
   try {
     try {
       A  a;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh25.C b/gcc/testsuite/g++.old-deja/g++.mike/eh25.C
index fb492f7..f66fa08 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh25.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh25.C
@@ -16,7 +16,7 @@ struct A {
   }
 };
 
-main() {
+int main() {
   try {
     try {
       throw 1;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh26.C b/gcc/testsuite/g++.old-deja/g++.mike/eh26.C
index d0d65da..2560325 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh26.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh26.C
@@ -3,7 +3,7 @@
 
 class MyExceptionHandler { };
 
-main() {
+int main() {
   try {
     throw MyExceptionHandler();
   } catch(const MyExceptionHandler& eh) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh27.C b/gcc/testsuite/g++.old-deja/g++.mike/eh27.C
index 8be08da..0d8fee7 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh27.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh27.C
@@ -5,7 +5,7 @@
 
 class MyExceptionHandler { };
 
-main() {
+int main() {
   try {
     throw MyExceptionHandler();
   } catch(const MyExceptionHandler& eh) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh28.C b/gcc/testsuite/g++.old-deja/g++.mike/eh28.C
index 57cab11..96e31f7 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh28.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh28.C
@@ -8,7 +8,7 @@ int fail = 1;
 class X            { public: virtual void p() { } };
 class Y : public X { public: virtual void p() { fail = 0; } };
 
-main()
+int main()
 {
   try          { Y y; throw y; }
   catch (X& x) { x.p();  }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh29.C b/gcc/testsuite/g++.old-deja/g++.mike/eh29.C
index 892e959..2f3e7d0 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh29.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh29.C
@@ -17,7 +17,7 @@ public:
   }
 };
 
-main() {
+int main() {
   try {
     A a[5];
   } catch (...) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh30.C b/gcc/testsuite/g++.old-deja/g++.mike/eh30.C
index 8da682c..e6c5176 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh30.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh30.C
@@ -1,4 +1,4 @@
 // { dg-do assemble { target native } }
 // { dg-options "-fexceptions -fPIC -S" }
 
-main() { throw 1; }
+int main() { throw 1; return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh31.C b/gcc/testsuite/g++.old-deja/g++.mike/eh31.C
index 150d66b..40ef080 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh31.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh31.C
@@ -11,7 +11,7 @@ public:
 };
 
 
-main() {
+int main() {
   try {
     throw Foo();
   }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh35.C b/gcc/testsuite/g++.old-deja/g++.mike/eh35.C
index adf852a..40c41ed 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh35.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh35.C
@@ -1,7 +1,7 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
 
-main() {
+int main() {
   try {  
     throw 'a';
   } catch (char a) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh36.C b/gcc/testsuite/g++.old-deja/g++.mike/eh36.C
index d6b4788..ba497b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh36.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh36.C
@@ -18,7 +18,7 @@ public:
   }
 } d(42);
 
-main() {
+int main() {
   try {
     throw &d;
   } catch (B* b) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh37.C b/gcc/testsuite/g++.old-deja/g++.mike/eh37.C
index a98b5df..ad65692 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh37.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh37.C
@@ -10,7 +10,7 @@ public:
   }
 } b(42);
 
-main() {
+int main() {
   try {
     throw &b;
   } catch (B* b) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh38.C b/gcc/testsuite/g++.old-deja/g++.mike/eh38.C
index 5a56879..e05b9c1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh38.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh38.C
@@ -10,7 +10,7 @@ public:
   }
 } b(42);
 
-main() {
+int main() {
   try {
     throw &b;
   } catch (const B* bptr) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh39.C b/gcc/testsuite/g++.old-deja/g++.mike/eh39.C
index e4bfff8..5fe2192 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh39.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh39.C
@@ -18,7 +18,7 @@ D::D() try : B() {
   throw;
 }
 
-main() {
+int main() {
   try {
     D d;
     fail = 1;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh40.C b/gcc/testsuite/g++.old-deja/g++.mike/eh40.C
index e42b419..62d92b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh40.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh40.C
@@ -19,7 +19,7 @@ public:
   }
 };
 
-main() {
+int main() {
   try {
     D d;
     fail = 1;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh47.C b/gcc/testsuite/g++.old-deja/g++.mike/eh47.C
index 10eb8a8..9d70b10 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh47.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh47.C
@@ -8,7 +8,7 @@ void myterm() {
   exit (0);
 }
 
-main() {
+int main() {
   try {
     throw "";
   } catch (...) {
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh50.C b/gcc/testsuite/g++.old-deja/g++.mike/eh50.C
index de21dc2..530fc49 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh50.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh50.C
@@ -9,7 +9,7 @@ void my_unexpected() {
 
 template <class T> void foo(T) throw (int) { throw "Hi"; }
 
-main() {
+int main() {
   std::set_unexpected (my_unexpected);
   try {
     foo(1);
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh51.C b/gcc/testsuite/g++.old-deja/g++.mike/eh51.C
index 073980a..b3ef514 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh51.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh51.C
@@ -9,7 +9,7 @@ void my_unexpected() {
 
 template <class T> void foo(T) throw (T) { throw "Hi"; }
 
-main() {
+int main() {
   std::set_unexpected (my_unexpected);
   try {
     foo(1);
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh7.C b/gcc/testsuite/g++.old-deja/g++.mike/eh7.C
index f431fb9..6b1bfbc 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh7.C
@@ -1,7 +1,8 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
 
-main() {
+int main() {
   if (0)
     throw 1 | 2;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh8.C b/gcc/testsuite/g++.old-deja/g++.mike/eh8.C
index 8e01da0..26f3419 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh8.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh8.C
@@ -5,7 +5,7 @@ extern "C" int printf(const char *, ...);
 
 int i;
 
-main() {
+int main() {
   try {
     try {
       throw i;
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh9.C b/gcc/testsuite/g++.old-deja/g++.mike/eh9.C
index 633642f..be43d7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh9.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh9.C
@@ -1,4 +1,4 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
 
-main() throw () { }
+int main() throw () { return 0; }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/mangle1.C b/gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
index de5e965..cbc5274 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
@@ -22,6 +22,7 @@ void f3() {
 }
 #endif
 
-main() {
+int main() {
   f.bar(foo::red);
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p5958.C b/gcc/testsuite/g++.old-deja/g++.mike/p5958.C
index 666a449..e5288df 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p5958.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p5958.C
@@ -1,5 +1,5 @@
 // { dg-do run  }
-// { dg-options "-ansi" }
+// { dg-options "-ansi -Wno-return-type" }
 // prms-id: 5958
 
 class A { };
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p6004.C b/gcc/testsuite/g++.old-deja/g++.mike/p6004.C
index 2b262bd..1b2c55d 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p6004.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p6004.C
@@ -1,5 +1,5 @@
 // { dg-do run  }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 // prms-id: 6004
 
 class A {
@@ -16,6 +16,6 @@ int bar3() { return 43; }
 
 int A::foo() { return 42; }
 
-main() {
+int main() {
   return A::foo() - 42;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p700.C b/gcc/testsuite/g++.old-deja/g++.mike/p700.C
index 1fef5c8..1b8b172 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p700.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p700.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 // { dg-error "limited range of data type" "16-bit target" { target xstormy16-*-* } 0 }
 // prms-id: 700
 
@@ -2111,7 +2111,7 @@ char mystrcmp(String30 s, String30 t)
 
 
 
-main()
+int main()
 {
 	Proc0();
 	exit(0);
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p7912.C b/gcc/testsuite/g++.old-deja/g++.mike/p7912.C
index e5584ec..079b4c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p7912.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p7912.C
@@ -12,7 +12,7 @@ public:
 };
 
 
-main()
+int main()
 {
   try {
     throw Foo();
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p811.C b/gcc/testsuite/g++.old-deja/g++.mike/p811.C
index 260c645..e54f1ac 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p811.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p811.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "" }
+// { dg-options "-Wno-return-type" }
 // This test case caused the compiler to abort at one point in time.
 // prms-id: 811
 
@@ -534,7 +534,7 @@ X::stringify2()   // { dg-error "does not match" }
     return "stringify2";
 }
 
-main()
+int main()
 {
     X x;
     Y& y = x;
@@ -546,4 +546,5 @@ main()
     cout << "y\n";
     cout << y.stringify() << '\n';
     cout << y.stringify2() << '\n';
+    return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/virt4.C b/gcc/testsuite/g++.old-deja/g++.mike/virt4.C
index 2d8b042..eaaf82a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/virt4.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/virt4.C
@@ -22,7 +22,8 @@ public:
   void foo() { D1::foo(); D2::foo(); }
 };
 
-main() {
+int main() {
   D1_2 h;
   h.foo();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C b/gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
index b32deed..8e5eccc 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 // Copyright (C) 1999, 2000, 2002 Free Software Foundation
 
 // by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C b/gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
index e0dfb7e..5f86b1c 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-O1 -Wno-deprecated" }
+// { dg-options "-O1 -Wno-deprecated -Wno-return-type" }
 // Copyright (C) 1999, 2000, 2002 Free Software Foundation
 
 // by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/decl1.C b/gcc/testsuite/g++.old-deja/g++.other/decl1.C
index 07bcc91..6262bf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/decl1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/decl1.C
@@ -6,4 +6,5 @@ int foo(int);
 int bar() {
   int baz(int(foo(0)));
   int foo = baz;
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.other/expr1.C b/gcc/testsuite/g++.old-deja/g++.other/expr1.C
index 831876d..415f0f1 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/expr1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/expr1.C
@@ -3,9 +3,10 @@
 // Simplified from bug report by Trevor Taylor <ttaylor@powerup.com.au>
 
 struct T {
-  int operator()(int) { } // { dg-message "operator|candidate expects" }
+  int operator()(int) { return 0; } // { dg-message "operator|candidate expects" }
 };
 
 int main() {
   T()(); // { dg-error "match" } no such operator
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index a46dc38..e333487 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,5 @@
 // { dg-do run  }
-// { dg-options "-O1" }
+// { dg-options "-O1 -Wno-return-type" }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/loop1.C b/gcc/testsuite/g++.old-deja/g++.other/loop1.C
index 168734c..119853b 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/loop1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/loop1.C
@@ -24,7 +24,7 @@ bool test ()
   return true;
 }
 
-main ()
+int main ()
 {
   f (test);
   return (c != d);
diff --git a/gcc/testsuite/g++.old-deja/g++.other/syntax1.C b/gcc/testsuite/g++.old-deja/g++.other/syntax1.C
index f1d3a86..a73e164 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/syntax1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/syntax1.C
@@ -11,7 +11,8 @@ void AAA::fff() {}
 
 AAA aaa;
 
-main ()
+int main ()
 {
   aaa.fff();
+  return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/call2.C b/gcc/testsuite/g++.old-deja/g++.pt/call2.C
index 94e4928..bdc477d 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/call2.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/call2.C
@@ -1,4 +1,6 @@
 // { dg-do assemble  }
+// { dg-options "-Wno-return-type" }
+
 
 struct IsCompressed { };
 struct Field {
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/repo3.C b/gcc/testsuite/g++.old-deja/g++.pt/repo3.C
index 53baf29..74fb64b 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/repo3.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/repo3.C
@@ -29,9 +29,10 @@ struct D : public B<T>, public C<T>
 {
 };
 
-main ()
+int main ()
 {
   D<int> x;
+  return 0;
 }
 
 // { dg-final { cleanup-repo-files } }
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
index ca04f90..70a02a7 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-options "-Wno-return-type" }
 
 template<class T> class D
 {
@@ -27,4 +28,5 @@ int main()
 {
 	C<D,int> c;
 	c.f();
+	return 0;
 }
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 204a143..2745e73 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,5 @@
 // { dg-do assemble  }
-// { dg-options "-Wno-deprecated" }
+// { dg-options "-Wno-deprecated -Wno-return-type" }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb83.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
index ecdb6be..fb23989 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
@@ -8,11 +8,12 @@ test_swap(int& x, int& y) throw()
   y = tmp;
 }
 
-main()
+int main()
 {
   int i = 5;
   int j = 7;
   test_swap(i, j);
+  return 0;
 }
 
 /* { dg-final { cleanup-coverage-files } } */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20090721-1.c b/gcc/testsuite/gcc.c-torture/compile/20090721-1.c
index 2122b34..928cafa 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20090721-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20090721-1.c
@@ -1,3 +1,3 @@
 /* { dg-options "-fno-tree-sra" } */
 union u {double d;long long ll;};
-f(double x, int n){union u v;v.d=x;if(n>=0){v.ll<<=63;}else{v.ll-=1<<-n;v.ll>>=-n;}return v.ll;}
+int f(double x, int n){union u v;v.d=x;if(n>=0){v.ll<<=63;}else{v.ll-=1<<-n;v.ll>>=-n;}return v.ll;}
diff --git a/gcc/testsuite/gcc.dg/20001012-1.c b/gcc/testsuite/gcc.dg/20001012-1.c
index eda69c0..347a69a 100644
--- a/gcc/testsuite/gcc.dg/20001012-1.c
+++ b/gcc/testsuite/gcc.dg/20001012-1.c
@@ -10,7 +10,7 @@ foo (void)
   return (__extension__ ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) { __l: 0x3f800000UL }).__d);
 }
 
-main ()
+int main ()
 {
   if (foo() != 1.0)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/20001012-2.c b/gcc/testsuite/gcc.dg/20001012-2.c
index 32dc27c..f58c120 100644
--- a/gcc/testsuite/gcc.dg/20001012-2.c
+++ b/gcc/testsuite/gcc.dg/20001012-2.c
@@ -28,7 +28,7 @@ double baz (const char *x)
   return (__extension__ ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) { __l: 0x3f800000UL }).__d);
 }
 
-main ()
+int main ()
 {
   if (baz("") != 1.0)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/20001108-1.c b/gcc/testsuite/gcc.dg/20001108-1.c
index 682257f..c5cae0a 100644
--- a/gcc/testsuite/gcc.dg/20001108-1.c
+++ b/gcc/testsuite/gcc.dg/20001108-1.c
@@ -25,7 +25,7 @@ long bar (long i, double x)
   return foo (x);
 }
 
-main()
+int main()
 {
   if (bar (0, 2.0) != 26)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/20010516-1.c b/gcc/testsuite/gcc.dg/20010516-1.c
index 6ddabd0..7d7cac4 100644
--- a/gcc/testsuite/gcc.dg/20010516-1.c
+++ b/gcc/testsuite/gcc.dg/20010516-1.c
@@ -1,6 +1,6 @@
 /* { dg-options "-fshow-column" } */
 
-foo()
+void foo()
 {
       char d;
       __asm volatile ( "" :: "m"(&d)); /* { dg-error "34:" "non-lvalue" } */
diff --git a/gcc/testsuite/gcc.dg/20011008-2.c b/gcc/testsuite/gcc.dg/20011008-2.c
index 01ff172..1f98cfb 100644
--- a/gcc/testsuite/gcc.dg/20011008-2.c
+++ b/gcc/testsuite/gcc.dg/20011008-2.c
@@ -7,7 +7,7 @@ extern void exit (int);
 struct { union {int x; int y;}; int q; } b;
 union { struct {int x;}; int q; } e;
 
-main()
+int main()
 {
   b.y = 10;
   b.x = 15;
diff --git a/gcc/testsuite/gcc.dg/20030612-1.c b/gcc/testsuite/gcc.dg/20030612-1.c
index f087512..b5395ff 100644
--- a/gcc/testsuite/gcc.dg/20030612-1.c
+++ b/gcc/testsuite/gcc.dg/20030612-1.c
@@ -14,7 +14,7 @@ void foo()
   });
 }
 
-main()
+int main()
 {
   B = 5;
   foo();
diff --git a/gcc/testsuite/gcc.dg/20040219-1.c b/gcc/testsuite/gcc.dg/20040219-1.c
index 1a277d6..175565d 100644
--- a/gcc/testsuite/gcc.dg/20040219-1.c
+++ b/gcc/testsuite/gcc.dg/20040219-1.c
@@ -14,7 +14,7 @@ double foo(double a, double b, double c)
 	return (a+b+c);
 }
 
-main ()
+int main ()
 {
 	double  f1, f2, f3, f4, f5, f6, f7, f8, f9,f10;
 	double f11,f12,f13,f14,f15,f16,f17,f18,f19,f20;
diff --git a/gcc/testsuite/gcc.dg/20040622-2.c b/gcc/testsuite/gcc.dg/20040622-2.c
index 0be320f..4980143 100644
--- a/gcc/testsuite/gcc.dg/20040622-2.c
+++ b/gcc/testsuite/gcc.dg/20040622-2.c
@@ -3,9 +3,10 @@
 /* This validates codegen for [r1+32760] on Darwin. */
 void f(char x[32688], double *y, double *z) __attribute__((noinline));
 void f(char x[32688], double *y, double *z) {}
-main() {
+int main() {
   char x[32688];
   double y, z;
   y = z = 3.0;
   f(x, &y, &z);
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/20041213-1.c b/gcc/testsuite/gcc.dg/20041213-1.c
index aeff744..b0a9270 100644
--- a/gcc/testsuite/gcc.dg/20041213-1.c
+++ b/gcc/testsuite/gcc.dg/20041213-1.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-fshow-column" } */
+/* { dg-options "-fshow-column -Wno-return-type" } */
 /* test redeclarations with void and implicit int */
 extern foo1(); /* { dg-message "8:note: previous declaration" } */
 extern void foo1(); /* { dg-error "13:conflicting types" } */
diff --git a/gcc/testsuite/gcc.dg/20050603-2.c b/gcc/testsuite/gcc.dg/20050603-2.c
index 363e3cd..8bf2f07 100644
--- a/gcc/testsuite/gcc.dg/20050603-2.c
+++ b/gcc/testsuite/gcc.dg/20050603-2.c
@@ -12,7 +12,7 @@ void set (struct s*, int) __attribute__((noinline));
 void set (struct s* p, int flags) {
   p->g = flags << 1;
 }
-main() {
+int main() {
   struct s foo = {0 , 0, 3, 0};
   set (&foo, -1);
   if (foo.g != 2)
diff --git a/gcc/testsuite/gcc.dg/20051201-1.c b/gcc/testsuite/gcc.dg/20051201-1.c
index c029205..8b95620 100644
--- a/gcc/testsuite/gcc.dg/20051201-1.c
+++ b/gcc/testsuite/gcc.dg/20051201-1.c
@@ -16,12 +16,14 @@ bar ()
  out:
   baz ();
   goto out;
+ return 0;
 }
 
 int
 foo ()
 {
   long res;
-  
+
   res = bar ();
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/990506-0.c b/gcc/testsuite/gcc.dg/990506-0.c
index 3cd3be3..016b9a9 100644
--- a/gcc/testsuite/gcc.dg/990506-0.c
+++ b/gcc/testsuite/gcc.dg/990506-0.c
@@ -1,7 +1,7 @@
 /* Verify that a diagnostic is issued without crashing due to
    --enable-checking catching a bug in the C front end.  */
 /* { dg-do compile } */
-x()
+void x()
 {
   foo (i);
   /* { dg-error "undeclared" "undeclared-variable message" { target *-*-* } { 6 } } */
diff --git a/gcc/testsuite/gcc.dg/Wmissing-return1.c b/gcc/testsuite/gcc.dg/Wmissing-return1.c
new file mode 100644
index 0000000..74ab723
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmissing-return1.c
@@ -0,0 +1,11 @@
+/* Test for the various combinations of -Wmissing-return & -Wreturn-type */
+/* See Wmissing-return*.c */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+
+int foo() {
+	return; /* { dg-warning "'return' with no value, in function returning non-void" } */
+}
+int main() {}
+
diff --git a/gcc/testsuite/gcc.dg/Wmissing-return2.c b/gcc/testsuite/gcc.dg/Wmissing-return2.c
new file mode 100644
index 0000000..f35b4ed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmissing-return2.c
@@ -0,0 +1,11 @@
+/* Test for the various combinations of -Wmissing-return & -Wreturn-type */
+/* See Wmissing-return*.c */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type" } */
+
+
+int foo() {
+	return; /* { dg-warning "'return' with no value, in function returning non-void" } */
+}
+int main() {
+} /* { dg-warning "control reaches end of non-void function" } */
diff --git a/gcc/testsuite/gcc.dg/Wmissing-return3.c b/gcc/testsuite/gcc.dg/Wmissing-return3.c
new file mode 100644
index 0000000..8e8c995
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmissing-return3.c
@@ -0,0 +1,11 @@
+/* Test for the various combinations of -Wmissing-return & -Wreturn-type */
+/* See Wmissing-return*.c */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type -Wmissing-return" } */
+
+
+int foo() {
+	return; /* { dg-warning "'return' with no value, in function returning non-void" } */
+}
+int main() {} /* { dg-warning "control reaches end of non-void function" "warning for falling off end of non-void function" } */
+
diff --git a/gcc/testsuite/gcc.dg/Wmissing-return4.c b/gcc/testsuite/gcc.dg/Wmissing-return4.c
new file mode 100644
index 0000000..9abe710
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmissing-return4.c
@@ -0,0 +1,11 @@
+/* Test for the various combinations of -Wmissing-return & -Wreturn-type */
+/* See Wmissing-return*.c */
+/* { dg-do compile } */
+/* { dg-options "-Wno-return-type -Wmissing-return" } */
+
+
+int foo() {
+	return 1;
+}
+int main() {} /* { dg-warning "control reaches end of non-void function" "warning for falling off end of non-void function" } */
+
diff --git a/gcc/testsuite/gcc.dg/Wmissing-return5.c b/gcc/testsuite/gcc.dg/Wmissing-return5.c
new file mode 100644
index 0000000..8d54842
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmissing-return5.c
@@ -0,0 +1,11 @@
+/* Test for the various combinations of -Wmissing-return & -Wreturn-type */
+/* See Wmissing-return*.c */
+/* { dg-do compile } */
+/* { dg-options "-Wno-return-type -Wno-missing-return" } */
+
+
+int foo() {
+	return;
+}
+int main() {}
+
diff --git a/gcc/testsuite/gcc.dg/Wreturn-type2.c b/gcc/testsuite/gcc.dg/Wreturn-type2.c
index 781414a..65c3c4d 100644
--- a/gcc/testsuite/gcc.dg/Wreturn-type2.c
+++ b/gcc/testsuite/gcc.dg/Wreturn-type2.c
@@ -1,9 +1,10 @@
 /* Test for cases that should not get the unconditional warning about
    missing return.  */
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 extern void abort (void);
 
-f() {}				/* { dg-bogus "" "no return warning" } */
+int f() {}			/* { dg-bogus "" "no return warning" } */
 int g() { abort (); }		/* { dg-bogus "" "no return warning" } */
 int main() {}			/* { dg-bogus "" "no return warning" } */
diff --git a/gcc/testsuite/gcc.dg/attr-alias-3.c b/gcc/testsuite/gcc.dg/attr-alias-3.c
index 6ff1b47..7287527 100644
--- a/gcc/testsuite/gcc.dg/attr-alias-3.c
+++ b/gcc/testsuite/gcc.dg/attr-alias-3.c
@@ -51,7 +51,7 @@ static void lf4(void) {}
 extern ftype Af4a __attribute__((alias ("lf4")));
 static ftype *pf4a = &Af4a;
 
-main() {
+int main() {
 #ifdef __mips
   /* Use real asm for MIPS, to stop the assembler warning about
      orphaned high-part relocations.  */
@@ -59,4 +59,5 @@ main() {
 #else
   asm volatile ("" : : "m" (pv4a), "m" (pf4a));
 #endif
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/c90-impl-int-1.c b/gcc/testsuite/gcc.dg/c90-impl-int-1.c
index cd995c2..c487957 100644
--- a/gcc/testsuite/gcc.dg/c90-impl-int-1.c
+++ b/gcc/testsuite/gcc.dg/c90-impl-int-1.c
@@ -5,4 +5,4 @@
 
 extern foo;
 
-bar (void) { }
+int bar (void) { }
diff --git a/gcc/testsuite/gcc.dg/c90-return-1.c b/gcc/testsuite/gcc.dg/c90-return-1.c
index 59e9a92..b5cc069 100644
--- a/gcc/testsuite/gcc.dg/c90-return-1.c
+++ b/gcc/testsuite/gcc.dg/c90-return-1.c
@@ -6,12 +6,12 @@
 int
 foo (void)
 {
-  return;
+  return; /* { dg-warning "'return' with no value, in function returning non-void" } */
 }
 
 void
 bar (void)
 {
-  return 1; /* { dg-bogus "warning" "warning in place of error" } */
-  /* { dg-error "with a value" "return constraint violation" { target *-*-* } 15 } */
+  return 1; /* { dg-error "with a value" "in function returning" { target *-*-* } 15 } */
 }
+
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2-2.c b/gcc/testsuite/gcc.dg/debug/dwarf2-2.c
index 0c3cee1..a2a3243 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2-2.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2-2.c
@@ -8,10 +8,11 @@ inline double fx (double x)
   return 3 * x;
 }
 
-main ()
+int main ()
 {
   double a = 0, fx (double), foo ();
   fx (a);
   if (a != 3)
     foo ();
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
index 746ab03..b36b2bc 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die2.c
@@ -4,4 +4,5 @@
 /* { dg-final { scan-assembler-not "CIE Version" } } */
 static inline int t()
 {
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
index 88d78e2..2300e23 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-die7.c
@@ -7,8 +7,10 @@ void f(void);
 static int t()
 {
 	f();
+	return 0;
 }
 int q()
 {
   t();
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c
index 395c544..8726962 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c
@@ -17,7 +17,7 @@ t(int constant_propagated_par)
   q(local_var);
   q(local_var);
 }
-main()
+void main()
 {
   t(5);
   t(5);
diff --git a/gcc/testsuite/gcc.dg/debug/pr42767.c b/gcc/testsuite/gcc.dg/debug/pr42767.c
index 1f0e25f..50f66b8 100644
--- a/gcc/testsuite/gcc.dg/debug/pr42767.c
+++ b/gcc/testsuite/gcc.dg/debug/pr42767.c
@@ -6,7 +6,7 @@ struct lineno_cache_entry
 {
   unsigned long size;
 };
-_bfd_link_section_stabs (struct lineno_cache_entry * stabsec)
+void _bfd_link_section_stabs (struct lineno_cache_entry * stabsec)
 {
   unsigned long count;
   unsigned char *sym;
diff --git a/gcc/testsuite/gcc.dg/fastmath-1.c b/gcc/testsuite/gcc.dg/fastmath-1.c
index 4efe430..a3019b5 100644
--- a/gcc/testsuite/gcc.dg/fastmath-1.c
+++ b/gcc/testsuite/gcc.dg/fastmath-1.c
@@ -9,7 +9,7 @@ if ( ( dists [ 0 ] > 0 ) == ( dists [ 1 ] > 0 ) )
   return k;
 return 0;
 } 
-main() {
+int main() {
   float dists[16] = { 0., 1., 1., 0., 0., -1., -1., 0.,
 		     1., 1., 1., -1., -1., 1., -1., -1. };
   if ( foo(&dists[0], 1) +
diff --git a/gcc/testsuite/gcc.dg/fork-instrumentation.c b/gcc/testsuite/gcc.dg/fork-instrumentation.c
index bd9bf41..bb6c492 100644
--- a/gcc/testsuite/gcc.dg/fork-instrumentation.c
+++ b/gcc/testsuite/gcc.dg/fork-instrumentation.c
@@ -1,8 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O0 -fprofile-generate" } */
 int fork(void);
-t()
+int t()
 {
   fork ();
+  return 0;
 }
 /* { dg-final { scan-assembler "gcov_fork" } } */
diff --git a/gcc/testsuite/gcc.dg/funcorder.c b/gcc/testsuite/gcc.dg/funcorder.c
index 0dec72c..db01d6d 100644
--- a/gcc/testsuite/gcc.dg/funcorder.c
+++ b/gcc/testsuite/gcc.dg/funcorder.c
@@ -8,11 +8,11 @@ static int mem;
 static int e(void) __attribute__ ((noinline));
 static int q(void) __attribute__ ((noinline));
 static int t(void) __attribute__ ((noinline));
-main()
+int main()
 {
 	return t();
 }
-static t()
+static int t()
 {
 	int r,e;
 	if (mem)
diff --git a/gcc/testsuite/gcc.dg/fwrapv-1.c b/gcc/testsuite/gcc.dg/fwrapv-1.c
index f7ddda4..31795aa 100644
--- a/gcc/testsuite/gcc.dg/fwrapv-1.c
+++ b/gcc/testsuite/gcc.dg/fwrapv-1.c
@@ -17,7 +17,7 @@ int test(int x)
   return (2*x)/2;
 }
 
-main()
+int main()
 {
   int x = INT_MAX;
 
diff --git a/gcc/testsuite/gcc.dg/fwrapv-2.c b/gcc/testsuite/gcc.dg/fwrapv-2.c
index cb4270e..e738afd 100644
--- a/gcc/testsuite/gcc.dg/fwrapv-2.c
+++ b/gcc/testsuite/gcc.dg/fwrapv-2.c
@@ -17,7 +17,7 @@ int test(int x)
   return (2*x)/2;
 }
 
-main()
+int main()
 {
   int x = INT_MAX;
 
diff --git a/gcc/testsuite/gcc.dg/gomp/empty.c b/gcc/testsuite/gcc.dg/gomp/empty.c
index 6a21c04..e8c9a72 100644
--- a/gcc/testsuite/gcc.dg/gomp/empty.c
+++ b/gcc/testsuite/gcc.dg/gomp/empty.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O -fopenmp -fdump-tree-ompexp" } */
 
-main()
+void main()
 {
 #pragma omp parallel
     {;}
diff --git a/gcc/testsuite/gcc.dg/gomp/sharing-3.c b/gcc/testsuite/gcc.dg/gomp/sharing-3.c
index 36f72e3..21e19e1 100644
--- a/gcc/testsuite/gcc.dg/gomp/sharing-3.c
+++ b/gcc/testsuite/gcc.dg/gomp/sharing-3.c
@@ -3,7 +3,7 @@
 #define N       50
 #define CHUNKSIZE   5
 
-main ()
+int main ()
 {
   int i, chunk;
   float c[N];
diff --git a/gcc/testsuite/gcc.dg/graphite/id-1.c b/gcc/testsuite/gcc.dg/graphite/id-1.c
index 70b477a..c230e9e 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-1.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-1.c
@@ -1,6 +1,6 @@
 typedef int *lambda_vector;
 typedef lambda_vector *lambda_matrix;
-lambda_vector_add_mc (lambda_vector vec1, int const1,
+void lambda_vector_add_mc (lambda_vector vec1, int const1,
 		      lambda_vector vec2, int const2,
 		      lambda_vector vec3, int size)
 {
@@ -8,7 +8,7 @@ lambda_vector_add_mc (lambda_vector vec1, int const1,
   for (i = 0; i < size; i++)
     vec3[i] = const1 * vec1[i] + const2 * vec2[i];
 }
-lambda_matrix_add_mc (lambda_matrix mat1, int const1,
+void lambda_matrix_add_mc (lambda_matrix mat1, int const1,
 		      lambda_matrix mat2, int const2,
 		      lambda_matrix mat3, int m, int n)
 {
diff --git a/gcc/testsuite/gcc.dg/graphite/id-2.c b/gcc/testsuite/gcc.dg/graphite/id-2.c
index c11f6a2..7f70351 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-2.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-2.c
@@ -1,5 +1,5 @@
 typedef _Complex float GFC_COMPLEX_4;
-matmul_c4 ()
+void matmul_c4 ()
 {
   int x, n, count;
   GFC_COMPLEX_4 * bbase_y;
diff --git a/gcc/testsuite/gcc.dg/graphite/id-4.c b/gcc/testsuite/gcc.dg/graphite/id-4.c
index 38f6738..298480f 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-4.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-4.c
@@ -1,5 +1,5 @@
 extern a[];
-g ()
+void g ()
 {
   int i, b;
   for (i = 0; i < 10; i++)
diff --git a/gcc/testsuite/gcc.dg/graphite/id-8.c b/gcc/testsuite/gcc.dg/graphite/id-8.c
index 1a278c1..b971e89 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-8.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-8.c
@@ -1,5 +1,5 @@
 int blah;
-foo()
+int foo()
 {
   int i;
 
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr43464.c b/gcc/testsuite/gcc.dg/graphite/id-pr43464.c
index a8e67dc..567817b 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-pr43464.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr43464.c
@@ -1,3 +1,4 @@
+/* { dg-options "-Wno-return-type" } */
 typedef struct sv SV;
 typedef struct regnode
 {
@@ -49,15 +50,15 @@ S_find_byclass (regexp * prog, regnode * c, char *s, char *strend,
 got_it:
   return s;
 }
-Perl_re_intuit_start (regexp * prog)
+void Perl_re_intuit_start (regexp * prog)
 {
   S_find_byclass (prog, 0, 0, 0, 0, 1);
 }
-Perl_regexec_flags (register regexp * prog,
+void Perl_regexec_flags (register regexp * prog,
 		    register char *strend)
 {
   S_find_byclass (prog, 0, 0, strend, 0, 0);
 }
-S_regtry (regexp * prog, char *startpos)
+int S_regtry (regexp * prog, char *startpos)
 {
 }
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr45230-1.c b/gcc/testsuite/gcc.dg/graphite/id-pr45230-1.c
index ba14fe5..1b8e2aa 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-pr45230-1.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr45230-1.c
@@ -41,7 +41,7 @@ test (const unsigned char *s1, const unsigned char *s2, size_t len, int expected
     __builtin_abort ();
 }
 
-main ()
+void main ()
 {
   size_t off1, off2, len, i;
   unsigned char *buf1, *buf2;
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr45230.c b/gcc/testsuite/gcc.dg/graphite/id-pr45230.c
index 80f6769..1c993d3 100644
--- a/gcc/testsuite/gcc.dg/graphite/id-pr45230.c
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr45230.c
@@ -1,5 +1,5 @@
 unsigned char buf[10];
-main ()
+void main ()
 {
   unsigned off1, len, i;
   unsigned char *p1;
diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-4.c b/gcc/testsuite/gcc.dg/graphite/interchange-4.c
index f86391c..f6eb76f 100644
--- a/gcc/testsuite/gcc.dg/graphite/interchange-4.c
+++ b/gcc/testsuite/gcc.dg/graphite/interchange-4.c
@@ -22,6 +22,7 @@ foo (int N, int *res)
     u[1336 * i] *= 2;
 
   *res = sum + N + u[1336 * 2] + u[1336];
+  return 0;
 }
 
 extern void abort ();
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38073.c b/gcc/testsuite/gcc.dg/graphite/pr38073.c
index 9c48d8d..b22391d 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr38073.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr38073.c
@@ -1,6 +1,6 @@
 /* { dg-options "-O3 -fgraphite-identity" } */
 
-test_seg(int a, int b)
+int test_seg(int a, int b)
 {
   int i,r=1;
   for(i=0; i<b ;i++)
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38125.c b/gcc/testsuite/gcc.dg/graphite/pr38125.c
index 780e6f6..71fa033 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr38125.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr38125.c
@@ -22,7 +22,7 @@ struct magic {
     TEST_SV* mg_obj;
 };
 extern TEST_SV PL_sv_undef;
-Perl_av_fill( register TEST_AV *av, int fill)
+void Perl_av_fill( register TEST_AV *av, int fill)
 {
     TEST_MAGIC *mg;
     int key = ((TEST_XPVAV*) (av)->sv_any)->xav_fill;
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38409.c b/gcc/testsuite/gcc.dg/graphite/pr38409.c
index 5cdb472..f92ad39 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr38409.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr38409.c
@@ -6,7 +6,7 @@ struct test
   int type ;
   int symflag ;
 };
-Chv_copyEntriesToVector ( input *chv,double *dvec) 
+int Chv_copyEntriesToVector ( input *chv,double *dvec) 
 {
   double *entries ;
   int mm, nent;
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38510.c b/gcc/testsuite/gcc.dg/graphite/pr38510.c
index 07ddb6e..49de3b3 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr38510.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr38510.c
@@ -29,6 +29,7 @@ L130:
 for (j = k; j <= i__1; ++j) {
 goto L20;
 }
+return 0;
 }
 
 int pymol_rg_(integer *nm, integer *n, doublereal *a, doublereal *wr,
@@ -37,4 +38,5 @@ int pymol_rg_(integer *nm, integer *n, doublereal *a, doublereal *wr,
     integer a_dim1, a_offset, z_dim1, z_offset;
     integer is1, is2;
     balanc_(nm, n, &a[a_offset], &is1, &is2, &fv1[1]);
+    return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/graphite/pr38786.c b/gcc/testsuite/gcc.dg/graphite/pr38786.c
index 47df447..b8ade87 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr38786.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr38786.c
@@ -10,7 +10,7 @@ typedef struct
 } RD_DATA;
 extern RD_DATA *rdopt;
 extern ImageParameters *img;
-dummy_slice_too_big (int bits_slice)
+void dummy_slice_too_big (int bits_slice)
 {
   int i, j, k, l;
   for (j = 0; j < 4; j++)
diff --git a/gcc/testsuite/gcc.dg/graphite/pr39260.c b/gcc/testsuite/gcc.dg/graphite/pr39260.c
index 066b5bd..33b89fb 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr39260.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr39260.c
@@ -1,6 +1,6 @@
 /* { dg-options "-O2 -fgraphite-identity -ffast-math" } */
 
-VBR_encode_frame (int mode_gr, int channels_out, int max_bits[2][2])
+void VBR_encode_frame (int mode_gr, int channels_out, int max_bits[2][2])
 {
  int max_nbits_ch[2][2];
  int gr, ch;
diff --git a/gcc/testsuite/gcc.dg/graphite/pr43083.c b/gcc/testsuite/gcc.dg/graphite/pr43083.c
index afb97af..eb391e4 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr43083.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr43083.c
@@ -6,9 +6,11 @@ static inline int bar(void)
 {
   int i;
   for (i = 0; i < 10; i++) baz();
+  return 0;
 }
 
 int foo(void)
 {
   if (bar() != 0) return 0;
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/graphite/pr46185.c b/gcc/testsuite/gcc.dg/graphite/pr46185.c
index 36d46a4..87ce42e 100644
--- a/gcc/testsuite/gcc.dg/graphite/pr46185.c
+++ b/gcc/testsuite/gcc.dg/graphite/pr46185.c
@@ -21,6 +21,7 @@ foo (int N, int *res)
     u[1336 * i] *= 2;
 
   *res = sum + N + u[1336 * 2] + u[1336];
+  return 0;
 }
 
 extern void abort ();
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-19.c b/gcc/testsuite/gcc.dg/graphite/scop-19.c
index cfbf401..32146fd 100644
--- a/gcc/testsuite/gcc.dg/graphite/scop-19.c
+++ b/gcc/testsuite/gcc.dg/graphite/scop-19.c
@@ -15,14 +15,15 @@ struct d_growable_string
 {
   size_t alc;
 };
-d_growable_string_resize (struct d_growable_string *dgs, size_t need)
+int d_growable_string_resize (struct d_growable_string *dgs, size_t need)
 {
   size_t newalc;
   newalc = dgs->alc > 0 ? dgs->alc : 2;
   while (newalc < need)
     newalc <<= 1;
+  return 0;
 }
-d_growable_string_append_buffer (struct d_growable_string *dgs,
+void d_growable_string_append_buffer (struct d_growable_string *dgs,
                                  const char *s, size_t l)
 {
   size_t need;
diff --git a/gcc/testsuite/gcc.dg/inline-33.c b/gcc/testsuite/gcc.dg/inline-33.c
index d82ff71..5fc2833 100644
--- a/gcc/testsuite/gcc.dg/inline-33.c
+++ b/gcc/testsuite/gcc.dg/inline-33.c
@@ -6,7 +6,7 @@ int i;
 
 int foo ();
 
-main ()
+int main ()
 {
   return foo (i);
 }
diff --git a/gcc/testsuite/gcc.dg/ipa/inline-6.c b/gcc/testsuite/gcc.dg/ipa/inline-6.c
index d981bb0..ca0a838 100644
--- a/gcc/testsuite/gcc.dg/ipa/inline-6.c
+++ b/gcc/testsuite/gcc.dg/ipa/inline-6.c
@@ -1,7 +1,7 @@
 /* Check statements that are eliminated by inlining.  */
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-ipa-inline-details -fno-early-inlining -fno-partial-inlining -fno-ipa-cp"  } */
-static t(int a)
+static void t(int a)
 {
   if (a==1)
     {
@@ -32,7 +32,7 @@ static t(int a)
       bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr(); bagr();
    }
 }
-main()
+void main()
 {
   t(1);
   t(2);
diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c b/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
index 9810e25..2633676 100644
--- a/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
@@ -1,5 +1,5 @@
 /* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp"  } */
-test (int a)
+void test (int a)
 {
    int i;
    for (i=0; i<a; i++)
@@ -8,7 +8,7 @@ test (int a)
      test2(a);
 }
 }
-m()
+void m()
 {
   test (10);
 }
diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c b/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
index a06d725..dc95631 100644
--- a/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
@@ -1,11 +1,11 @@
 /* { dg-options "-O3 -c -fdump-ipa-inline-details -fno-early-inlining -fno-ipa-cp"  } */
-t(int s, void **p)
+void t(int s, void **p)
 {
   int i;
   for (i;i<10000;i+=s)
     p[i]=0;
 }
-m(void **p)
+void m(void **p)
 {
   t (10, p);
 }
diff --git a/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c b/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
index 110ae44..49c7d62 100644
--- a/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
@@ -9,6 +9,7 @@ scc_next (int c)
   for (i=0;i<c;i++)
     a[i]=c;
   scc_entry (c);
+  return 0;
 }
 int
 scc_entry (int c)
@@ -20,7 +21,7 @@ scc_entry (int c)
     scc_next (c);
   return sum;
 }
-main()
+int main()
 {
   int sum;
   int i;
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
index 36fd506..71f7e9f 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
@@ -18,6 +18,7 @@ static int f (double a)
     g (a, 3.1);
   else
     g (a, 3.1);
+  return 0;
 }
 int main ()
 {
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-8.c b/gcc/testsuite/gcc.dg/ipa/ipa-8.c
index d138cf2..61239e9 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-8.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-8.c
@@ -6,6 +6,7 @@
 static int g (int b, int c)
 {
   printf ("%d %d\n", b, c);
+  return 0;
 }
 static int f (int a)
 {
@@ -14,6 +15,7 @@ static int f (int a)
     g (a, 3);
   else
     g (a, 5);
+  return 0;
 }
 int main ()
 {
diff --git a/gcc/testsuite/gcc.dg/ipa/ipacost-1.c b/gcc/testsuite/gcc.dg/ipa/ipacost-1.c
index 4fce41e..5dadbcf 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipacost-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipacost-1.c
@@ -16,6 +16,7 @@ i_can_be_propagated_fully (int *a)
     t(a[i+2]);
     t(a[i+3]);
   }
+  return 0;
 }
 static int 
 i_can_be_propagated_fully2 (int *a)
@@ -23,6 +24,7 @@ i_can_be_propagated_fully2 (int *a)
   i_can_be_propagated_fully (a);
   i_can_be_propagated_fully (a);
   i_can_be_propagated_fully (a);
+  return 0;
 }
 static int 
 i_can_not_be_propagated_fully (int *a)
@@ -35,6 +37,7 @@ i_can_not_be_propagated_fully (int *a)
     t(a[i+2]);
     t(a[i+3]);
   }
+  return 0;
 }
 int 
 i_can_not_be_propagated_fully2 (int *a)
@@ -42,13 +45,15 @@ i_can_not_be_propagated_fully2 (int *a)
   i_can_not_be_propagated_fully (a);
   i_can_not_be_propagated_fully (a);
   i_can_not_be_propagated_fully (a);
+  return 0;
 }
-main()
+int main()
 {
   i_can_be_propagated_fully2 (array);
   i_can_be_propagated_fully2 (array);
   i_can_not_be_propagated_fully2 (array);
   i_can_not_be_propagated_fully2 (array);
+  return 0;
 }
 
 /* { dg-final { scan-ipa-dump-times "Creating a specialized node of i_can_be_propagated_fully2" 1 "cp"  } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipacost-2.c b/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
index ceb524e..fa24507 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
@@ -17,6 +17,7 @@ i_can_be_propagated_fully (int *a)
     t(a[i+2]);
     t(a[i+3]);
   }
+  return 0;
 }
 static int
 i_can_be_propagated_fully2 (int *a)
@@ -24,6 +25,7 @@ i_can_be_propagated_fully2 (int *a)
   i_can_be_propagated_fully (a);
   i_can_be_propagated_fully (a);
   i_can_be_propagated_fully (a);
+  return 0;
 }
 static int
 i_can_not_be_propagated_fully (int *a)
@@ -36,6 +38,7 @@ i_can_not_be_propagated_fully (int *a)
     t(a[i+2]);
     t(a[i+3]);
   }
+  return 0;
 }
 int
 i_can_not_be_propagated_fully2 (int *a)
@@ -58,8 +61,9 @@ i_can_not_be_propagated_fully2 (int *a)
     t(a[i+3] + 2);
   }
   i_can_not_be_propagated_fully (a);
+  return 0;
 }
-main()
+void main()
 {
   int i;
   i_can_be_propagated_fully2 (array);
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-1.c b/gcc/testsuite/gcc.dg/ipa/ipcp-1.c
index a2ffd42..5af1f43 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipcp-1.c
@@ -15,6 +15,7 @@ int g (int b, int c)
 
   for (i = 0; i < b; i++)
     use_stuff (c);
+  return 0;
 }
 
 static void f (int a, int x, int z);
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-4.c b/gcc/testsuite/gcc.dg/ipa/ipcp-4.c
index 462cade..03c0d9a 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipcp-4.c
@@ -16,6 +16,7 @@ h (int a, int b)
 
   for (i = 8; i <= b; i++)
     use_stuff (a+8);
+  return 0;
 }
 
 static int
@@ -26,6 +27,7 @@ g1 (int a, int b)
   for (i = 0; i <= b; i++)
     use_pointer (&a);
   h (a, b);
+  return 0;
 }
 
 static int
@@ -35,6 +37,7 @@ g2 (int a, int b)
 
   for (i = 4; i <= b; i += 2)
     use_stuff (a);
+  return 0;
 }
 
 
diff --git a/gcc/testsuite/gcc.dg/ipa/pr57539.c b/gcc/testsuite/gcc.dg/ipa/pr57539.c
index e02018e..2f43e75 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr57539.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr57539.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3" } */
+/* { dg-options "-O3 -Wno-return-type" } */
 
 typedef long unsigned int size_t;
 typedef struct
@@ -94,6 +94,7 @@ typedef int (*intersectfn) (nitem *, nitem *);
 static int
 cmpitem (Dt_t * d, int *p1, int *p2, Dtdisc_t * disc)
 {
+  return 0;
 }
 static Dtdisc_t constr =
   { __builtin_offsetof (nitem, val), sizeof (int), __builtin_offsetof (nitem,
@@ -103,16 +104,19 @@ static Dtdisc_t constr =
 static int
 distX (box * b1, box * b2)
 {
+  return 0;
 }
 
 static int
 intersectY0 (nitem * p, nitem * q)
 {
+  return 0;
 }
 
 static int
 intersectY (nitem * p, nitem * q)
 {
+  return 0;
 }
 
 static void
@@ -164,6 +168,7 @@ mkNConstraintG (graph_t * g, Dt_t * list, intersectfn intersect, distfn dist)
 	    p = (nitem *) (((Dtlink_t *) ((Dtlink_t *) p))->right))
     {
     }
+  return cg;
 }
 
 static graph_t *
@@ -172,6 +177,7 @@ mkConstraintG (graph_t * g, Dt_t * list, intersectfn intersect, distfn dist)
   graph_t *vg;
   graph_t *cg = agopen ("cg", Agstrictdirected, ((Agdisc_t *) 0));
   mapGraphs (vg, cg, dist);
+  return cg;
 }
 
 static void
diff --git a/gcc/testsuite/gcc.dg/ipa/pr58106.c b/gcc/testsuite/gcc.dg/ipa/pr58106.c
index b83353c..2c35716 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr58106.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr58106.c
@@ -23,6 +23,7 @@ replace_label (rtx *x, void *data)
    for_each_rtx (&new_c, replace_label, data);
  }
     }
+ return 0;
 }
 static int
 for_each_rtx_1 (rtx exp, int n, rtx_function f, void *data)
@@ -41,6 +42,7 @@ for_each_rtx_1 (rtx exp, int n, rtx_function f, void *data)
      }
  }
     }
+  return result;
 }
 int
 for_each_rtx (rtx *x, rtx_function f, void *data)
diff --git a/gcc/testsuite/gcc.dg/ipa/pure-const-1.c b/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
index f76dd87..8f227db 100644
--- a/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
@@ -33,27 +33,27 @@ call_callback(int (*fn)(int), int a)
 }
 
 __attribute__ ((noinline, noclone))
-i_am_const3(int a)
+int i_am_const3(int a)
 {
   return call_callback (call_me, a);
 }
 
 __attribute__ ((noinline))
-explode_badly()
+void explode_badly()
 {
   error_code = 0xbad;
   abort ();
 }
 
 __attribute__ ((noinline, noclone))
-i_am_pure4(int a)
+int i_am_pure4(int a)
 {
   if (a > 50)
     explode_badly ();
   return a;
 }
 
-test()
+int test()
 {
   int s;
   s = i_am_pure1(5);
diff --git a/gcc/testsuite/gcc.dg/lto/20080924_0.c b/gcc/testsuite/gcc.dg/lto/20080924_0.c
index db77450..4789891 100644
--- a/gcc/testsuite/gcc.dg/lto/20080924_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20080924_0.c
@@ -1,7 +1,7 @@
 /* { dg-lto-do assemble }  */
 /* { dg-lto-options {{-O2 -flto -funsigned-char}} }  */ 
 typedef unsigned int size_t;
-foo (const char *src, unsigned char *dst, size_t size)
+void foo (const char *src, unsigned char *dst, size_t size)
 {
   int ch;
   while ((ch = *src++) != '\0') {
diff --git a/gcc/testsuite/gcc.dg/lto/20081115_0.c b/gcc/testsuite/gcc.dg/lto/20081115_0.c
index c9f4c80..bf8787f 100644
--- a/gcc/testsuite/gcc.dg/lto/20081115_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20081115_0.c
@@ -19,7 +19,7 @@ bar (void)
   return e_inline_baz ();
 }
 
-main ()
+int main ()
 {
 #ifdef OPTIMIZE
   if (bar () != 2 || foo () != 3)
diff --git a/gcc/testsuite/gcc.dg/lto/20081118_0.c b/gcc/testsuite/gcc.dg/lto/20081118_0.c
index b37eb31..ea565d1 100644
--- a/gcc/testsuite/gcc.dg/lto/20081118_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20081118_0.c
@@ -15,7 +15,7 @@ bar (void)
  return e_inline_baz ();
 }
 
-main ()
+int main ()
 {
 #ifdef OPTIMIZE
  if (bar () != 2 || foo () != 3)
diff --git a/gcc/testsuite/gcc.dg/lto/20081201-1_0.c b/gcc/testsuite/gcc.dg/lto/20081201-1_0.c
index b689644..63dc19b 100644
--- a/gcc/testsuite/gcc.dg/lto/20081201-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20081201-1_0.c
@@ -20,7 +20,7 @@ bar (void)
  return e_inline_baz ();
 }
 
-main ()
+int main ()
 {
 #ifdef OPTIMIZE
  if (bar () != 2 || foo () != 3)
diff --git a/gcc/testsuite/gcc.dg/lto/20090213_0.c b/gcc/testsuite/gcc.dg/lto/20090213_0.c
index 6387a0e..7079024 100644
--- a/gcc/testsuite/gcc.dg/lto/20090213_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090213_0.c
@@ -3,7 +3,7 @@
 
 extern int foo (int);
 
-main()
+int main()
 {
   int x = foo (10);
   printf ("x is %d, foo is at 0x%p\n", x, foo);
diff --git a/gcc/testsuite/gcc.dg/lto/20090218-2_1.c b/gcc/testsuite/gcc.dg/lto/20090218-2_1.c
index 5e103cb..2075028 100644
--- a/gcc/testsuite/gcc.dg/lto/20090218-2_1.c
+++ b/gcc/testsuite/gcc.dg/lto/20090218-2_1.c
@@ -1,3 +1,5 @@
+// { dg-options "-Wno-return-type" }
+
 typedef struct {
 } mem_attrs;
 int main(void)
diff --git a/gcc/testsuite/gcc.dg/lto/20090312_0.c b/gcc/testsuite/gcc.dg/lto/20090312_0.c
index 8aaad75..681d705 100644
--- a/gcc/testsuite/gcc.dg/lto/20090312_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090312_0.c
@@ -1,4 +1,5 @@
 /* { dg-lto-do link } */
+/* { dg-lto-options "-Wno-return-type" } */
 extern int **foo (void);
 extern void mumble (char*, char*, char*);
 
diff --git a/gcc/testsuite/gcc.dg/lto/20090706-2_0.c b/gcc/testsuite/gcc.dg/lto/20090706-2_0.c
index 69da98b..a2bcf88 100644
--- a/gcc/testsuite/gcc.dg/lto/20090706-2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/20090706-2_0.c
@@ -7,7 +7,7 @@ int foo (int size)
   return a[size - 10] + size;
 }
 
-main()
+int main()
 {
   int x = foo (20);
   if (x != 62)
diff --git a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
index 1e02f68..f134981 100644
--- a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
+++ b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_0.c
@@ -21,7 +21,7 @@ void callmesecond (void)
     abort();
   second = 1;
 }
-main()
+int main()
 {
   c();
   b();
diff --git a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c
index 67e6e1c..4d2dd8c 100644
--- a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c
+++ b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_1.c
@@ -1,7 +1,7 @@
 extern void callmesecond();
 static void callmealias() __attribute__((weakref ("callmesecond")));
 
-b()
+void b()
 {
   callmealias();
 }
diff --git a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c
index 6f382f6..d44282c 100644
--- a/gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c
+++ b/gcc/testsuite/gcc.dg/lto/attr-weakref-1_2.c
@@ -1,7 +1,7 @@
 extern void callmefirst();
 static void callmealias() __attribute__((weakref ("callmefirst")));
 
-c()
+void c()
 {
   callmealias();
 }
diff --git a/gcc/testsuite/gcc.dg/lto/ipareference2_0.c b/gcc/testsuite/gcc.dg/lto/ipareference2_0.c
index f7ae0b4..c8723cd 100644
--- a/gcc/testsuite/gcc.dg/lto/ipareference2_0.c
+++ b/gcc/testsuite/gcc.dg/lto/ipareference2_0.c
@@ -7,7 +7,7 @@ void abort (void);
 int b,c,d,e,f;
 int *a[5]={&b,&c,&c,&e};
 void other_ltrans (void);
-main()
+int main()
 {
   other_ltrans ();
   if (*(a[1])!=11)
diff --git a/gcc/testsuite/gcc.dg/lto/ipareference2_1.c b/gcc/testsuite/gcc.dg/lto/ipareference2_1.c
index c7653b0..c55439a 100644
--- a/gcc/testsuite/gcc.dg/lto/ipareference2_1.c
+++ b/gcc/testsuite/gcc.dg/lto/ipareference2_1.c
@@ -1,3 +1,4 @@
+/* { dg-options "-Wno-return-type" } */
 void abort (void);
 extern int *a[5];
 extern int b,c,d,e,f;
diff --git a/gcc/testsuite/gcc.dg/lto/ipareference_0.c b/gcc/testsuite/gcc.dg/lto/ipareference_0.c
index f8970f0..6e611d8 100644
--- a/gcc/testsuite/gcc.dg/lto/ipareference_0.c
+++ b/gcc/testsuite/gcc.dg/lto/ipareference_0.c
@@ -7,7 +7,7 @@ extern int get_val (void);
 extern int set_val (void);
 extern do_nothing (void);
 void abort (void);
-main()
+int main()
 {
   int a;
   int b;
@@ -23,4 +23,5 @@ main()
     }
   else
     abort ();
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/lto/ipareference_1.c b/gcc/testsuite/gcc.dg/lto/ipareference_1.c
index c5d72fa..d0e4949 100644
--- a/gcc/testsuite/gcc.dg/lto/ipareference_1.c
+++ b/gcc/testsuite/gcc.dg/lto/ipareference_1.c
@@ -2,13 +2,14 @@ static int val;
 int set_val (void)
 {
   val = 5;
+  return 0;
 }
 int get_val (void)
 {
   return val;
 }
 __attribute__ ((__noinline__))
-do_nothing ()
+void do_nothing ()
 {
   asm volatile ("":::"memory");
 }
diff --git a/gcc/testsuite/gcc.dg/lto/pr47924_0.c b/gcc/testsuite/gcc.dg/lto/pr47924_0.c
index f7fdb44..1cecc3e 100644
--- a/gcc/testsuite/gcc.dg/lto/pr47924_0.c
+++ b/gcc/testsuite/gcc.dg/lto/pr47924_0.c
@@ -8,7 +8,7 @@ int i __attribute__((used));
 int main()
 {
   if (i == 0)
-    return;
+    return 0;
 
   *p = 0;
 
diff --git a/gcc/testsuite/gcc.dg/lto/pr55703_0.c b/gcc/testsuite/gcc.dg/lto/pr55703_0.c
index 1c4e04b..ac73ebb 100644
--- a/gcc/testsuite/gcc.dg/lto/pr55703_0.c
+++ b/gcc/testsuite/gcc.dg/lto/pr55703_0.c
@@ -47,7 +47,7 @@ int try (int num) {
   return -1;
 }
 
-main()
+int main()
 {
   int i;
   for (i = 1; i <= 6; i++)
diff --git a/gcc/testsuite/gcc.dg/lto/resolutions_0.c b/gcc/testsuite/gcc.dg/lto/resolutions_0.c
index 9e59cb0..1d5dae7 100644
--- a/gcc/testsuite/gcc.dg/lto/resolutions_0.c
+++ b/gcc/testsuite/gcc.dg/lto/resolutions_0.c
@@ -1,10 +1,11 @@
 /* { dg-require-linker-plugin "" } */
 /* { dg-extra-ld-options "-fuse-linker-plugin -O1" } */
 
-link_error()
+int link_error()
 {
+ return 0;
 }
-main()
+int main()
 {
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c b/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c
index 4b7f7d7..811fe72 100644
--- a/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c
+++ b/gcc/testsuite/gcc.dg/lto/trans-mem-3_1.c
@@ -1,10 +1,11 @@
-/* { dg-options "-fgnu-tm" } */
+/* { dg-options "-fgnu-tm -Wno-return-type" } */
 
 #include "trans-mem.h"
 
 extern int i;
 
-main()
+int main()
 {
   __transaction_atomic { i = 0; }
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/memmove-1.c b/gcc/testsuite/gcc.dg/memmove-1.c
index 46918ee..5b9d330 100644
--- a/gcc/testsuite/gcc.dg/memmove-1.c
+++ b/gcc/testsuite/gcc.dg/memmove-1.c
@@ -11,7 +11,7 @@ domem (void *dest, const void *src, int len)
 {
 	__builtin_memmove (dest, src, len);
 }
-t()
+void t()
 {
 	domem (b,a,100);
 	domem (b+i1,(const void *)b,1);
diff --git a/gcc/testsuite/gcc.dg/non-local-goto-1.c b/gcc/testsuite/gcc.dg/non-local-goto-1.c
index 2bace07..b25da01 100644
--- a/gcc/testsuite/gcc.dg/non-local-goto-1.c
+++ b/gcc/testsuite/gcc.dg/non-local-goto-1.c
@@ -5,14 +5,14 @@ extern void abort (void);
 
 int global;
 
-static foo(void) __attribute__((noinline));
+static void foo(void) __attribute__((noinline));
 
-static foo(void)
+static void foo(void)
 {
   global = 1;
 }
 
-static bar(void)
+static void bar(void)
 {
   foo ();
 }
diff --git a/gcc/testsuite/gcc.dg/non-local-goto-2.c b/gcc/testsuite/gcc.dg/non-local-goto-2.c
index 24ed650..981e443 100644
--- a/gcc/testsuite/gcc.dg/non-local-goto-2.c
+++ b/gcc/testsuite/gcc.dg/non-local-goto-2.c
@@ -5,14 +5,14 @@ extern void abort (void);
 
 int global;
 
-static foo(void) __attribute__((noinline));
+static void foo(void) __attribute__((noinline));
 
-static foo(void)
+static void foo(void)
 {
   global = 1;
 }
 
-static bar(void)
+static void bar(void)
 {
   foo ();
   global = 0;
diff --git a/gcc/testsuite/gcc.dg/noncompile/920616-2.c b/gcc/testsuite/gcc.dg/noncompile/920616-2.c
index 25f5943..e43d009 100644
--- a/gcc/testsuite/gcc.dg/noncompile/920616-2.c
+++ b/gcc/testsuite/gcc.dg/noncompile/920616-2.c
@@ -1 +1 @@
-f(void a,...){}		/* { dg-error "has incomplete type" } */
+void f(void a,...){}		/* { dg-error "has incomplete type" } */
diff --git a/gcc/testsuite/gcc.dg/noncompile/930301-1.c b/gcc/testsuite/gcc.dg/noncompile/930301-1.c
index afabd15..1006e25 100644
--- a/gcc/testsuite/gcc.dg/noncompile/930301-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/930301-1.c
@@ -1,5 +1,5 @@
 struct a *q;
-f()
+void f()
 {
   q++;	/* { dg-error "pointer to" } */
 }
diff --git a/gcc/testsuite/gcc.dg/noncompile/930622-1.c b/gcc/testsuite/gcc.dg/noncompile/930622-1.c
index 835e072..04f25d0 100644
--- a/gcc/testsuite/gcc.dg/noncompile/930622-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/930622-1.c
@@ -1,4 +1,4 @@
-f ()
+void f ()
 {
   double b;
   b = b * 10;
diff --git a/gcc/testsuite/gcc.dg/noncompile/930622-2.c b/gcc/testsuite/gcc.dg/noncompile/930622-2.c
index 5e02d89..f148541 100644
--- a/gcc/testsuite/gcc.dg/noncompile/930622-2.c
+++ b/gcc/testsuite/gcc.dg/noncompile/930622-2.c
@@ -1,4 +1,4 @@
-f ()
+void f ()
 {
   int i;
   for (i--)	/* { dg-error "parse|syntax|expected" } */
diff --git a/gcc/testsuite/gcc.dg/noncompile/950825-1.c b/gcc/testsuite/gcc.dg/noncompile/950825-1.c
index 43dca2f..5733bf8 100644
--- a/gcc/testsuite/gcc.dg/noncompile/950825-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/950825-1.c
@@ -1,4 +1,6 @@
-main()
+/* { dg-options "-Wno-return-type" } */
+
+int main()
 {
 return (struct x) {{y: 0}};   /* { dg-error "extra|near|excess|incompatible|invalid" } */
 }
diff --git a/gcc/testsuite/gcc.dg/noncompile/invalid_asm.c b/gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
index d1d4b36..9ef4e5d 100644
--- a/gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
+++ b/gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
@@ -1,5 +1,5 @@
 /* { dg-options "-ffat-lto-objects" } */
-asm_invalid_register_name()
+void asm_invalid_register_name()
 {
   asm("":::"this_is_an_invalid_register_name");	/* { dg-error "unknown register" } */
 }
diff --git a/gcc/testsuite/gcc.dg/noncompile/pr35447-1.c b/gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
index 9c31e9b..b08a51d 100644
--- a/gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
@@ -1,3 +1,5 @@
+/* { dg-options "-Wno-return-type" } */
+
 /* ICE arising from preparing to enter a scope for a nested function
    but never doing so.  PR 35447.  */
 
diff --git a/gcc/testsuite/gcc.dg/noncompile/scope.c b/gcc/testsuite/gcc.dg/noncompile/scope.c
index 7f09c27..9b32849 100644
--- a/gcc/testsuite/gcc.dg/noncompile/scope.c
+++ b/gcc/testsuite/gcc.dg/noncompile/scope.c
@@ -2,7 +2,7 @@ extern void abort (void);
 extern void exit (int);
 static int v = 3;
 
-f ()
+void f ()
 {
   int v = 4;
   {
@@ -12,7 +12,7 @@ f ()
   }
 }
 
-main ()
+void main ()
 {
   f ();
   exit (0);
diff --git a/gcc/testsuite/gcc.dg/noncompile/va-arg-1.c b/gcc/testsuite/gcc.dg/noncompile/va-arg-1.c
index b8b7d3c..9aba0b2 100644
--- a/gcc/testsuite/gcc.dg/noncompile/va-arg-1.c
+++ b/gcc/testsuite/gcc.dg/noncompile/va-arg-1.c
@@ -1,6 +1,6 @@
 #include <stdarg.h>
 
-f (int x, ...)
+void f (int x, ...)
 {
   va_list args;
   va_start (args, bogus_variable);  /* { dg-error "undeclared|for each function|not last named" } */
diff --git a/gcc/testsuite/gcc.dg/noreturn-8.c b/gcc/testsuite/gcc.dg/noreturn-8.c
index 1e75633..643d116 100644
--- a/gcc/testsuite/gcc.dg/noreturn-8.c
+++ b/gcc/testsuite/gcc.dg/noreturn-8.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2" } */
 void exit (int);
 void noreturn_autodetection_failed ();
-__attribute__ ((noinline))
+__attribute__ ((noinline)) void
 detect_noreturn ()
 {
   exit (0);
diff --git a/gcc/testsuite/gcc.dg/pr18596-1.c b/gcc/testsuite/gcc.dg/pr18596-1.c
index dc34f44..7f5d0a7 100644
--- a/gcc/testsuite/gcc.dg/pr18596-1.c
+++ b/gcc/testsuite/gcc.dg/pr18596-1.c
@@ -33,7 +33,7 @@ int l (int i)
 
 int m (int i)
 {
-  static g ();  /* { dg-error "invalid storage class" } */
-  static g () { return i; } /* { dg-error "invalid storage class" } */
+  static int g ();  /* { dg-error "invalid storage class" } */
+  static int g () { return i; } /* { dg-error "invalid storage class" } */
   return g ();
 }
diff --git a/gcc/testsuite/gcc.dg/pr18596-2.c b/gcc/testsuite/gcc.dg/pr18596-2.c
index 7a52e80..497a8f3 100644
--- a/gcc/testsuite/gcc.dg/pr18596-2.c
+++ b/gcc/testsuite/gcc.dg/pr18596-2.c
@@ -33,7 +33,7 @@ int l (int i)
 
 int m (int i)
 {
-  static g ();  /* { dg-error "invalid storage class" } */
-  static g () { return i; } /* { dg-error "invalid storage class" } */
+  static int g ();  /* { dg-error "invalid storage class" } */
+  static int g () { return i; } /* { dg-error "invalid storage class" } */
   return g ();
 }
diff --git a/gcc/testsuite/gcc.dg/pr24561.c b/gcc/testsuite/gcc.dg/pr24561.c
index 20ac00e..64bb6b9 100644
--- a/gcc/testsuite/gcc.dg/pr24561.c
+++ b/gcc/testsuite/gcc.dg/pr24561.c
@@ -3,4 +3,5 @@
 /* { dg-final { scan-assembler "debug_hook" } } */
 static int debug_hook()
 {
+	return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/pr25795-1.c b/gcc/testsuite/gcc.dg/pr25795-1.c
index e568b25..af2810d 100644
--- a/gcc/testsuite/gcc.dg/pr25795-1.c
+++ b/gcc/testsuite/gcc.dg/pr25795-1.c
@@ -5,6 +5,7 @@
 
 extern const char *mystr;       /* normally in a header */
 const char *mystr;
-main()
+int main()
 {
+	return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/pr25795.c b/gcc/testsuite/gcc.dg/pr25795.c
index decbe54..9f5fdd6 100644
--- a/gcc/testsuite/gcc.dg/pr25795.c
+++ b/gcc/testsuite/gcc.dg/pr25795.c
@@ -5,6 +5,7 @@
 
 extern const char *mystr;       /* normally in a header */
 const char *mystr __attribute__ ((externally_visible));
-main()
+int main()
 {
+	return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/pr26004.c b/gcc/testsuite/gcc.dg/pr26004.c
index 35e6a2f..2b93386 100644
--- a/gcc/testsuite/gcc.dg/pr26004.c
+++ b/gcc/testsuite/gcc.dg/pr26004.c
@@ -1,10 +1,11 @@
 /* PR c/26004 */
 /* Bug: the return slot optimization was taking the address of s_3,
    causing an error. */
+/* { dg-options "-Wno-return-type" } */
 
 struct s_3 { short s[3]; } z_3, s_3;
 struct s_3 add_struct_3 (struct s_3 s){}
-wack_struct_3 (void)
+void wack_struct_3 (void)
 {
   int i; register struct s_3 u = z_3;
   u = add_struct_3 (u);
diff --git a/gcc/testsuite/gcc.dg/pr27861-1.c b/gcc/testsuite/gcc.dg/pr27861-1.c
index cf269dc..8040619 100644
--- a/gcc/testsuite/gcc.dg/pr27861-1.c
+++ b/gcc/testsuite/gcc.dg/pr27861-1.c
@@ -52,7 +52,7 @@ struct sim_state
   sim_cpu cpu[1];
 };
 typedef address_word instruction_address;
-do_dror (SIM_DESC sd, instruction_address cia, int MY_INDEX, unsigned64 x,
+void do_dror (SIM_DESC sd, instruction_address cia, int MY_INDEX, unsigned64 x,
 	 unsigned64 y)
 {
   unsigned64 result;
diff --git a/gcc/testsuite/gcc.dg/pr28574.c b/gcc/testsuite/gcc.dg/pr28574.c
index f5ff6c0..ebd7cee 100644
--- a/gcc/testsuite/gcc.dg/pr28574.c
+++ b/gcc/testsuite/gcc.dg/pr28574.c
@@ -71,4 +71,4 @@ yasm_list_modules(yasm_module_type type,
     }
 }
 
-main() {}
+void main() {}
diff --git a/gcc/testsuite/gcc.dg/pr28888.c b/gcc/testsuite/gcc.dg/pr28888.c
index c65a26a..27a0130 100644
--- a/gcc/testsuite/gcc.dg/pr28888.c
+++ b/gcc/testsuite/gcc.dg/pr28888.c
@@ -3,7 +3,7 @@
 
 static const unsigned char _c30[] =
   "statistic of allocated integer registers:";
-Allocate__WriteStats (void)
+void Allocate__WriteStats (void)
 {
   register int i0, i1, i2, i3, i4, i5;
 l0:i1 = (int) (i5 << 2);
diff --git a/gcc/testsuite/gcc.dg/pr29254.c b/gcc/testsuite/gcc.dg/pr29254.c
index 598b6bf..bee87da 100644
--- a/gcc/testsuite/gcc.dg/pr29254.c
+++ b/gcc/testsuite/gcc.dg/pr29254.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O3 -Werror" } */
+/* { dg-options "-O3 -Werror -Wno-return-type" } */
 
 list_compare (int * list1)
 {
diff --git a/gcc/testsuite/gcc.dg/pr31529-1.c b/gcc/testsuite/gcc.dg/pr31529-1.c
index 7182e8f..6ab39cb 100644
--- a/gcc/testsuite/gcc.dg/pr31529-1.c
+++ b/gcc/testsuite/gcc.dg/pr31529-1.c
@@ -3,8 +3,9 @@
 /* { dg-options "-flto" } */
 /* { dg-additional-sources "pr31529-2.c" } */
 
-getline ()
+int getline ()
 {
+	return 0;
 }
 
 int main() { return 0; }
diff --git a/gcc/testsuite/gcc.dg/pr31529-2.c b/gcc/testsuite/gcc.dg/pr31529-2.c
index 40d8ef8..4fa6a90 100644
--- a/gcc/testsuite/gcc.dg/pr31529-2.c
+++ b/gcc/testsuite/gcc.dg/pr31529-2.c
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 
 extern __inline
-getline ()
+void getline ()
 {
 }
diff --git a/gcc/testsuite/gcc.dg/pr33923.c b/gcc/testsuite/gcc.dg/pr33923.c
index d71e557..e9a584f 100644
--- a/gcc/testsuite/gcc.dg/pr33923.c
+++ b/gcc/testsuite/gcc.dg/pr33923.c
@@ -12,7 +12,7 @@ typedef struct
 }
 ProtocolOperations;
 static const ProtocolOperations *protocol;
-brl_readCommand (void)
+int brl_readCommand (void)
 {
   unsigned long int keys;
   int command;
diff --git a/gcc/testsuite/gcc.dg/pr34263.c b/gcc/testsuite/gcc.dg/pr34263.c
index d389ead..f0fe9e3 100644
--- a/gcc/testsuite/gcc.dg/pr34263.c
+++ b/gcc/testsuite/gcc.dg/pr34263.c
@@ -14,7 +14,7 @@ int count = 0;
 void sub( struct s *p, struct s **pp );
 int look( struct s *p, struct s **pp );
 
-main()
+int main()
 {
     struct s *pp;
     struct s *next;
diff --git a/gcc/testsuite/gcc.dg/pr35065.c b/gcc/testsuite/gcc.dg/pr35065.c
index e5984ab..260acb5 100644
--- a/gcc/testsuite/gcc.dg/pr35065.c
+++ b/gcc/testsuite/gcc.dg/pr35065.c
@@ -1,6 +1,6 @@
 /* PR debug/35065 */
 /* { dg-do compile } */
-/* { dg-options "-O2 -g -funroll-loops" } */
+/* { dg-options "-O2 -g -funroll-loops -Wno-return-type" } */
 typedef int vlc_bool_t;
 typedef __SIZE_TYPE__ size_t;
 typedef struct vlc_object_t vlc_object_t;
diff --git a/gcc/testsuite/gcc.dg/pr36194.c b/gcc/testsuite/gcc.dg/pr36194.c
index 070a944..eabd0b6 100644
--- a/gcc/testsuite/gcc.dg/pr36194.c
+++ b/gcc/testsuite/gcc.dg/pr36194.c
@@ -22,7 +22,7 @@ g (long long a)
   asm ("");
 }
 
-main ()
+int main ()
 {
   g (0x1234567887654321ll);
   return 0;
diff --git a/gcc/testsuite/gcc.dg/pr43564.c b/gcc/testsuite/gcc.dg/pr43564.c
index 39e0f3a..d132254 100644
--- a/gcc/testsuite/gcc.dg/pr43564.c
+++ b/gcc/testsuite/gcc.dg/pr43564.c
@@ -6,6 +6,7 @@ unsigned __clz (unsigned input)
 {
   unsigned output;
   __asm__ __volatile__ ("clz %0, %1":"=r" (output):"r" (input));
+  return 0;
 }
 __attribute__ ((optimize ("O2")))
 void foo ()
diff --git a/gcc/testsuite/gcc.dg/pr45415.c b/gcc/testsuite/gcc.dg/pr45415.c
index 12d9fc0..6374c46 100644
--- a/gcc/testsuite/gcc.dg/pr45415.c
+++ b/gcc/testsuite/gcc.dg/pr45415.c
@@ -53,7 +53,7 @@ df(f_be, t_be)
 
 void abort (void);
 void exit (int);
-main ()
+int main ()
 {
   t_be x;
   x.s.h = 0x10000000U;
diff --git a/gcc/testsuite/gcc.dg/pr47443.c b/gcc/testsuite/gcc.dg/pr47443.c
index fa7d6b9..47abea2 100644
--- a/gcc/testsuite/gcc.dg/pr47443.c
+++ b/gcc/testsuite/gcc.dg/pr47443.c
@@ -2,7 +2,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O -fstack-check=generic" } */
 
-static inline bar (char *c, int i)
+static inline int bar (char *c, int i)
 {
   return c + i > c;
 }
diff --git a/gcc/testsuite/gcc.dg/pr47763.c b/gcc/testsuite/gcc.dg/pr47763.c
index a5da2de..8c0f7fb 100644
--- a/gcc/testsuite/gcc.dg/pr47763.c
+++ b/gcc/testsuite/gcc.dg/pr47763.c
@@ -1,8 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -funroll-loops -fdump-rtl-web" } */
 
-foo()
+int foo()
 {
+return 0;
 }
 
 /* { dg-final { scan-rtl-dump-not "Web oldreg" "web" } } */
diff --git a/gcc/testsuite/gcc.dg/pr47899.c b/gcc/testsuite/gcc.dg/pr47899.c
index c83bb85..2da9fad 100644
--- a/gcc/testsuite/gcc.dg/pr47899.c
+++ b/gcc/testsuite/gcc.dg/pr47899.c
@@ -16,6 +16,7 @@ lab:
 	  ;
       else
 	goto lab;
+  return 0;
 }
 
 int
diff --git a/gcc/testsuite/gcc.dg/pr49000.c b/gcc/testsuite/gcc.dg/pr49000.c
index 32a1cdb3..0017742 100644
--- a/gcc/testsuite/gcc.dg/pr49000.c
+++ b/gcc/testsuite/gcc.dg/pr49000.c
@@ -3,7 +3,7 @@
 /* { dg-options "-O2 -g" } */
 
 static
-foo (int x, int y)
+int foo (int x, int y)
 {
   return x * y;
 }
diff --git a/gcc/testsuite/gcc.dg/pr52549.c b/gcc/testsuite/gcc.dg/pr52549.c
index 9093652..294186a 100644
--- a/gcc/testsuite/gcc.dg/pr52549.c
+++ b/gcc/testsuite/gcc.dg/pr52549.c
@@ -1,17 +1,17 @@
 /* { dg-do compile } */
 
 #if __SIZEOF_POINTER__ == __SIZEOF_LONG__
-_mark (long obj, int i, char *a)
+void _mark (long obj, int i, char *a)
 {
   (char *)&(((long *)(obj)) [i]) - a;
 }
 #elif __SIZEOF_POINTER__ == __SIZEOF_INT__
-_mark (int obj, int i, char *a)
+void _mark (int obj, int i, char *a)
 {
   (char *)&(((int *)(obj)) [i]) - a;
 }
 #elif __SIZEOF_POINTER__ == __SIZEOF_LONG_LONG__
-__extension__ _mark (long long obj, int i, char *a)
+void __extension__ _mark (long long obj, int i, char *a)
 {
   (char *)&(((int *)(obj)) [i]) - a;
 }
diff --git a/gcc/testsuite/gcc.dg/pr52808.c b/gcc/testsuite/gcc.dg/pr52808.c
index b731cb4..8a33d08 100644
--- a/gcc/testsuite/gcc.dg/pr52808.c
+++ b/gcc/testsuite/gcc.dg/pr52808.c
@@ -8,5 +8,5 @@ int main ()
   i = 0;
   for (;; i++)
     if (*fn1 ()[i] && !'a' <= 0 && i <= 'z' || *fn1 ()[0] && 'a' <= 'z')
-      return;
+      return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/pr60647-1.c b/gcc/testsuite/gcc.dg/pr60647-1.c
index 73ea856..ddc1fdd 100644
--- a/gcc/testsuite/gcc.dg/pr60647-1.c
+++ b/gcc/testsuite/gcc.dg/pr60647-1.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 
 struct _wincore
 {
diff --git a/gcc/testsuite/gcc.dg/pragma-align.c b/gcc/testsuite/gcc.dg/pragma-align.c
index 4c0138b..d46636a 100644
--- a/gcc/testsuite/gcc.dg/pragma-align.c
+++ b/gcc/testsuite/gcc.dg/pragma-align.c
@@ -37,7 +37,7 @@ struct {
         long two;
 } resetalign;
 
-main()
+int main()
 {
         if(sizeof(sixteen) < sizeof(defaultalign)) abort();
         if(sizeof(two) >= sizeof(defaultalign)) abort();
diff --git a/gcc/testsuite/gcc.dg/pragma-diag-1.c b/gcc/testsuite/gcc.dg/pragma-diag-1.c
index b6d294d..61e028d 100644
--- a/gcc/testsuite/gcc.dg/pragma-diag-1.c
+++ b/gcc/testsuite/gcc.dg/pragma-diag-1.c
@@ -2,7 +2,7 @@
 /* { dg-options "-Wuninitialized -O2" } */
 /* { dg-message "warnings being treated as errors" "" {target "*-*-*"} 0 } */
 
-main()
+int main()
 {
   int a;
   int b;
@@ -18,4 +18,5 @@ main()
   foo(c);			/* { dg-error "uninitialized" } */
 #pragma GCC diagnostic pop
   foo(d);			/* { dg-warning "uninitialized" } */
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c
index d03e831..c20ad1c 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c
+++ b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c
@@ -108,7 +108,7 @@ void simulate_thread_main()
     }
 }
 
-main()
+int main()
 {
   simulate_thread_main ();
   simulate_thread_done ();
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
index 651e76a..691607d 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
+++ b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
@@ -120,7 +120,7 @@ void simulate_thread_main()
     }
 }
 
-main()
+int main()
 {
   fill_table ();
 
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c
index 91f9a06..afed7e6 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c
+++ b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c
@@ -110,7 +110,7 @@ void simulate_thread_main()
     }
 }
 
-main()
+int main()
 {
   simulate_thread_main ();
   simulate_thread_done ();
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c
index e7b54c4..35830b0 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c
+++ b/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c
@@ -108,7 +108,7 @@ void simulate_thread_main()
     }
 }
 
-main()
+int main()
 {
   simulate_thread_main ();
   simulate_thread_done ();
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c b/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c
index 990310c..9b9f577 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c
+++ b/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c
@@ -110,7 +110,7 @@ void simulate_thread_main()
     test_abort ();
 }
 
-main ()
+int main ()
 {
   simulate_thread_main ();
   simulate_thread_done ();
diff --git a/gcc/testsuite/gcc.dg/tm/20091013.c b/gcc/testsuite/gcc.dg/tm/20091013.c
index d9b3b0e..1e828d0 100644
--- a/gcc/testsuite/gcc.dg/tm/20091013.c
+++ b/gcc/testsuite/gcc.dg/tm/20091013.c
@@ -4,7 +4,7 @@
 extern long ringo(long int);
 int g,i;
 
-f()
+void f()
 {
   __transaction_relaxed {
     for (i=0; i < 10; ++i)
diff --git a/gcc/testsuite/gcc.dg/tm/20091221.c b/gcc/testsuite/gcc.dg/tm/20091221.c
index 1d75d15..2ab3176 100644
--- a/gcc/testsuite/gcc.dg/tm/20091221.c
+++ b/gcc/testsuite/gcc.dg/tm/20091221.c
@@ -4,7 +4,7 @@
 int i;
 extern void virgin () __attribute__((transaction_pure));
 
-foo()
+void foo()
 {
 	__transaction_atomic {
 	    virgin(i);
diff --git a/gcc/testsuite/gcc.dg/tm/debug-1.c b/gcc/testsuite/gcc.dg/tm/debug-1.c
index 01acfae..bccc0b3 100644
--- a/gcc/testsuite/gcc.dg/tm/debug-1.c
+++ b/gcc/testsuite/gcc.dg/tm/debug-1.c
@@ -5,11 +5,11 @@
 
 int a,b, c, z;
 
-testing(){
+void testing(){
     c=9;
 }
 
-main() {
+int main() {
 	b = 9898;
 	__transaction_relaxed {
 		z = c;
diff --git a/gcc/testsuite/gcc.dg/tm/irrevocable-1.c b/gcc/testsuite/gcc.dg/tm/irrevocable-1.c
index 60f6291..f003515 100644
--- a/gcc/testsuite/gcc.dg/tm/irrevocable-1.c
+++ b/gcc/testsuite/gcc.dg/tm/irrevocable-1.c
@@ -6,7 +6,7 @@ int george;
 
 extern crap() __attribute__((transaction_unsafe));
 
-foo()
+void foo()
 {
 	__transaction_relaxed {
 		global++;
diff --git a/gcc/testsuite/gcc.dg/tm/irrevocable-2.c b/gcc/testsuite/gcc.dg/tm/irrevocable-2.c
index 17ac8a5..2790813 100644
--- a/gcc/testsuite/gcc.dg/tm/irrevocable-2.c
+++ b/gcc/testsuite/gcc.dg/tm/irrevocable-2.c
@@ -7,7 +7,7 @@
 int global;
 int george;
 
-foo()
+void foo()
 {
 	__transaction_relaxed {
 		global++;
diff --git a/gcc/testsuite/gcc.dg/tm/irrevocable-3.c b/gcc/testsuite/gcc.dg/tm/irrevocable-3.c
index fdf3e52..6061646 100644
--- a/gcc/testsuite/gcc.dg/tm/irrevocable-3.c
+++ b/gcc/testsuite/gcc.dg/tm/irrevocable-3.c
@@ -3,7 +3,7 @@
 
 extern void bar(void) __attribute__((transaction_callable));
 
-foo()
+void foo()
 {
 	__transaction_relaxed {
 		bar();
diff --git a/gcc/testsuite/gcc.dg/tm/irrevocable-4.c b/gcc/testsuite/gcc.dg/tm/irrevocable-4.c
index 72075df..8255eca 100644
--- a/gcc/testsuite/gcc.dg/tm/irrevocable-4.c
+++ b/gcc/testsuite/gcc.dg/tm/irrevocable-4.c
@@ -5,7 +5,7 @@ void orig(void);
 void xyz(void) __attribute__((transaction_wrap (orig)));
 
 
-foo()
+void foo()
 {
 	__transaction_relaxed {
 		orig();
diff --git a/gcc/testsuite/gcc.dg/tm/memopt-1.c b/gcc/testsuite/gcc.dg/tm/memopt-1.c
index c5ac5ce..a2e574f 100644
--- a/gcc/testsuite/gcc.dg/tm/memopt-1.c
+++ b/gcc/testsuite/gcc.dg/tm/memopt-1.c
@@ -6,7 +6,7 @@ extern george() __attribute__((transaction_safe));
 extern ringo(long int) __attribute__((transaction_safe));
 int i;
 
-f()
+void f()
 {
   __transaction_relaxed {
     g = 666;
diff --git a/gcc/testsuite/gcc.dg/tm/pr52173-1.c b/gcc/testsuite/gcc.dg/tm/pr52173-1.c
index 9ffa4d6..b520ce6 100644
--- a/gcc/testsuite/gcc.dg/tm/pr52173-1.c
+++ b/gcc/testsuite/gcc.dg/tm/pr52173-1.c
@@ -11,7 +11,7 @@ void func()
     }
 }
 
-main()
+void main()
 { 
   int i;
   for(i = 0; i < 10; ++i)
diff --git a/gcc/testsuite/gcc.dg/tm/props-1.c b/gcc/testsuite/gcc.dg/tm/props-1.c
index 8969024..014521f 100644
--- a/gcc/testsuite/gcc.dg/tm/props-1.c
+++ b/gcc/testsuite/gcc.dg/tm/props-1.c
@@ -3,7 +3,7 @@
 
 int global;
 
-foo(int local)
+void foo(int local)
 {
   __transaction_atomic {
     local++;
diff --git a/gcc/testsuite/gcc.dg/tm/props-2.c b/gcc/testsuite/gcc.dg/tm/props-2.c
index 56a3ffa..c263f73 100644
--- a/gcc/testsuite/gcc.dg/tm/props-2.c
+++ b/gcc/testsuite/gcc.dg/tm/props-2.c
@@ -8,7 +8,7 @@ int george;
 
 extern crap() __attribute__((transaction_unsafe));
 
-foo(){
+void foo(){
     __transaction_relaxed {
 	global++;
 	crap();
diff --git a/gcc/testsuite/gcc.dg/tm/props-3.c b/gcc/testsuite/gcc.dg/tm/props-3.c
index 48f2230..d79af47 100644
--- a/gcc/testsuite/gcc.dg/tm/props-3.c
+++ b/gcc/testsuite/gcc.dg/tm/props-3.c
@@ -5,7 +5,7 @@
 
 void (*indirect)(void);
 
-foo(){
+void foo(){
     __transaction_relaxed {
       (*indirect)();
     }
diff --git a/gcc/testsuite/gcc.dg/torture/pr28814.c b/gcc/testsuite/gcc.dg/torture/pr28814.c
index cc3c9f6..375e524 100644
--- a/gcc/testsuite/gcc.dg/torture/pr28814.c
+++ b/gcc/testsuite/gcc.dg/torture/pr28814.c
@@ -7,7 +7,7 @@ struct w49
   }
   value;
 };
-f9887 (struct w49 a23040)
+void f9887 (struct w49 a23040)
 {
   unsigned long r9887;
   if (((struct structure_type24753 *) (r9887 - 1)) == ((void *) 0))
diff --git a/gcc/testsuite/gcc.dg/torture/pr31254.c b/gcc/testsuite/gcc.dg/torture/pr31254.c
index cec3012..d342f72 100644
--- a/gcc/testsuite/gcc.dg/torture/pr31254.c
+++ b/gcc/testsuite/gcc.dg/torture/pr31254.c
@@ -19,7 +19,7 @@ static inline
 {
   return &vnode->vfs_inode;
 };
-afs_inode_map_status (struct afs_vnode *vnode)
+void afs_inode_map_status (struct afs_vnode *vnode)
 {
   struct inode *inode = AFS_VNODE_TO_I (vnode);
   inode->i_atime = inode->i_mtime;
diff --git a/gcc/testsuite/gcc.dg/torture/pr35227.c b/gcc/testsuite/gcc.dg/torture/pr35227.c
index d951d25..949b25c 100644
--- a/gcc/testsuite/gcc.dg/torture/pr35227.c
+++ b/gcc/testsuite/gcc.dg/torture/pr35227.c
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 
-mandel(double _Complex C)
+int mandel(double _Complex C)
 {
   int py;
   C = (__extension__ 1.0iF) * (double)py;
diff --git a/gcc/testsuite/gcc.dg/torture/pr38948.c b/gcc/testsuite/gcc.dg/torture/pr38948.c
index 98ed493..1b19771 100644
--- a/gcc/testsuite/gcc.dg/torture/pr38948.c
+++ b/gcc/testsuite/gcc.dg/torture/pr38948.c
@@ -1,5 +1,5 @@
-/* { dg-options "-fno-tree-sra" } */
-/* { dg-options "-fno-tree-sra -march=v32" { target cris-*-* } } */
+/* { dg-options "-fno-tree-sra -Wno-return-type" } */
+/* { dg-options "-fno-tree-sra -march=v32 -Wno-return-type" { target cris-*-* } } */
 typedef unsigned char byte;
 typedef unsigned int uint;
 typedef int bool;
@@ -77,6 +77,7 @@ append_simple (const byte * glyph, const gs_matrix_fixed * pmat, void * ppath)
 	  }
       }
   }
+  return 0;
 }
 int
 append_outline (uint glyph_index, const gs_matrix_fixed *pmat, void *ppath)
diff --git a/gcc/testsuite/gcc.dg/torture/pr55888.c b/gcc/testsuite/gcc.dg/torture/pr55888.c
index e75adcd..f02ba57 100644
--- a/gcc/testsuite/gcc.dg/torture/pr55888.c
+++ b/gcc/testsuite/gcc.dg/torture/pr55888.c
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 
 typedef unsigned _GCC_ATTR_ALIGN_u32t;
 typedef _GCC_ATTR_ALIGN_u32t _Uint32t __attribute__ ((__aligned__ (4)));
@@ -67,6 +68,7 @@ uint32_pack (uint32_t value, uint8_t * out)
 	}
     }
   out[rv++] = value;
+  return 1;
 }
 
 static inline size_t
diff --git a/gcc/testsuite/gcc.dg/torture/pr55890-1.c b/gcc/testsuite/gcc.dg/torture/pr55890-1.c
index 9fd558e..5a3e522 100644
--- a/gcc/testsuite/gcc.dg/torture/pr55890-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pr55890-1.c
@@ -3,4 +3,4 @@
 extern void *memmove(void *, void *, __SIZE_TYPE__);
 typedef int (*_TEST_fun_) ();
 static _TEST_fun_ i = (_TEST_fun_) memmove;
-main() { i(); }
+int main() { i(); return 0; }
diff --git a/gcc/testsuite/gcc.dg/torture/pr55890-2.c b/gcc/testsuite/gcc.dg/torture/pr55890-2.c
index a753e57..bbb9522 100644
--- a/gcc/testsuite/gcc.dg/torture/pr55890-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr55890-2.c
@@ -1,4 +1,4 @@
 /* { dg-do compile } */
 
 extern void *memcpy();
-main() { memcpy(); }
+int main() { memcpy(); return 0; }
diff --git a/gcc/testsuite/gcc.dg/torture/pr57036-1.c b/gcc/testsuite/gcc.dg/torture/pr57036-1.c
index 5aa63bd..a20e71c 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57036-1.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57036-1.c
@@ -2,9 +2,10 @@
 
 extern void g (void);
 extern __inline __attribute__ ((__always_inline__,__leaf__))
-f ()
+int f ()
 {
   g ();
+  return 0;
 }
 struct __jmp_buf_tag *b;
 int jpgDecode_convert (unsigned i)
diff --git a/gcc/testsuite/gcc.dg/torture/pr57393-2.c b/gcc/testsuite/gcc.dg/torture/pr57393-2.c
index b9b12ff..bd1c662 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57393-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57393-2.c
@@ -3,7 +3,7 @@
 
 char a;
 
-foo (int **p)
+void foo (int **p)
 {
   int b;
   for (;;)
diff --git a/gcc/testsuite/gcc.dg/torture/pr57584.c b/gcc/testsuite/gcc.dg/torture/pr57584.c
index 0e5a294..81457c4 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57584.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57584.c
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 /* { dg-require-effective-target int32plus } */
 
 typedef int int32_t;
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c b/gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c
index d853825..283a5e4 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/nested-6.c
@@ -13,6 +13,7 @@ int main ()
   int compare (const void *a, const void *b)
   {
     goto nonlocal;
+    return 0;
   }
 
   char array[3];
diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
index 67a76c9..04f94cb 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c
@@ -5,7 +5,7 @@
 int a;
 extern void (*p[2])(int n);
 void abort (void);
-main()
+int main()
 { int i;
 
   /* This call shall be converted.  */
diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
index a94195c..4559295 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
@@ -33,7 +33,7 @@ sub(int i)
 __attribute__ ((externally_visible))
 void (*p[2])(int)={add, sub};
 #else
-main()
+int main()
 {
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c b/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
index e44887b..0d0dd81 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
@@ -21,7 +21,7 @@ hot_function ()
       abort ();
 }
 
-main ()
+int main ()
 {
   int i;
   for (i = 0; i < 100; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/merge_block.c b/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
index 62f7f22..ea5b8a7 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
@@ -9,7 +9,7 @@ int t()
 			break;
 	return i;
 }
-main ()
+int main ()
 {
   int i;
   /* The loop will be optimized away after ipa-inline.  */
diff --git a/gcc/testsuite/gcc.dg/tree-prof/peel-1.c b/gcc/testsuite/gcc.dg/tree-prof/peel-1.c
index 65f0c56..a6dd7db 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/peel-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/peel-1.c
@@ -12,7 +12,7 @@ t()
       return 1;
   abort ();
 }
-main()
+int main()
 {
   int i;
   for (i=0;i<1000;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c b/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
index f730613..45ebbbb 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
@@ -3,7 +3,7 @@ int a[1000];
 int b[1000];
 int size=1;
 int max=10000;
-main()
+int main()
 {
   int i;
   for (i=0;i<max; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c b/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
index 47ebfb0..76f8d52 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
@@ -7,7 +7,7 @@ int max=10000;
 /* We allow short memcpy()s for MIPS16.  */
 int __attribute__((nomips16))
 #endif
-main()
+int main()
 {
   int i;
   for (i=0;i<max; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c b/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
index 0663b12..4a41492 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
@@ -12,7 +12,7 @@ t()
       return 1;
   abort ();
 }
-main()
+int main()
 {
   int i;
   for (i=0;i<1000;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c b/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
index d559b92..91c0534 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
@@ -10,7 +10,7 @@ int t()
 			break;
 	return i;
 }
-main ()
+int main ()
 {
   int i;
   for (i = 0; i < 1000; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
index d6f603e..ca8d75d3 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
@@ -2,7 +2,7 @@
 int a[1000];
 int b = 256;
 int c = 257;
-main ()
+int main ()
 {
   int i;
   int n;
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
index 1683961..2711649 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
@@ -3,7 +3,7 @@ unsigned int a[1000];
 unsigned int b = 256;
 unsigned int c = 1024;
 unsigned int d = 17;
-main ()
+int main ()
 {
   int i;
   unsigned int n;
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c
index d7b3914..fc830b3 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c
@@ -3,7 +3,7 @@ unsigned int a[1000];
 unsigned int b = 257;
 unsigned int c = 1023;
 unsigned int d = 19;
-main ()
+int main ()
 {
   int i;
   unsigned int n;
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
index 239bf59..0e81f70 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
@@ -3,7 +3,7 @@ unsigned int a[1000];
 unsigned int b = 999;
 unsigned int c = 1002;
 unsigned int d = 1003;
-main ()
+int main ()
 {
   int i;
   unsigned int n;
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
index 1a804a7..6eea0e4 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
@@ -1,7 +1,7 @@
 /* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
 int a[1000];
 int b=997;
-main()
+int main()
 {
 	int i;
 	for (i = 0; i < 1000; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c b/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
index c439fcf..689c450 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
@@ -2,10 +2,11 @@
 char a[1000];
 char b[1000];
 int size=1000;
-__attribute__ ((noinline))
+__attribute__ ((noinline)) int
 t(int size)
 {
   __builtin_memcpy(a,b,size);
+  return 0;
 }
 int
 main()
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c
index fac91be..e7650fb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O1 -fdump-tree-dom2" } */
  
 extern int square (int) __attribute__ ((__const__));
-shit(int a)
+int shit(int a)
 {
   return square (a) + square (a);
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c
index fa59923..a72a37a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c
@@ -4,7 +4,7 @@
 extern void abort (void);
 extern int blah[];
 
-foo(int index)
+void foo(int index)
 {
   if (blah [(unsigned int)index] != 0)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c
index 59b4839..c4879e2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom2" } */
+/* { dg-options "-O1 -fdump-tree-dom2 -Wno-return-type" } */
 
 extern void abort (void);
 union tree_node;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c b/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
index 0711053..966dfcb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom2" } */
+/* { dg-options "-O1 -fdump-tree-dom2 -Wno-return-type" } */
 
 extern void abort (void);
 struct rtx_def;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c b/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
index a12d718..73d7ac3 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
@@ -3,7 +3,7 @@
      
 extern void abort (void);
 
-oof ()
+void oof ()
 {
   int live_head;
   int * live = &live_head;
@@ -12,7 +12,7 @@ oof ()
    bitmap_clear (live);
 }
 
-foo(int n)
+void foo(int n)
 {
   int *space = (int *)__builtin_alloca (n);
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
index aad53c3..ffb56db 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
@@ -3,7 +3,7 @@
    
 extern void abort (void);
 
-com(int *blah)
+int com(int *blah)
 {
   int z = *blah;
   if (z == 256)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c b/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c
index e74bd08..836165b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c
@@ -3,7 +3,7 @@
 
 extern int printf (const char *, ...); 
 
-main ()
+int main ()
 {
   int variable = 0;
   int p = 1;
@@ -16,6 +16,7 @@ main ()
         break;
     }
   printf("%d\n", variable);
+  return 0;
 }
 
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c
index 6225bcd..363d96f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040121-1.c
@@ -19,7 +19,7 @@ char *bar(char *first, char *last)
      return foo(first, last);
    return 0;
 }
-main() {
+int main() {
    char *p = "a", *q = "b";
    if (p)
      if (bar(p,q))
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c
index c770340..8afce3c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O1 -fdump-tree-dse1-details" } */
  
-foo(int *z, int *y, int xx)
+int foo(int *z, int *y, int xx)
 {
   *z = 1;
   if (xx)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040302-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040302-1.c
index 8b80128..8d041a1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040302-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040302-1.c
@@ -5,4 +5,4 @@
    provided by Dale Johannesen in PR 14266.  */
 
 void foo() { bar (); }
-main () { foo (); }
+void main () { foo (); }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040319-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040319-1.c
index d6e5449..ec60d98 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040319-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040319-1.c
@@ -18,7 +18,7 @@ void foo (struct bar *b)
     abort ();
 }
 
-main ()
+int main ()
 {
   struct bar x;
   x.arr = &x.count;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040326-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040326-1.c
index 4be6049..919d8b8 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040326-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040326-1.c
@@ -7,7 +7,7 @@
 extern void abort (void);
 extern void exit (int);
 
-main ()
+void main ()
 {
   int table, c, elt;
   int tem = Faref (table, elt);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040326-2.c b/gcc/testsuite/gcc.dg/tree-ssa/20040326-2.c
index b1bed75..116546f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040326-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040326-2.c
@@ -39,7 +39,7 @@ baz (void)
 
 fnptr B[2] = { baz, boz };
 
-main ()
+int main ()
 {
   int b, c;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040408-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040408-1.c
index 6578be5..ed4cc17 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040408-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040408-1.c
@@ -1,5 +1,5 @@
 /* { dg-do compile }  */
-/* { dg-options "-O2" }  */
+/* { dg-options "-O2 -Wno-return-type" }  */
 /* Make sure that when a variable with an NMT is marked for renaming
    that the NMT's aliases are also marked for renaming.  */
 
@@ -37,11 +37,12 @@ static int asctoeg(short unsigned int *y, int oprec)
 {
   unsigned short yy[13];
   char *s;
-  
+
   while( *s == ' ' )
     ++s;
-  
+
   toe64( yy, y );
+  return 0;
 }
 
 long double _strtold (char *s, char **se)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
index ef94096..3b4ad8a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O1 -fdump-tree-dce2" } */
 
-foo ()
+int foo ()
 {
   volatile int *p;
   volatile int x;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20041008-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20041008-1.c
index ca24427..9e42d92 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20041008-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20041008-1.c
@@ -6,13 +6,13 @@ struct A {
     int y;
 };
 
-baz (struct A *a)
+void baz (struct A *a)
 {
   a->x = 3;
   a->y = 2;
 }
 
-foo (int i)
+int foo (int i)
 {
   struct A a;
 
@@ -31,7 +31,7 @@ foo (int i)
   return a.x;
 }
 
-main ()
+int main ()
 {
   foo (30);
   return 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20050719-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20050719-1.c
index 8dc4c7e..740b06b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20050719-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20050719-1.c
@@ -31,7 +31,7 @@ useboot (void *boot)
   abort ();
 }
 
-main()
+int main()
 {
   zap (0);
   return 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c
index 4b148f2..476f303 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20070302-1.c
@@ -16,6 +16,7 @@ baz (struct A *z, struct A *y)
   z->y = Y;
   y->x = (int) X;
   y->y = Y;
+  return 0;
 }
 
 
@@ -37,9 +38,10 @@ float foo (int i)
      alias set of a call-clobbered memory tag.  */
   if (x.y != 3.0)
     link_error ();
+  return 0.0;
 }
 
-main(int argc, char **argv)
+void main(int argc, char **argv)
 {
   foo (argc);
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-16.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-16.c
index c71486c..ccad534 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/alias-16.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-16.c
@@ -12,7 +12,7 @@ struct X {
 
 struct X n;
 
-foo (int i)
+int foo (int i)
 {
   struct Y *p = (i > 10) ? &m.b : &n.c;
   p->b[2] = 10;
@@ -21,7 +21,7 @@ foo (int i)
   return p->b[2] + n.c.b[2] + m.b.b[3];
 }
 
-main()
+int main()
 {
   if (foo (3) != 12)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c b/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
index 89477d9..131850c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
@@ -3,7 +3,7 @@
 /* { dg-options "-O2 -fdump-tree-optimized" } */
 static int a=4;
 static int b __attribute__ ((alias("a")));
-main()
+int main()
 {
    return b+a;
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c b/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
index fe4084d..41e33c2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
@@ -10,7 +10,7 @@ int test()
 static int test2() __attribute__ ((alias("test")));
 static int test1() __attribute__ ((weakref)) __attribute__ ((alias("test2")));
 static int test4() __attribute__ ((weakref)) __attribute__ ((alias("test")));
-main()
+void main()
 {
   test();
   test2();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
index 4c3888f..da243e1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-gimple" } */
 
-f (int i, float j, int i2, float j2) 
+void f (int i, float j, int i2, float j2) 
 { 
   if (__builtin_expect ((i * i2) > 0 && (j * j2), 0)) 
     g ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
index d8f344f..837449a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-gimple" } */
 
-f (int i, float j, int i2, float j2) 
+void f (int i, float j, int i2, float j2) 
 { 
   if (__builtin_expect ((i * i2) > 0 || (j * j2), 0))
     ;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
index b9e6cfb..a326cf2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-gimple" } */
 
-f (int i, float j, int i2, float j2) 
+void f (int i, float j, int i2, float j2) 
 { 
   if (__builtin_expect ((i * i2) > 0 && (j * j2), 0))
     a ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c
index 2d2b206..d808fe6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-gimple" } */
 
-f (int i, float j, int i2, float j2) 
+void f (int i, float j, int i2, float j2) 
 { 
   if (__builtin_expect ((i * i2) > 0 || (j * j2), 0))
     a ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c
index d0b251d..ad8b09b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-forwprop" } */
 
-f (int i, float j, int i2, float j2) 
+void f (int i, float j, int i2, float j2) 
 { 
   if (__builtin_expect ((i * i2) > 0 && __builtin_expect ((j * j2) != 0, 1), 0))
     a ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
index 0bea9a9..c5afc03 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-cunrolli-details" } */
 int a[2];
-test(int c)
+void test(int c)
 { 
   int i;
   for (i=0;i<c;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
index e16d008..476bbb1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-cunroll-details" } */
 int a[2];
-test(int c)
+void test(int c)
 { 
   int i;
   for (i=0;i<c;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
index dd6ce50..04f7630 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cunrolli-details" } */
 int a[1];
-test(int c)
+void test(int c)
 { 
   int i;
   for (i=0;i<c;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
index 86e12bb..9469094 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-ivcanon-details" } */
 int a[1];
-test(int c)
+void test(int c)
 { 
   int i=0,j;
   for (i=0;i<c;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
index 1e9b8bf..be9922b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-cunroll-details" } */
 int *a;
-test(int c)
+void test(int c)
 { 
   int i;
   for (i=0;i<6;i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
index f3b59f9..36dd579 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
@@ -3,7 +3,7 @@
 void abort (void);
 int a[10];
 int b[11];
-t (int n)
+int t (int n)
 {
   int i;
   int sum = 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
index 0eff197..e5b5d96 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
@@ -25,7 +25,7 @@ enum tree_index
     TI_CURRENT_TARGET_PRAGMA, TI_CURRENT_OPTIMIZE_PRAGMA, TI_MAX
 };
 extern tree global_trees[TI_MAX];
-emit_support_tinfos (void)
+void emit_support_tinfos (void)
 {
   static tree *const fundamentals[] = {
     &global_trees[TI_VOID_TYPE], &global_trees[TI_BOOLEAN_TYPE],
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
index 9f10886..62865e5 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
@@ -32,7 +32,7 @@ union tree_node
 const enum tree_code_class tree_code_type[] =
 { tcc_exceptional, 1, 0, 0, 0, 0, 2, };
 
-int_fits_type_p (const_tree c, const_tree type)
+void int_fits_type_p (const_tree c, const_tree type)
 {
   double_int dc, dd;
   {
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
index b416d37..21d532e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
@@ -5,7 +5,7 @@ struct a {int a,b;};
 const static struct a a;
 static int b[10];
 int c;
-test()
+int test()
 {
   return a.a+b[c];
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c
index 1dad931..721e178 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c
@@ -5,7 +5,7 @@
 static const char a[5]="t";
 static const int b[5]={1,2};
 static const struct a {int a : 6; int b : 6;} c = {5,9};
-test()
+int test()
 {
   return a[2]+b[1]+b[3]+c.b;
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
index 3fa9d58..49e32da 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
@@ -6,7 +6,7 @@
 extern char *frob (void);
 extern _Bool testit (void);
 
-test (int code)
+void test (int code)
 {
   char *temp = frob ();
   int rotate = (code == 22);
@@ -14,7 +14,7 @@ test (int code)
     oof ();
 }
 
-test_2 (int code)
+void test_2 (int code)
 {
   char *temp = frob ();
   int rotate = (code == 22);
@@ -23,7 +23,7 @@ test_2 (int code)
 }
 
 
-test_3 (int code)
+void test_3 (int code)
 {
   char *temp = frob ();
   int rotate = (code == 22);
@@ -32,7 +32,7 @@ test_3 (int code)
 }
 
 
-test_4 (int code)
+void test_4 (int code)
 {
   char *temp = frob ();
   int rotate = (code == 22);
@@ -41,7 +41,7 @@ test_4 (int code)
 }
 
 
-test_5 (int code)
+void test_5 (int code)
 {
   _Bool temp = testit ();
   _Bool rotate = (code == 22);
@@ -49,7 +49,7 @@ test_5 (int code)
     oof ();
 }
 
-test_6 (int code)
+void test_6 (int code)
 {
   _Bool temp = testit ();
   _Bool rotate = (code == 22);
@@ -58,7 +58,7 @@ test_6 (int code)
 }
 
 
-test_7 (int code)
+void test_7 (int code)
 {
   _Bool temp = testit ();
   _Bool rotate = (code == 22);
@@ -67,7 +67,7 @@ test_7 (int code)
 }
 
 
-test_8 (int code)
+void test_8 (int code)
 {
   _Bool temp = testit ();
   _Bool rotate = (code == 22);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
index beb1a0e..36b7f98 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
@@ -26,7 +26,7 @@ struct cpp_reader
 {
   struct ht *hash_table;
 };
-create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
+void create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
 {
   unsigned int num_extra_tokens = 0;
   {
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c
index a9c5db3..fb2161c 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ifc-6.c
@@ -2,7 +2,7 @@
 /* { dg-options "-c -O2 -ftree-vectorize" { target *-*-* } } */
 
 static int x;
-foo (int n, int *A)
+void foo (int n, int *A)
 {
   int i;
   for (i = 0; i < n; i++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
index 1d7aeef..c1534c6 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
@@ -7,7 +7,7 @@ void do_something4(void);
 void do_something5(void);
 void do_something_big(int);
 
-int do_something (int size)
+void do_something (int size)
 {
   if (__builtin_constant_p (size))
     switch (size)
@@ -22,7 +22,7 @@ int do_something (int size)
     do_something_big (size);
 }
 extern int n;
-main()
+void main()
 {
   do_something (2);
   do_something (3);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c
index 1a6faf4..e446aa9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c
@@ -2,7 +2,7 @@
 /* { dg-options "-Os -fdump-tree-optimized" } */
 struct a {int a,b,c,d,e,f;};
 
-do_inc (struct a *a)
+void do_inc (struct a *a)
 {
   a->a=a->b;
   a->b=a->c;
@@ -10,7 +10,7 @@ do_inc (struct a *a)
   a->e=a->f;
 }
 
-test(struct a *a)
+void test(struct a *a)
 {
   do_inc (a);
   do_something (a);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c
index ae6c41f..3d91cc1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c
@@ -2,7 +2,7 @@
 /* { dg-options "-Os -fdump-tree-optimized" } */
 struct a {int a,b,c,d,e,f,g,h,i,j;};
 
-do_inc (struct a *a)
+void do_inc (struct a *a)
 {
   a->a=1;
   a->b=2;
@@ -15,7 +15,7 @@ do_inc (struct a *a)
   a->j=5;
 }
 
-test(struct a *a)
+void test(struct a *a)
 {
   do_inc (a);
   do_something (a);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
index 678dd85..3494b25 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
@@ -12,9 +12,10 @@ int t(int a)
     }
   else
       q(a+10);
+  return 0;
 }
 
-main()
+void main()
 {
    t(5);
    t(20);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
index ec628b7..58487e2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
@@ -11,7 +11,7 @@ very_long_function(int a)
     return 2 * -a + very_long_function (a)/4;
 }
 
-blah ()
+void blah ()
 {
   very_long_function (1);
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
index a31e8ea..548e0ec 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
@@ -20,7 +20,7 @@ int test2(a)
    return 0;
 }
 
-test()
+void test()
 {
   test2(10);
   test2(20);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
index bbde73d..347660d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
@@ -3,7 +3,7 @@
 int b;
 int c;
 int d;
-split_me(int a)
+void split_me(int a)
 {
   int t = 0;
   if (d>4)
@@ -29,7 +29,7 @@ split_me(int a)
     goto make_me_irregular;
 }
 
-main()
+void main()
 {
   split_me (1);
   split_me (2);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
index 8fc1244..fa16291 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
@@ -24,7 +24,7 @@ struct a split_me (int a)
     }
 }
 int val;
-test()
+void test()
 {
   split_me (val);
   split_me (val);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c
index 44f1b62..0ce90ea 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-1.c
@@ -11,7 +11,7 @@ TItype last_data_offset ;
 int store;
 char *data;
 
-f ()
+void f ()
 {
 
   TItype data_offset = last_data_offset;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
index 369f082..6961976 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
@@ -5,7 +5,7 @@ long last_data_offset;
 int store;
 char *data;
   
-f ()
+void f ()
 {
   
   long data_offset = last_data_offset;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c b/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
index 056c3fd..e6b6772 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre-stats -Wno-return-type" } */
 typedef union tree_node *tree;
 struct tree_common
 {
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c b/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
index afb7ca4..dcd179f 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O1 -fdump-tree-local-pure-const1" } */
 /* { dg-add-options bind_pic_locally } */
 
-t(int a, int b, int c)
+int t(int a, int b, int c)
 {
   int *p;
   if (a)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
index 24524a0..7c8ec31 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
@@ -6,7 +6,7 @@
 typedef struct gfc_se { int pre; } gfc_se;
 typedef struct gfc_ss_info { int dim[7]; } gfc_ss_info;
 int gfc_rank_cst[7 + 1];
-gfc_conv_array_transpose (gfc_se * se) {
+void gfc_conv_array_transpose (gfc_se * se) {
   int dest, src, dest_index, src_index;
   gfc_ss_info *dest_info;
   int n;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c
index 714696e..95dcd31 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2 -fdump-tree-cunrolli-details" } */
 int a[10];
 int b[11];
-t(int n)
+int t(int n)
 {
    int i;
    int sum = 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c b/gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c
index c79811b..e76c049 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/nonzero-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized" } */
 extern int a;
-t()
+int t()
 {
   return &a!=0;
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr20913.c b/gcc/testsuite/gcc.dg/tree-ssa/pr20913.c
index fb5461a..f59fe50 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr20913.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr20913.c
@@ -28,7 +28,7 @@ foo (int a, int b, int c, int d)
     }
 }
 
-main()
+void main()
 {
   foo (1, 2, 3, 4);
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c
index 0f5dc9e..dd9a907 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c
@@ -19,7 +19,7 @@ void __attribute__((nonnull (1, 3))) do_other_thing(char *s, int *p, char *q)
 
 int i;
 
-main()
+void main()
 {
   do_other_thing ("xxx", &i, "yyy");
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr23434.c b/gcc/testsuite/gcc.dg/tree-ssa/pr23434.c
index a21b955..3724590 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr23434.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr23434.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
 
-cblas_csyr2k (int N, void *A, int lda, float *B, int ldb, float *C, int k)
+int cblas_csyr2k (int N, void *A, int lda, float *B, int ldb, float *C, int k)
 {
   int i, j;
   for (;; k ++)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr24670.c b/gcc/testsuite/gcc.dg/tree-ssa/pr24670.c
index a5ff800..03b3c13 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr24670.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr24670.c
@@ -12,7 +12,7 @@ shift128Right (int count, long long int *z1Ptr)
   *z1Ptr = z1;
 }
 
-float128_rem ()
+void float128_rem ()
 {
   signed int expDiff;
   long long int aSig1;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr33922.c b/gcc/testsuite/gcc.dg/tree-ssa/pr33922.c
index 7429eb1..43189ed 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr33922.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr33922.c
@@ -14,7 +14,7 @@ typedef struct
 }
 ProtocolOperations;
 static const ProtocolOperations *protocol;
-brl_readCommand (BrailleDisplay * brl)
+int brl_readCommand (BrailleDisplay * brl)
 {
   unsigned long int keys;
   int command;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c b/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c
index 5cac1ce..5e3411d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c
@@ -4,7 +4,7 @@
 int *a_p;
 int a[1000];
 
-f(int k)
+void f(int k)
 {
 	int i;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c b/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c
index 5f15d62..90efe71 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c
@@ -9,7 +9,7 @@ typedef struct {
 int *a_p;
 S a[1000];
 
-f(int k)
+void f(int k)
 {
 	int i;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c b/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
index b9de36a..85d3589 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
@@ -4,7 +4,7 @@
 int *a_p;
 int a[1000];
 
-f(int k)
+void f(int k)
 {
         long long i;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c
index 8ee9eb8..0187b9e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-12.c
@@ -25,7 +25,7 @@ void foo (int i)
     link_error ();
 }
 
-main ()
+int main ()
 {
   foo (3);
   return 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
index 12d9826..94433dc 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O1 -fdump-tree-dce2" } */
 
 int t() __attribute__ ((const));
-q()
+void q()
 {
   int i = t();
   if (!i)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
index 39fc85e..7082635 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-dse1" } */
 
-foo( int *a)
+void foo( int *a)
 {
   *a = 5;
   *a = 3;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
index 4cb67f0..85a1d01 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
@@ -2,11 +2,12 @@
 /* { dg-options "-O2 -fdump-tree-dse1-vops" } */
 
 struct { int a, b; } soup1, soup2;
-foo ()
+int foo ()
 {
   soup1 = soup2;
   soup1.a = 66;
   soup1.b = 77;
+  return 0;
 }
 
 /* We should eliminate the first assignment.  */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
index 3f8e820..9ea6ebb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1" } */
 
-foo (int *p, int i)
+int foo (int *p, int i)
 {
   int x;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
index 56fca97..eb511e3 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
@@ -7,7 +7,7 @@ struct A
   int b;
 };
 
-foo (struct A *p, struct A *q)
+int foo (struct A *p, struct A *q)
 {
   int x = p->a;
   if (p == q)
@@ -18,6 +18,7 @@ foo (struct A *p, struct A *q)
      of 'p'.  */
   if (p)
     return x + p->b;
+  return 0;
 }
 /* Target with fno-delete-null-pointer-checks should not fold check */
 /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
index 9b7c082..8c69aeb 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
@@ -7,7 +7,7 @@ struct A
   int b;
 };
 
-foo (struct A *p, struct A *q)
+int foo (struct A *p, struct A *q)
 {
   int *r = 0;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
index bf5d683..32c3d82 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
@@ -1,12 +1,13 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1" } */
 
-foo (int a, int b)
+int foo (int a, int b)
 {
   if (a == b)
     /* This should be folded to if (1)  */
     if (a == b)
       return a + b;
+  return 0;
 }
 
 /* { dg-final { scan-tree-dump-times "Folding predicate a_.*to 1" 1 "vrp1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
index 7b8b61b..2688c71 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
@@ -11,7 +11,7 @@ inline int zero()
   return 0;
 }
 
-foo (int k, int j)
+int foo (int k, int j)
 {
   if (k >= ten())
     {
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
index cb6df0d..bc7315b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1" } */
 
-foo (int i, int j, int a)
+int foo (int i, int j, int a)
 {
   if (i >= 10)
     if (i <= 30)
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
index 6584919..d4755bd 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1-details" } */
 
-foo (int i, int *p)
+int foo (int i, int *p)
 {
   int j;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
index 193199f..8e51f07 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2 -fno-tree-fre -fdump-tree-vrp1-details" } */
 
 /* Compile with -fno-tree-fre -O2 to prevent CSEing *p.  */
-foo (int a, int *p)
+int foo (int a, int *p)
 {
   int x = *p + 2;
   int y = *p - 1;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
index 9ff0f14..639709a 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1" } */
 
-foo (int *p)
+int foo (int *p)
 {
   int x = baz ();
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp10.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp10.c
index 5a74584..416c4cf 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp10.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp10.c
@@ -3,7 +3,7 @@
 
 extern void abort (void);
 
-foo (int k, int j)
+int foo (int k, int j)
 {
   if (k >= 10)
     {
@@ -18,7 +18,7 @@ foo (int k, int j)
   return j;
 }
 
-main()
+int main()
 {
   foo (10, 3);
   return 0;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
index 591507c..aabb2c8 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
@@ -7,7 +7,7 @@ bounce (int arg)
   return arg;
 }
 
-foo (int k, int j, int z)
+int foo (int k, int j, int z)
 {
   if (k > z)
     {
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp12.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
index 1714a56..4827ad7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
@@ -1,7 +1,7 @@
 /* { dg-do link } */
 /* { dg-options -O2 } */
 
-foo (int i)
+int foo (int i)
 {
   int x;
 
@@ -17,7 +17,7 @@ foo (int i)
   return x;
 }
 
-main()
+void main()
 {
   foo (-30);
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp13.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
index 4b3afdb..74fb1ae 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
@@ -3,7 +3,7 @@
 
 extern void abort (void);
 
-foo_div (int i, int j)
+int foo_div (int i, int j)
 {
   int k;
 
@@ -112,7 +112,7 @@ foo_div (int i, int j)
 }
 
 
-foo_mult (int i, int j)
+int foo_mult (int i, int j)
 {
   int k;
 
@@ -210,7 +210,7 @@ foo_mult (int i, int j)
 }
 
 
-main()
+int main()
 {
   if (foo_div (-10, 5) != -2)
     abort ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
index a65d8a1..f298a88 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
@@ -36,7 +36,7 @@ assemble_variable (struct tree_decl decl)
   return decl.u1.a.align;
 }
 
-main ()
+int main ()
 {
   struct tree_decl decl;
   decl.u1.a.align = 13;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
index 77899a6..46bf9b9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1-details" } */
 
-blah (int code1, int code2)
+void blah (int code1, int code2)
 {
   int i;
   int n_sets;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
index 85e5b62..c9fb82e 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
@@ -18,7 +18,7 @@ struct rtx_def
   } u;
 };
 
-sss (rtx insn, int code1, int code2, int code3)
+void sss (rtx insn, int code1, int code2, int code3)
 {
   _Bool D1562;
   struct rtx_def * body;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
index fa8bbfd..32fbe33 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
@@ -4,7 +4,7 @@
 extern void abort ();
 int tree_code_length[100];
 
-blah (int code1)
+void blah (int code1)
 {
   unsigned char D18670;
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp27.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp27.c
index 09b96f9..5534bd7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp27.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp27.c
@@ -10,7 +10,7 @@ void gen_rtx_CONST_INT(long long x) {
         abort();
 }
 __attribute__((noinline))
-int alpha_expand_prologue(long frame_size)
+void alpha_expand_prologue(long frame_size)
 {
     unsigned long long a;
     int probed;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
index 7a3e726..6dc60e8 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-vrp1-blocks-vops-details" } */
 
-fu (char *p, int x)
+void fu (char *p, int x)
 {
   if (x)
    *p = 69;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c b/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c
index 9d0af1f..f932eab 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c
@@ -11,7 +11,7 @@ large_function ()
       abort ();
 }
 
-main ()
+void main ()
 {
   large_function ();
 }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c b/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
index 156cf3e..c06f3f1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized" } */
+/* { dg-options "-O1 -fdump-tree-optimized -Wno-return-type" } */
 static struct a {int magic1,b;} a;
 volatile int magic2;
 static struct b {int a,b,c,d,e,f;} magic3;
diff --git a/gcc/testsuite/gcc.dg/unused-3.c b/gcc/testsuite/gcc.dg/unused-3.c
index 1205624..1d67a11 100644
--- a/gcc/testsuite/gcc.dg/unused-3.c
+++ b/gcc/testsuite/gcc.dg/unused-3.c
@@ -5,10 +5,11 @@
 /* { dg-options "-Wunused" } */
 
 typedef short unused_type __attribute__ ((unused));
-main ()
+int main ()
 {
   short
     x   /* { dg-warning "unused variable" "unused variable warning" } */
     ;
   unused_type y;
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/varpool-1.c b/gcc/testsuite/gcc.dg/varpool-1.c
index 48f1cd3..1751abc 100644
--- a/gcc/testsuite/gcc.dg/varpool-1.c
+++ b/gcc/testsuite/gcc.dg/varpool-1.c
@@ -1,12 +1,12 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 /* { dg-final { scan-assembler-not "unnecesary_static_initialized_variable" } } */
 
 static int unnecesary_static_initialized_variable;
 static int *unnecesary_static_initialized_variable2 =
   &unnecesary_static_initialized_variable;
 static inline
-simplify_after_inline (int param1, int *param2)
+int simplify_after_inline (int param1, int *param2)
 {
   if (unnecesary_static_initialized_variable != param1)
     return unnecesary_static_initialized_variable;
@@ -14,7 +14,7 @@ simplify_after_inline (int param1, int *param2)
     return unnecesary_static_initialized_variable;
 }
 
-main ()
+int main ()
 {
   return simplify_after_inline (unnecesary_static_initialized_variable,
 				unnecesary_static_initialized_variable2) +
diff --git a/gcc/testsuite/gcc.dg/vect/O3-pr49087.c b/gcc/testsuite/gcc.dg/vect/O3-pr49087.c
index c897fbc..d533ca3 100644
--- a/gcc/testsuite/gcc.dg/vect/O3-pr49087.c
+++ b/gcc/testsuite/gcc.dg/vect/O3-pr49087.c
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 
-static char func2() { }
+static char func2() { return 'a'; }
 
 struct S0
 {
@@ -32,6 +32,7 @@ foo (int arg)
 	  *ptr = func2 () ^ s0.t;
 	}
     }
+    return 0;
 }
 
 /* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr26359.c b/gcc/testsuite/gcc.dg/vect/pr26359.c
index 7a0cb0d..145dc28 100644
--- a/gcc/testsuite/gcc.dg/vect/pr26359.c
+++ b/gcc/testsuite/gcc.dg/vect/pr26359.c
@@ -4,7 +4,7 @@
 
 int a[256], b[256], c[256];
 
-foo () {
+void foo () {
   int i;
 
   for (i=0; i<256; i++){
diff --git a/gcc/testsuite/gcc.dg/vect/pr28952.c b/gcc/testsuite/gcc.dg/vect/pr28952.c
index 7305e60..5dbd470 100644
--- a/gcc/testsuite/gcc.dg/vect/pr28952.c
+++ b/gcc/testsuite/gcc.dg/vect/pr28952.c
@@ -15,7 +15,7 @@ struct packet_spaceship_info
 {
   char structure[32 + 1];
 };
-send_spaceship_info (void)
+void send_spaceship_info (void)
 {
   int j;
   struct player *pplayer;
diff --git a/gcc/testsuite/gcc.dg/vect/pr31041.c b/gcc/testsuite/gcc.dg/vect/pr31041.c
index 361b358..36131d9 100644
--- a/gcc/testsuite/gcc.dg/vect/pr31041.c
+++ b/gcc/testsuite/gcc.dg/vect/pr31041.c
@@ -9,7 +9,7 @@ struct UNewTrie
   int index[(0x110000 >> 1)];
 };
 typedef struct UNewTrie UNewTrie;
-utrie_open_3_4 ()
+void utrie_open_3_4 ()
 {
   UNewTrie *trie;
   int i, j;
diff --git a/gcc/testsuite/gcc.dg/vect/pr32216.c b/gcc/testsuite/gcc.dg/vect/pr32216.c
index cf27441..e7737ad 100644
--- a/gcc/testsuite/gcc.dg/vect/pr32216.c
+++ b/gcc/testsuite/gcc.dg/vect/pr32216.c
@@ -3,7 +3,7 @@
 
 unsigned int wlookup2[203];
 
-SetSoundVariables (int x)
+void SetSoundVariables (int x)
 {
   for (x = 1; x < 32; x++)
   {
diff --git a/gcc/testsuite/gcc.dg/vect/pr32224.c b/gcc/testsuite/gcc.dg/vect/pr32224.c
index 6f3a36b..fe93650 100644
--- a/gcc/testsuite/gcc.dg/vect/pr32224.c
+++ b/gcc/testsuite/gcc.dg/vect/pr32224.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 typedef unsigned long int *mp_ptr;
 typedef const unsigned long int *mp_srcptr;
-gmpz_export (void *data)
+void gmpz_export (void *data)
 {
   mp_srcptr zp;
   int count, i;
diff --git a/gcc/testsuite/gcc.dg/vect/pr32366.c b/gcc/testsuite/gcc.dg/vect/pr32366.c
index e83d579..a5cd487 100644
--- a/gcc/testsuite/gcc.dg/vect/pr32366.c
+++ b/gcc/testsuite/gcc.dg/vect/pr32366.c
@@ -3,7 +3,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_float } */
 
-stream_test (void)
+void stream_test (void)
 {
   static float input[20];
   int k;
diff --git a/gcc/testsuite/gcc.dg/vect/pr43430-2.c b/gcc/testsuite/gcc.dg/vect/pr43430-2.c
index 16f53da..d059f9e 100644
--- a/gcc/testsuite/gcc.dg/vect/pr43430-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr43430-2.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_int } */
 typedef unsigned char uint8_t;
-vsad16_c (void *c, uint8_t * s1, uint8_t * s2, int stride, int h)
+int vsad16_c (void *c, uint8_t * s1, uint8_t * s2, int stride, int h)
 {
   int score = 0;
   int x, y;
diff --git a/gcc/testsuite/gcc.dg/vect/pr43842.c b/gcc/testsuite/gcc.dg/vect/pr43842.c
index 593404f..8e0074e 100644
--- a/gcc/testsuite/gcc.dg/vect/pr43842.c
+++ b/gcc/testsuite/gcc.dg/vect/pr43842.c
@@ -30,7 +30,7 @@ int16_t g_4;
 int8_t g_4_8;
 uint32_t g_9[1];
 uint32_t g_9_8[2];
-int161 (void)
+void int161 (void)
 {
   int32_t l_2;
 
@@ -38,7 +38,7 @@ int161 (void)
     g_9[0] ^= safe_rshift_func_int16_t_s_u (g_4, 1);
 }
 
-int81 (void)
+int int81 (void)
 {
   int32_t l_2;
 
diff --git a/gcc/testsuite/gcc.dg/vect/pr46052.c b/gcc/testsuite/gcc.dg/vect/pr46052.c
index c32a93d..1ad5f65 100644
--- a/gcc/testsuite/gcc.dg/vect/pr46052.c
+++ b/gcc/testsuite/gcc.dg/vect/pr46052.c
@@ -19,6 +19,7 @@ void foo (int n)
 
 static inline char bar1 (void)
 {
+	return 'a';
 }
 
 void foo1 (int n)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
index 4c0f532..b818b52 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
@@ -10,7 +10,7 @@ void sbar (short *);
 
 /* multiple loops */
 
-foo (int n)
+void foo (int n)
 {
   float a[N+1];
   float b[N];
diff --git a/gcc/testsuite/gcc.dg/vect/vect-1.c b/gcc/testsuite/gcc.dg/vect/vect-1.c
index 04392ea..8642bf3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-1.c
@@ -10,7 +10,7 @@ void sbar (short *);
 
 /* multiple loops */
 
-foo (int n)
+void foo (int n)
 {
   float a[N+1];
   float b[N];
diff --git a/gcc/testsuite/gcc.dg/vect/vect-93.c b/gcc/testsuite/gcc.dg/vect/vect-93.c
index 65403eb..d0143a3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-93.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-93.c
@@ -7,7 +7,7 @@
 
 
 __attribute__ ((noinline))
-main1 (float *pa)
+int main1 (float *pa)
 {
   int i;
 
diff --git a/gcc/testsuite/gcc.dg/vla-22.c b/gcc/testsuite/gcc.dg/vla-22.c
index f924650..2a1c4d5 100644
--- a/gcc/testsuite/gcc.dg/vla-22.c
+++ b/gcc/testsuite/gcc.dg/vla-22.c
@@ -13,6 +13,7 @@ foo (int i)
 
   s.ar[0][0] = 0;
   bar (&s.ar[0][0]);
+  return 0;
 }
 
 void
diff --git a/gcc/testsuite/gcc.dg/webizer.c b/gcc/testsuite/gcc.dg/webizer.c
index 4f03037..913ab45 100644
--- a/gcc/testsuite/gcc.dg/webizer.c
+++ b/gcc/testsuite/gcc.dg/webizer.c
@@ -18,7 +18,7 @@ int block = 0;
 double ckt_size_factor ;
 
 __attribute__ ((noinline))
-configure2()
+void configure2()
 {
   block = 0 ;
   for( row = 1 ; row <= numRows ; row++ ) {
@@ -29,8 +29,9 @@ configure2()
   }
 }
 
-main()
+int main()
 {
   configure2();
   __builtin_exit (0);
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/winline-9.c b/gcc/testsuite/gcc.dg/winline-9.c
index fddf5c6..3523fa8 100644
--- a/gcc/testsuite/gcc.dg/winline-9.c
+++ b/gcc/testsuite/gcc.dg/winline-9.c
@@ -8,15 +8,17 @@ int aa (void)
 {
   char t[10];
   test(t);
+  return 0;
 }
 static inline
 int bb (void) /* { dg-warning "large-stack-frame" "" } */
 {
   char t[100];
   test(t);
+  return 0;
 }
 
-t()
+void t()
 {
   if (a)
     aa();
diff --git a/gcc/testsuite/gcc.dg/wtr-func-def-1.c b/gcc/testsuite/gcc.dg/wtr-func-def-1.c
index 049e05b..c16b1d1 100644
--- a/gcc/testsuite/gcc.dg/wtr-func-def-1.c
+++ b/gcc/testsuite/gcc.dg/wtr-func-def-1.c
@@ -2,7 +2,7 @@
    Note, gcc should omit these warnings in system header files.
    Origin: Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 6/30/2002.  */
 /* { dg-do compile } */
-/* { dg-options "-Wtraditional" } */
+/* { dg-options "-Wtraditional -Wno-return-type" } */
 
 /* Test some simple cases.  */
 
diff --git a/gcc/testsuite/gcc.target/i386/20040112-1.c b/gcc/testsuite/gcc.target/i386/20040112-1.c
index 168fd2f..842af05 100644
--- a/gcc/testsuite/gcc.target/i386/20040112-1.c
+++ b/gcc/testsuite/gcc.target/i386/20040112-1.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
 /* { dg-final { scan-assembler "testb" } } */
-ftn (char *sp)
+void ftn (char *sp)
 {
   char status;
 
diff --git a/gcc/testsuite/gcc.target/i386/avxfp-1.c b/gcc/testsuite/gcc.target/i386/avxfp-1.c
index 70bc8f1..afe7c14 100644
--- a/gcc/testsuite/gcc.target/i386/avxfp-1.c
+++ b/gcc/testsuite/gcc.target/i386/avxfp-1.c
@@ -3,13 +3,13 @@
 /* { dg-final { scan-assembler "vmaxsd" } } */
 /* { dg-final { scan-assembler "vminsd" } } */
 double x;
-t()
+void t()
 {
   x=x>5?x:5;
 }
 
 double x;
-q()
+void q()
 {
   x=x<5?x:5;
 }
diff --git a/gcc/testsuite/gcc.target/i386/avxfp-2.c b/gcc/testsuite/gcc.target/i386/avxfp-2.c
index c34a1bd..2df95db 100644
--- a/gcc/testsuite/gcc.target/i386/avxfp-2.c
+++ b/gcc/testsuite/gcc.target/i386/avxfp-2.c
@@ -3,13 +3,13 @@
 /* { dg-final { scan-assembler "vmaxsd" } } */
 /* { dg-final { scan-assembler "vminsd" } } */
 double x;
-q()
+void q()
 {
   x=x<5?5:x;
 }
 
 double x;
-q1()
+void q1()
 {
   x=x>5?5:x;
 }
diff --git a/gcc/testsuite/gcc.target/i386/cadd.c b/gcc/testsuite/gcc.target/i386/cadd.c
index 7a39c67..64fa45c 100644
--- a/gcc/testsuite/gcc.target/i386/cadd.c
+++ b/gcc/testsuite/gcc.target/i386/cadd.c
@@ -6,7 +6,7 @@ extern void abort (void);
 
 /* Conditional increment is best done using sbb $-1, val.  */
 int t[]={0,0,0,0,1,1,1,1,1,1};
-q()
+void q()
 {
   int sum=0;
   int i;
@@ -16,7 +16,7 @@ q()
   if (sum != 6)
     abort ();
 }
-main()
+void main()
 {
   int i;
   for (i=0;i<10000000;i++)
diff --git a/gcc/testsuite/gcc.target/i386/cmov2.c b/gcc/testsuite/gcc.target/i386/cmov2.c
index 2b7c696..b4902ac 100644
--- a/gcc/testsuite/gcc.target/i386/cmov2.c
+++ b/gcc/testsuite/gcc.target/i386/cmov2.c
@@ -3,7 +3,7 @@
 /* { dg-final { scan-assembler "sbb" } } */
 
 /* This conditional move is fastest to be done using sbb.  */
-t(unsigned int a, unsigned int b)
+int t(unsigned int a, unsigned int b)
 {
   return (a<=b?5:-5);
 }
diff --git a/gcc/testsuite/gcc.target/i386/cmov3.c b/gcc/testsuite/gcc.target/i386/cmov3.c
index 34df0aa..712d294 100644
--- a/gcc/testsuite/gcc.target/i386/cmov3.c
+++ b/gcc/testsuite/gcc.target/i386/cmov3.c
@@ -3,7 +3,7 @@
 /* { dg-final { scan-assembler "cmov\[^3\]" } } */
 
 /* This conditional move is fastest to be done using cmov.  */
-t(int a, int b)
+int t(int a, int b)
 {
   return (a<=b?5:-5);
 }
diff --git a/gcc/testsuite/gcc.target/i386/cmov4.c b/gcc/testsuite/gcc.target/i386/cmov4.c
index 6a955ea..b5d17dc 100644
--- a/gcc/testsuite/gcc.target/i386/cmov4.c
+++ b/gcc/testsuite/gcc.target/i386/cmov4.c
@@ -6,7 +6,7 @@
 int ARCHnodes;
 int *nodekind;
 float *nodekindf;
-t()
+void t()
 {
 int i;
 /* Redefine nodekind to be 1 for all surface nodes */
diff --git a/gcc/testsuite/gcc.target/i386/cold-attribute-1.c b/gcc/testsuite/gcc.target/i386/cold-attribute-1.c
index db81ee8..df1fd5a 100644
--- a/gcc/testsuite/gcc.target/i386/cold-attribute-1.c
+++ b/gcc/testsuite/gcc.target/i386/cold-attribute-1.c
@@ -3,11 +3,11 @@
 #include <string.h>
 static inline
 __attribute__ ((cold))
-my_cold_memset (void *a, int b,int c)
+void my_cold_memset (void *a, int b,int c)
 {
   memset (a,b,c);
 }
-t(void *a,int b,int c)
+void t(void *a,int b,int c)
 {
   if (a)
     my_cold_memset (a,b,40);
diff --git a/gcc/testsuite/gcc.target/i386/cold-attribute-2.c b/gcc/testsuite/gcc.target/i386/cold-attribute-2.c
index 4b61b9d..438bf83 100644
--- a/gcc/testsuite/gcc.target/i386/cold-attribute-2.c
+++ b/gcc/testsuite/gcc.target/i386/cold-attribute-2.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 --param=builtin-expect-probability=100" } */
 #include <string.h>
-t(int c)
+int t(int c)
 {
   if (__builtin_expect (c, 0))
     {
diff --git a/gcc/testsuite/gcc.target/i386/combine-mul.c b/gcc/testsuite/gcc.target/i386/combine-mul.c
index 8a2e862..7021a13 100644
--- a/gcc/testsuite/gcc.target/i386/combine-mul.c
+++ b/gcc/testsuite/gcc.target/i386/combine-mul.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 /* { dg-require-effective-target nonpic } */
 /* { dg-final { scan-assembler-not "12345" } } */
 
diff --git a/gcc/testsuite/gcc.target/i386/cvt-1.c b/gcc/testsuite/gcc.target/i386/cvt-1.c
index 9535725..d6ea9b2 100644
--- a/gcc/testsuite/gcc.target/i386/cvt-1.c
+++ b/gcc/testsuite/gcc.target/i386/cvt-1.c
@@ -5,7 +5,7 @@
 int a,a1;
 double b;
 float b1;
-t()
+void t()
 {
 	a=b;
 	a1=b1;
diff --git a/gcc/testsuite/gcc.target/i386/fpcvt-1.c b/gcc/testsuite/gcc.target/i386/fpcvt-1.c
index 1c3b9b8..4b029ac 100644
--- a/gcc/testsuite/gcc.target/i386/fpcvt-1.c
+++ b/gcc/testsuite/gcc.target/i386/fpcvt-1.c
@@ -2,7 +2,8 @@
 /* { dg-options "-O2 -msse2 -march=k8" } */
 /* { dg-final { scan-assembler-not "cvtss2sd" } } */
 float a,b;
-main()
+int main()
 {
   a=b*3.0;
+  return 0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/fpcvt-2.c b/gcc/testsuite/gcc.target/i386/fpcvt-2.c
index 066d843..7240b3b 100644
--- a/gcc/testsuite/gcc.target/i386/fpcvt-2.c
+++ b/gcc/testsuite/gcc.target/i386/fpcvt-2.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2 -msse2 -march=k8" } */
 /* { dg-final { scan-assembler-not "cvtss2sd" } } */
 float a,b;
-main()
+int main()
 {
 	return a<0.0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/fpcvt-3.c b/gcc/testsuite/gcc.target/i386/fpcvt-3.c
index 569d21a..ef3f328 100644
--- a/gcc/testsuite/gcc.target/i386/fpcvt-3.c
+++ b/gcc/testsuite/gcc.target/i386/fpcvt-3.c
@@ -3,7 +3,7 @@
 /* { dg-final { scan-assembler-not "cvtss2sd" } } */
 extern double fabs (double);
 float a,b;
-main()
+void main()
 {
 	a=fabs(b)+1.0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/local.c b/gcc/testsuite/gcc.target/i386/local.c
index 4423001..d209a6f 100644
--- a/gcc/testsuite/gcc.target/i386/local.c
+++ b/gcc/testsuite/gcc.target/i386/local.c
@@ -4,7 +4,7 @@
 /* { dg-final { scan-assembler "magic\[^\\n\]*(edi|ecx)" { target { ! { ia32 } } } } } */
 
 /* Verify that local calling convention is used.  */
-static t(int) __attribute__ ((noinline));
+static int t(int) __attribute__ ((noinline));
 extern volatile int i;
 
 void m(void)
@@ -12,7 +12,8 @@ void m(void)
 	t(i);
 }
 
-static t(int a)
+static int t(int a)
 {
 	asm("magic %0"::"g"(a));
+	return 0;
 }
diff --git a/gcc/testsuite/gcc.target/i386/memcpy-2.c b/gcc/testsuite/gcc.target/i386/memcpy-2.c
index 56cdd56..82b76fa 100644
--- a/gcc/testsuite/gcc.target/i386/memcpy-2.c
+++ b/gcc/testsuite/gcc.target/i386/memcpy-2.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2" } */
 void *a;
 void *b;
-t(unsigned int c)
+void t(unsigned int c)
 {
   if (c<10)
     __builtin_memcpy (a,b,c+1);
diff --git a/gcc/testsuite/gcc.target/i386/memcpy-3.c b/gcc/testsuite/gcc.target/i386/memcpy-3.c
index b9ea9c2..b949583 100644
--- a/gcc/testsuite/gcc.target/i386/memcpy-3.c
+++ b/gcc/testsuite/gcc.target/i386/memcpy-3.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2" } */
 void *a;
 void *b;
-t(int c)
+void t(int c)
 {
   if (c<10)
     __builtin_memcpy (a,b,c);
diff --git a/gcc/testsuite/gcc.target/i386/memset-1.c b/gcc/testsuite/gcc.target/i386/memset-1.c
index eaf3230..721851a 100644
--- a/gcc/testsuite/gcc.target/i386/memset-1.c
+++ b/gcc/testsuite/gcc.target/i386/memset-1.c
@@ -36,7 +36,7 @@ static union {
 
 char A = 'A';
 
-main ()
+int main ()
 {
   int off, len, i;
   char *p, *q;
diff --git a/gcc/testsuite/gcc.target/i386/minmax-1.c b/gcc/testsuite/gcc.target/i386/minmax-1.c
index ca7fb6a..e6ef022 100644
--- a/gcc/testsuite/gcc.target/i386/minmax-1.c
+++ b/gcc/testsuite/gcc.target/i386/minmax-1.c
@@ -3,7 +3,7 @@
 /* { dg-final { scan-assembler "test" } } */
 /* { dg-final { scan-assembler-not "cmp" } } */
 #define max(a,b) (((a) > (b))? (a) : (b))
-t(int a)
+int t(int a)
 {
   return (max(a,1));
 }
diff --git a/gcc/testsuite/gcc.target/i386/minmax-2.c b/gcc/testsuite/gcc.target/i386/minmax-2.c
index 2021aaa..a40f83e 100644
--- a/gcc/testsuite/gcc.target/i386/minmax-2.c
+++ b/gcc/testsuite/gcc.target/i386/minmax-2.c
@@ -3,7 +3,7 @@
 /* { dg-final { scan-assembler "test" } } */
 /* { dg-final { scan-assembler-not "cmp" } } */
 #define max(a,b) (((a) > (b))? (a) : (b))
-t(unsigned int a)
+int t(unsigned int a)
 {
   return (max(a,1));
 }
diff --git a/gcc/testsuite/gcc.target/i386/pr36786.c b/gcc/testsuite/gcc.target/i386/pr36786.c
index 6b62e80..277ca41 100644
--- a/gcc/testsuite/gcc.target/i386/pr36786.c
+++ b/gcc/testsuite/gcc.target/i386/pr36786.c
@@ -4,7 +4,7 @@ typedef int DItype __attribute__ ((mode (DI)));
 typedef unsigned int UDItype __attribute__ ((mode (DI)));
 typedef int TItype __attribute__ ((mode (TI)));
 
-__floattisf (TItype u)
+void __floattisf (TItype u)
 {
   DItype hi = u >> (8 * 8);
   UDItype count, shift;
diff --git a/gcc/testsuite/gcc.target/i386/pr45352-2.c b/gcc/testsuite/gcc.target/i386/pr45352-2.c
index 52e5522..016bc78 100644
--- a/gcc/testsuite/gcc.target/i386/pr45352-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr45352-2.c
@@ -47,7 +47,7 @@ static int bitstream_init (picture_t * picture, void *start)
   picture->bitstream_ptr = start;
   return (int) (size_t) start;
 }
-static slice_xvmc_init (picture_t * picture, int code)
+static void slice_xvmc_init (picture_t * picture, int code)
 {
   int offset;
   struct vo_frame_s *forward_reference_frame;
diff --git a/gcc/testsuite/gcc.target/i386/pr56022.c b/gcc/testsuite/gcc.target/i386/pr56022.c
index db43162..5fb2171 100644
--- a/gcc/testsuite/gcc.target/i386/pr56022.c
+++ b/gcc/testsuite/gcc.target/i386/pr56022.c
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
-/* { dg-options "-mavx" } */
+/* { dg-options "-mavx -Wno-return-type" } */
 
 typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
 __attribute__((target("no-avx"))) static int currentImplementationSupported()
-{}
+{ return 0; }
 __m256 foo0(__m256 a) {}
diff --git a/gcc/testsuite/gcc.target/i386/pr57003.c b/gcc/testsuite/gcc.target/i386/pr57003.c
index dfa6b8b..5bb0cdf 100644
--- a/gcc/testsuite/gcc.target/i386/pr57003.c
+++ b/gcc/testsuite/gcc.target/i386/pr57003.c
@@ -22,7 +22,7 @@ baz (unsigned long x)
 }
 
 __attribute__ ((ms_abi, noinline, noclone))
-foo (void)
+void foo (void)
 {
   unsigned d;
   unsigned short *e;
diff --git a/gcc/testsuite/gcc.target/i386/pr60902.c b/gcc/testsuite/gcc.target/i386/pr60902.c
index b81dcd7..37fc267 100644
--- a/gcc/testsuite/gcc.target/i386/pr60902.c
+++ b/gcc/testsuite/gcc.target/i386/pr60902.c
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -Wno-return-type" } */
 extern void abort ();
 extern void exit (int);
 
diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c
index 2641b80..6c0c9b2 100644
--- a/gcc/testsuite/gcc.target/i386/sse-14.c
+++ b/gcc/testsuite/gcc.target/i386/sse-14.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -Wno-return-type" } */
 
 #include <mm_malloc.h>
 
diff --git a/gcc/testsuite/gcc.target/i386/sse-19.c b/gcc/testsuite/gcc.target/i386/sse-19.c
index 3025567..ca04e3e 100644
--- a/gcc/testsuite/gcc.target/i386/sse-19.c
+++ b/gcc/testsuite/gcc.target/i386/sse-19.c
@@ -13,7 +13,7 @@ __m128i bar (char x) {
   return _mm_set_epi8 (x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x);
 }
 
-main() {
+int main() {
   int i, j;
   union u { __m128i v; char c[16]; };
   union u x, y;
diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c
index 26b805d..32c56ac 100644
--- a/gcc/testsuite/gcc.target/i386/sse-22.c
+++ b/gcc/testsuite/gcc.target/i386/sse-22.c
@@ -1,6 +1,6 @@
 /* Same as sse-14, except converted to use #pragma GCC option.  */
 /* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -Wno-return-type" } */
 
 #include <mm_malloc.h>
 
diff --git a/gcc/testsuite/gcc.target/i386/sse-22a.c b/gcc/testsuite/gcc.target/i386/sse-22a.c
index 688908f..15ece9c 100644
--- a/gcc/testsuite/gcc.target/i386/sse-22a.c
+++ b/gcc/testsuite/gcc.target/i386/sse-22a.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -Wno-return-type" } */
 
 #define DIFFERENT_PRAGMAS
 
diff --git a/gcc/testsuite/gcc.target/i386/sse4a-extract.c b/gcc/testsuite/gcc.target/i386/sse4a-extract.c
index 5fb190e..4976012 100644
--- a/gcc/testsuite/gcc.target/i386/sse4a-extract.c
+++ b/gcc/testsuite/gcc.target/i386/sse4a-extract.c
@@ -37,10 +37,10 @@ sse4a_test_extrqi (long long in)
   return (v_out.i[0]);
 }
 
-static chk (long long i1, long long i2)
+int static chk (long long i1, long long i2)
 {
   int n_fails =0;
-  if (i1 != i2) 
+  if (i1 != i2)
     n_fails +=1;
   return n_fails;
 }
diff --git a/gcc/testsuite/gcc.target/i386/sse4a-insert.c b/gcc/testsuite/gcc.target/i386/sse4a-insert.c
index c1bd100..7d9ec48 100644
--- a/gcc/testsuite/gcc.target/i386/sse4a-insert.c
+++ b/gcc/testsuite/gcc.target/i386/sse4a-insert.c
@@ -38,7 +38,7 @@ sse4a_test_inserti (long long in1, long long in2)
   return (v_out.i[0]);  
 }
 
-static chk (long long i1, long long i2)
+static int chk (long long i1, long long i2)
 {
   int n_fails =0;
   if (i1 != i2) 
diff --git a/gcc/testsuite/gcc.target/i386/ssefp-1.c b/gcc/testsuite/gcc.target/i386/ssefp-1.c
index 621e362..1129084 100644
--- a/gcc/testsuite/gcc.target/i386/ssefp-1.c
+++ b/gcc/testsuite/gcc.target/i386/ssefp-1.c
@@ -3,13 +3,13 @@
 /* { dg-final { scan-assembler "maxsd" } } */
 /* { dg-final { scan-assembler "minsd" } } */
 double x;
-t()
+void t()
 {
   x=x>5?x:5;
 }
 
 double x;
-q()
+void q()
 {
   x=x<5?x:5;
 }
diff --git a/gcc/testsuite/gcc.target/i386/ssefp-2.c b/gcc/testsuite/gcc.target/i386/ssefp-2.c
index a6caee3..b62847c 100644
--- a/gcc/testsuite/gcc.target/i386/ssefp-2.c
+++ b/gcc/testsuite/gcc.target/i386/ssefp-2.c
@@ -3,13 +3,13 @@
 /* { dg-final { scan-assembler "maxsd" } } */
 /* { dg-final { scan-assembler "minsd" } } */
 double x;
-q()
+void q()
 {
   x=x<5?5:x;
 }
 
 double x;
-q1()
+void q1()
 {
   x=x>5?5:x;
 }
diff --git a/gcc/testsuite/gcc.target/i386/testimm-10.c b/gcc/testsuite/gcc.target/i386/testimm-10.c
index d744e1c..b69a6b4 100644
--- a/gcc/testsuite/gcc.target/i386/testimm-10.c
+++ b/gcc/testsuite/gcc.target/i386/testimm-10.c
@@ -142,7 +142,7 @@ test8bit (void)
 
 }
 
-test1bit (void) {
+void test1bit (void) {
   m256d = _mm512_extractf64x4_pd (m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */
   m256d = _mm512_mask_extractf64x4_pd (m256d, mmask8, m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */
   m256d = _mm512_maskz_extractf64x4_pd (mmask8, m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */
@@ -160,7 +160,7 @@ test1bit (void) {
   m512i = _mm512_maskz_inserti64x4 (mmask8, m512i, m256i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */
 }
 
-test2bit (void) {
+void test2bit (void) {
   m128  = _mm512_extractf32x4_ps(m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */
   m128  = _mm512_mask_extractf32x4_ps(m128, mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */
   m128  = _mm512_maskz_extractf32x4_ps(mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */
@@ -178,7 +178,7 @@ test2bit (void) {
   m512i = _mm512_maskz_inserti32x4 (mmask16, m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */
 }
 
-test4bit (void) {
+void test4bit (void) {
   m512d = _mm512_getmant_pd (m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */
   m512d = _mm512_mask_getmant_pd (m512d, mmask8, m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */
   m512d = _mm512_maskz_getmant_pd (mmask8, m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */
diff --git a/gcc/testsuite/gcc.target/i386/vectorize4-avx.c b/gcc/testsuite/gcc.target/i386/vectorize4-avx.c
index 33e9918..3371b3565 100644
--- a/gcc/testsuite/gcc.target/i386/vectorize4-avx.c
+++ b/gcc/testsuite/gcc.target/i386/vectorize4-avx.c
@@ -3,7 +3,7 @@
 
 
 extern double sqrt (double __x);
-calc_freq (int *dest)
+void calc_freq (int *dest)
 {
   float tmp_out[257];
   int i;
diff --git a/gcc/testsuite/gcc.target/i386/xop-haddX.c b/gcc/testsuite/gcc.target/i386/xop-haddX.c
index 7d3220b..b6b3975 100644
--- a/gcc/testsuite/gcc.target/i386/xop-haddX.c
+++ b/gcc/testsuite/gcc.target/i386/xop-haddX.c
@@ -58,6 +58,7 @@ check_sbyte2word ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static int 
@@ -114,6 +115,7 @@ check_sword2dword ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static int 
@@ -150,6 +152,7 @@ check_dword2qword ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static void
diff --git a/gcc/testsuite/gcc.target/i386/xop-hadduX.c b/gcc/testsuite/gcc.target/i386/xop-hadduX.c
index 9c7ea9a..acc444b 100644
--- a/gcc/testsuite/gcc.target/i386/xop-hadduX.c
+++ b/gcc/testsuite/gcc.target/i386/xop-hadduX.c
@@ -58,6 +58,7 @@ check_byte2word ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static int 
@@ -114,6 +115,7 @@ check_word2dword ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static int 
@@ -150,6 +152,7 @@ check_dword2qword ()
 	    check_fails++;	
 	}
     }
+    return 0;
 }
 
 static void
diff --git a/gcc/testsuite/gcc.target/i386/xop-hsubX.c b/gcc/testsuite/gcc.target/i386/xop-hsubX.c
index f0fa9b3..5291c3a 100644
--- a/gcc/testsuite/gcc.target/i386/xop-hsubX.c
+++ b/gcc/testsuite/gcc.target/i386/xop-hsubX.c
@@ -58,6 +58,7 @@ check_sbyte2word ()
 	    check_fails++;	
 	}
     }
+return 0;
 }
 
 static int
@@ -75,6 +76,7 @@ check_sword2dword ()
 	    check_fails++;	
 	}
     }
+return 0;
 }
 
 static int
@@ -92,6 +94,7 @@ check_dword2qword ()
 	    check_fails++;	
 	}
     }
+return 0;
 }
 
 static void
diff --git a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90 b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
index 462b121..cbf4709 100644
--- a/gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/51953
 !
diff --git a/gcc/testsuite/gfortran.dg/array_function_3.f90 b/gcc/testsuite/gfortran.dg/array_function_3.f90
index 3d0ee91..811c470 100644
--- a/gcc/testsuite/gfortran.dg/array_function_3.f90
+++ b/gcc/testsuite/gfortran.dg/array_function_3.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 
 ! PR fortran/36167
 ! This used to cause an ICE because of a missing array spec after interface
diff --git a/gcc/testsuite/gfortran.dg/associate_12.f90 b/gcc/testsuite/gfortran.dg/associate_12.f90
index 1ead1e7..9aacbd5 100644
--- a/gcc/testsuite/gfortran.dg/associate_12.f90
+++ b/gcc/testsuite/gfortran.dg/associate_12.f90
@@ -14,6 +14,7 @@ module assoc_err_m
 contains
   real function func_1 (this)
     class(foo_t), intent(in) :: this
+    func_1 = 42
   end function
 end module
 
diff --git a/gcc/testsuite/gfortran.dg/assumed_rank_12.f90 b/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
index f947f49..cc0028b 100644
--- a/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
+++ b/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
@@ -1,5 +1,5 @@
 ! { dg-do run }
-! { dg-options "-fdump-tree-original" }
+! { dg-options "-fdump-tree-original -Wno-return-type" }
 !
 ! PR fortran/48820
 !
@@ -13,6 +13,7 @@ subroutine sub(x)
 end subroutine sub
 function f() result(res)
   integer, pointer :: res
+  res = 42
 end function f
 end
 
diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 b/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
index 32cf07a..7302e34 100644
--- a/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
+++ b/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 58182: [4.9 Regression] ICE with global binding name used as a FUNCTION
 !
diff --git a/gcc/testsuite/gfortran.dg/block_11.f90 b/gcc/testsuite/gfortran.dg/block_11.f90
index 6fe244d..6a8daea 100644
--- a/gcc/testsuite/gfortran.dg/block_11.f90
+++ b/gcc/testsuite/gfortran.dg/block_11.f90
@@ -25,7 +25,7 @@ contains
 
   double precision function testFunc()
     implicit none
-    return
+    testFunc=42
   end function testFunc
 end module testMod
 
@@ -43,6 +43,7 @@ contains
   end subroutine testSub
 
   double precision function testFunc()
+      testFunc = 42
   end function testFunc
 end module testMod2
 
diff --git a/gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90 b/gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
index 7319988..624dd95 100644
--- a/gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
+++ b/gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
@@ -1,5 +1,5 @@
 ! { dg-do run }
-! { dg-options "-fbounds-check" }
+! { dg-options "-fbounds-check -Wno-return-type" }
 !
 ! PR fortran/40383
 ! Gave before a bogus out of bounds.
diff --git a/gcc/testsuite/gfortran.dg/class_13.f03 b/gcc/testsuite/gfortran.dg/class_13.f03
index d83a856..04a5963 100644
--- a/gcc/testsuite/gfortran.dg/class_13.f03
+++ b/gcc/testsuite/gfortran.dg/class_13.f03
@@ -31,6 +31,7 @@ contains
     select type (a)
     class is (trivial_vector_type)
     end select
+    my_dot_v_v = 42
   end function
 end module concrete_inner_product
  
diff --git a/gcc/testsuite/gfortran.dg/class_15.f03 b/gcc/testsuite/gfortran.dg/class_15.f03
index 1fc7ce4..3eaa8d2 100644
--- a/gcc/testsuite/gfortran.dg/class_15.f03
+++ b/gcc/testsuite/gfortran.dg/class_15.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 42274: [fortran-dev Regression] ICE: segmentation fault
 !
diff --git a/gcc/testsuite/gfortran.dg/class_16.f03 b/gcc/testsuite/gfortran.dg/class_16.f03
index 136097b..24b8b23 100644
--- a/gcc/testsuite/gfortran.dg/class_16.f03
+++ b/gcc/testsuite/gfortran.dg/class_16.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 43896: [fortran-dev Regression] ICE in gfc_conv_variable, at fortran/trans-expr.c:551
 !
diff --git a/gcc/testsuite/gfortran.dg/class_23.f03 b/gcc/testsuite/gfortran.dg/class_23.f03
index e1e3517..8d1c6c2 100644
--- a/gcc/testsuite/gfortran.dg/class_23.f03
+++ b/gcc/testsuite/gfortran.dg/class_23.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 42051: [OOP] ICE on array-valued function with CLASS formal argument
 !
diff --git a/gcc/testsuite/gfortran.dg/class_32.f90 b/gcc/testsuite/gfortran.dg/class_32.f90
index c388be4..e67f2c1 100644
--- a/gcc/testsuite/gfortran.dg/class_32.f90
+++ b/gcc/testsuite/gfortran.dg/class_32.f90
@@ -25,6 +25,7 @@ CONTAINS
   FUNCTION get(this)
     CLASS(t) :: this
     REAL, DIMENSION(this%n) :: get
+    get = 2
   END FUNCTION
 
   SUBROUTINE destroy(this)
diff --git a/gcc/testsuite/gfortran.dg/class_41.f03 b/gcc/testsuite/gfortran.dg/class_41.f03
index 5c24fe1..8453dc9 100644
--- a/gcc/testsuite/gfortran.dg/class_41.f03
+++ b/gcc/testsuite/gfortran.dg/class_41.f03
@@ -14,6 +14,7 @@ contains
   function a_string(this) result(form)
     class(a_type),intent(in)::this
     character(max(1,this%length))::form
+    form = 'a'
   end function a_string
   subroutine b_sub(this)
     class(b_type),intent(inout),target::this
diff --git a/gcc/testsuite/gfortran.dg/class_result_2.f90 b/gcc/testsuite/gfortran.dg/class_result_2.f90
index be37a19..a038670 100644
--- a/gcc/testsuite/gfortran.dg/class_result_2.f90
+++ b/gcc/testsuite/gfortran.dg/class_result_2.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 59414: [OOP] Class array pointers: compile error on valid code (Different ranks in pointer assignment)
 !
diff --git a/gcc/testsuite/gfortran.dg/constructor_1.f90 b/gcc/testsuite/gfortran.dg/constructor_1.f90
index 7b995f5..fdbe5a7 100644
--- a/gcc/testsuite/gfortran.dg/constructor_1.f90
+++ b/gcc/testsuite/gfortran.dg/constructor_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/39427
 !
diff --git a/gcc/testsuite/gfortran.dg/constructor_5.f90 b/gcc/testsuite/gfortran.dg/constructor_5.f90
index 197e082..7d189b2 100644
--- a/gcc/testsuite/gfortran.dg/constructor_5.f90
+++ b/gcc/testsuite/gfortran.dg/constructor_5.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/39427
 !
diff --git a/gcc/testsuite/gfortran.dg/deferred_type_param_3.f90 b/gcc/testsuite/gfortran.dg/deferred_type_param_3.f90
index 809738d..29bc8f7 100644
--- a/gcc/testsuite/gfortran.dg/deferred_type_param_3.f90
+++ b/gcc/testsuite/gfortran.dg/deferred_type_param_3.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/45170
 ! PR fortran/52158
diff --git a/gcc/testsuite/gfortran.dg/defined_assignment_1.f90 b/gcc/testsuite/gfortran.dg/defined_assignment_1.f90
index da06f26..3442f7c 100644
--- a/gcc/testsuite/gfortran.dg/defined_assignment_1.f90
+++ b/gcc/testsuite/gfortran.dg/defined_assignment_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do run }
+! { dg-options "-Wno-return-type" }
 ! Test the fix for PR46897.
 !
 ! Contributed by Rouson Damian <rouson@sandia.gov>
diff --git a/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 b/gcc/testsuite/gfortran.dg/defined_assignment_6.f90
index a5666fe..e5b4dd9 100644
--- a/gcc/testsuite/gfortran.dg/defined_assignment_6.f90
+++ b/gcc/testsuite/gfortran.dg/defined_assignment_6.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/57364
 !
diff --git a/gcc/testsuite/gfortran.dg/defined_assignment_7.f90 b/gcc/testsuite/gfortran.dg/defined_assignment_7.f90
index b2e4353..0acd9e6 100644
--- a/gcc/testsuite/gfortran.dg/defined_assignment_7.f90
+++ b/gcc/testsuite/gfortran.dg/defined_assignment_7.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/57508
 !
diff --git a/gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03 b/gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03
index e54966b..18e9061 100644
--- a/gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03
+++ b/gcc/testsuite/gfortran.dg/dynamic_dispatch_6.f03
@@ -1,4 +1,5 @@
 ! { dg-do run }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 42144: [OOP] deferred TBPs do not work
 !
diff --git a/gcc/testsuite/gfortran.dg/empty_function_1.f90 b/gcc/testsuite/gfortran.dg/empty_function_1.f90
index 1556a50..7da627e 100644
--- a/gcc/testsuite/gfortran.dg/empty_function_1.f90
+++ b/gcc/testsuite/gfortran.dg/empty_function_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/38252
 ! FUNCTION rejected if both specification and execution part are empty
diff --git a/gcc/testsuite/gfortran.dg/extends_13.f03 b/gcc/testsuite/gfortran.dg/extends_13.f03
index 9181004..43d53fe 100644
--- a/gcc/testsuite/gfortran.dg/extends_13.f03
+++ b/gcc/testsuite/gfortran.dg/extends_13.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 47601: [OOP] Internal Error: mio_component_ref(): Component not found
 !
diff --git a/gcc/testsuite/gfortran.dg/finalize_23.f90 b/gcc/testsuite/gfortran.dg/finalize_23.f90
index ea39729..5018c8b 100644
--- a/gcc/testsuite/gfortran.dg/finalize_23.f90
+++ b/gcc/testsuite/gfortran.dg/finalize_23.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 60234: [4.9 Regression] [OOP] ICE in generate_finalization_wrapper at fortran/class.c:1883
 !
diff --git a/gcc/testsuite/gfortran.dg/generic_24.f90 b/gcc/testsuite/gfortran.dg/generic_24.f90
index 18ca81c..cfc2b96 100644
--- a/gcc/testsuite/gfortran.dg/generic_24.f90
+++ b/gcc/testsuite/gfortran.dg/generic_24.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/48889
 !
diff --git a/gcc/testsuite/gfortran.dg/graphite/id-2.f90 b/gcc/testsuite/gfortran.dg/graphite/id-2.f90
index 720fff8..6a36f9e 100644
--- a/gcc/testsuite/gfortran.dg/graphite/id-2.f90
+++ b/gcc/testsuite/gfortran.dg/graphite/id-2.f90
@@ -7,6 +7,7 @@ contains
     X = Y
   end subroutine prod0
   function Ginteg(xq1,yq1, xq2,yq2, xp,yp)  result(G)
+	G = 42
   end function Ginteg
   subroutine fourir(A,ntot,kconjg, E,useold)
   end subroutine fourir
diff --git a/gcc/testsuite/gfortran.dg/graphite/id-3.f90 b/gcc/testsuite/gfortran.dg/graphite/id-3.f90
index 7f0efc7..56dcf55 100644
--- a/gcc/testsuite/gfortran.dg/graphite/id-3.f90
+++ b/gcc/testsuite/gfortran.dg/graphite/id-3.f90
@@ -15,5 +15,6 @@ do icls1 = 1, ncls
 enddo
 contains
 real function genuni (jsee)
+	genuni = 42
 end function genuni
 end subroutine gentrs
diff --git a/gcc/testsuite/gfortran.dg/graphite/pr37980.f90 b/gcc/testsuite/gfortran.dg/graphite/pr37980.f90
index 62eccf3..c699978 100644
--- a/gcc/testsuite/gfortran.dg/graphite/pr37980.f90
+++ b/gcc/testsuite/gfortran.dg/graphite/pr37980.f90
@@ -1,4 +1,5 @@
 ! { dg-options "-O2 " }
+! { dg-options "-Wno-return-type" }
 
 module INT_MODULE
 contains
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03 b/gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
index 8ad3a63..98b2144 100644
--- a/gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
+++ b/gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-std=f2003 -Wintrinsic-shadow" }
+! { dg-options "-std=f2003 -Wintrinsic-shadow -Wno-return-type" }
 
 ! PR fortran/33141
 ! Check that the expected warnings are emitted if a user-procedure has the same
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03 b/gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03
index 326edb0..ec59eb4 100644
--- a/gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03
+++ b/gcc/testsuite/gfortran.dg/intrinsic_shadow_2.f03
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-std=f2003 -Wintrinsic-shadow -fall-intrinsics" }
+! { dg-options "-std=f2003 -Wintrinsic-shadow -fall-intrinsics -Wno-return-type" }
 
 ! PR fortran/33141
 ! Check that the expected warnings are emitted if a user-procedure has the same
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03 b/gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03
index 4516349..66a2574 100644
--- a/gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03
+++ b/gcc/testsuite/gfortran.dg/intrinsic_shadow_3.f03
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-Wno-intrinsic-shadow -fall-intrinsics" }
+! { dg-options "-Wno-intrinsic-shadow -fall-intrinsics -Wno-return-type" }
 
 ! PR fortran/33141
 ! Check that the "intrinsic shadow" warnings are not emitted if the warning
diff --git a/gcc/testsuite/gfortran.dg/module_write_1.f90 b/gcc/testsuite/gfortran.dg/module_write_1.f90
index 0613c92..f71123b 100644
--- a/gcc/testsuite/gfortran.dg/module_write_1.f90
+++ b/gcc/testsuite/gfortran.dg/module_write_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/41869
 !
diff --git a/gcc/testsuite/gfortran.dg/operator_c1202.f90 b/gcc/testsuite/gfortran.dg/operator_c1202.f90
index c53079a..a5a39de 100644
--- a/gcc/testsuite/gfortran.dg/operator_c1202.f90
+++ b/gcc/testsuite/gfortran.dg/operator_c1202.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 module op
 
    implicit none
diff --git a/gcc/testsuite/gfortran.dg/pointer_check_6.f90 b/gcc/testsuite/gfortran.dg/pointer_check_6.f90
index 81dbae8..876072e 100644
--- a/gcc/testsuite/gfortran.dg/pointer_check_6.f90
+++ b/gcc/testsuite/gfortran.dg/pointer_check_6.f90
@@ -1,5 +1,5 @@
 ! { dg-do run }
-! { dg-options "-fcheck=pointer" }
+! { dg-options "-fcheck=pointer -Wno-return-type" }
 !
 ! { dg-shouldfail "pointer check" }
 ! { dg-output ".*At line 104 of file .*Fortran runtime error: Pointer actual argument 'a' is not associated.*" }
diff --git a/gcc/testsuite/gfortran.dg/pr36680.f90 b/gcc/testsuite/gfortran.dg/pr36680.f90
index b554b76..f790e10 100644
--- a/gcc/testsuite/gfortran.dg/pr36680.f90
+++ b/gcc/testsuite/gfortran.dg/pr36680.f90
@@ -1,6 +1,6 @@
 ! PR target/36680
 ! { dg-do compile { target i?86-*-* x86_64-*-* } }
-! { dg-options "-O1 -fschedule-insns" }
+! { dg-options "-O1 -fschedule-insns -Wno-return-type" }
 
 MODULE class_dummy_atom_kdtree_types
   TYPE dummy_atom_kdtree_data
diff --git a/gcc/testsuite/gfortran.dg/pr40999.f b/gcc/testsuite/gfortran.dg/pr40999.f
index b6fa85a..b1e9dd7 100644
--- a/gcc/testsuite/gfortran.dg/pr40999.f
+++ b/gcc/testsuite/gfortran.dg/pr40999.f
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O3 -fwhole-file" }
+! { dg-options "-O3 -fwhole-file -Wno-return-type" }
 
       SUBROUTINE ZLARFG( ALPHA )
         COMPLEX*16 ZLADIV
diff --git a/gcc/testsuite/gfortran.dg/pr42051.f03 b/gcc/testsuite/gfortran.dg/pr42051.f03
index 7a5be63..25c6861 100644
--- a/gcc/testsuite/gfortran.dg/pr42051.f03
+++ b/gcc/testsuite/gfortran.dg/pr42051.f03
@@ -18,6 +18,7 @@ module grid_module
 contains
   real function return_x(this)
     class(grid) :: this
+    return_x = 42
   end function
 end module 
 
diff --git a/gcc/testsuite/gfortran.dg/pr61209.f90 b/gcc/testsuite/gfortran.dg/pr61209.f90
index 481714d..d9099e1 100644
--- a/gcc/testsuite/gfortran.dg/pr61209.f90
+++ b/gcc/testsuite/gfortran.dg/pr61209.f90
@@ -22,6 +22,7 @@ CONTAINS
     INTEGER, DIMENSION(:), POINTER           :: DATA
     IF (ASSOCIATED (array%low)) THEN
     ENDIF
+    DATA = 1
   END FUNCTION array_data_i1d
   SUBROUTINE dbcsr_make_index_list (matrix, thread_redist)
     TYPE(dbcsr_obj), INTENT(INOUT)           :: matrix
diff --git a/gcc/testsuite/gfortran.dg/pr61921.f90 b/gcc/testsuite/gfortran.dg/pr61921.f90
index 52b6176..8f5f38c 100644
--- a/gcc/testsuite/gfortran.dg/pr61921.f90
+++ b/gcc/testsuite/gfortran.dg/pr61921.f90
@@ -6,10 +6,12 @@ MODULE min_heap
 CONTAINS
   ELEMENTAL FUNCTION get_left_child(n) RESULT (child)
     INTEGER, INTENT(IN)                      :: n
+    child = 1
   END FUNCTION get_left_child
   ELEMENTAL FUNCTION get_value(heap, n) RESULT (value)
     TYPE(heap_t), INTENT(IN)                 :: heap
     INTEGER, INTENT(IN)                      :: n
+    value = 1
   END FUNCTION get_value
 END MODULE min_heap
 
diff --git a/gcc/testsuite/gfortran.dg/private_type_11.f90 b/gcc/testsuite/gfortran.dg/private_type_11.f90
index 53d5f4c..906b874 100644
--- a/gcc/testsuite/gfortran.dg/private_type_11.f90
+++ b/gcc/testsuite/gfortran.dg/private_type_11.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-std=f2003" }
+! { dg-options "-std=f2003 -Wno-return-type" }
 ! PR fortran/38065
 !
 ! Reported by Norman S. Clerman
diff --git a/gcc/testsuite/gfortran.dg/proc_decl_27.f90 b/gcc/testsuite/gfortran.dg/proc_decl_27.f90
index cb16ecf..6103405 100644
--- a/gcc/testsuite/gfortran.dg/proc_decl_27.f90
+++ b/gcc/testsuite/gfortran.dg/proc_decl_27.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 50659: [4.5/4.6/4.7 Regression] [F03] ICE on invalid with procedure interface
 !
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_13.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_13.f90
index 989cd66..31c2896 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_13.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_13.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-g" }
+! { dg-options "-g -Wno-return-type" }
 !
 ! PR 38152: Procedure pointers as module variables.
 !
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_41.f90
index 7f50aba..21d7f17 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_41.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_41.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 56968: [4.7/4.8/4.9 Regression] [F03] Issue with a procedure defined with a generic name returning procedure pointer
 !
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_4.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_4.f90
index be36fda..f685da8 100644
--- a/gcc/testsuite/gfortran.dg/proc_ptr_comp_4.f90
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_4.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR39630: Fortran 2003: Procedure pointer components.
 !
diff --git a/gcc/testsuite/gfortran.dg/public_private_module_3.f90 b/gcc/testsuite/gfortran.dg/public_private_module_3.f90
index 03f00c2..54f75ff 100644
--- a/gcc/testsuite/gfortran.dg/public_private_module_3.f90
+++ b/gcc/testsuite/gfortran.dg/public_private_module_3.f90
@@ -1,4 +1,5 @@
 ! { dg-do link }
+! { dg-options "-Wno-return-type" }
 ! { dg-additional-sources public_private_module_4.f90 }
 !
 ! PR fortran/52916
diff --git a/gcc/testsuite/gfortran.dg/public_private_module_5.f90 b/gcc/testsuite/gfortran.dg/public_private_module_5.f90
index 9c9d15d..062a400 100644
--- a/gcc/testsuite/gfortran.dg/public_private_module_5.f90
+++ b/gcc/testsuite/gfortran.dg/public_private_module_5.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O3" }
+! { dg-options "-O3 -Wno-return-type" }
 !
 ! PR fortran/53175
 !
diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90 b/gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90
index b8b669f..b784684 100644
--- a/gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90
+++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_14.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-Wrealloc-lhs-all -Wrealloc-lhs" }
+! { dg-options "-Wrealloc-lhs-all -Wrealloc-lhs -Wno-return-type" }
 !
 ! PR fortran/52196
 !
diff --git a/gcc/testsuite/gfortran.dg/recursive_interface_1.f90 b/gcc/testsuite/gfortran.dg/recursive_interface_1.f90
index 61db0c1..3a5890a 100644
--- a/gcc/testsuite/gfortran.dg/recursive_interface_1.f90
+++ b/gcc/testsuite/gfortran.dg/recursive_interface_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/54107
 ! The compiler used to ICE on recursive interfaces.
diff --git a/gcc/testsuite/gfortran.dg/recursive_interface_2.f90 b/gcc/testsuite/gfortran.dg/recursive_interface_2.f90
index 9726a0e..3e47dbf 100644
--- a/gcc/testsuite/gfortran.dg/recursive_interface_2.f90
+++ b/gcc/testsuite/gfortran.dg/recursive_interface_2.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/54107
 ! Recursive interfaces used to lead to an infinite recursion during
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_14.f03 b/gcc/testsuite/gfortran.dg/typebound_call_14.f03
index e39b38d..ddd56ff 100644
--- a/gcc/testsuite/gfortran.dg/typebound_call_14.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_call_14.f03
@@ -18,6 +18,7 @@ contains
   end subroutine
   integer function ice_fun(this)
     class(ice_type)::this
+    ice_fun = 42
   end function
   subroutine ice()
     type(ice_type),dimension(2)::ice_array
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_16.f03 b/gcc/testsuite/gfortran.dg/typebound_call_16.f03
index 3983195..747f642 100644
--- a/gcc/testsuite/gfortran.dg/typebound_call_16.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_call_16.f03
@@ -16,6 +16,7 @@ contains
   integer function get_nrows(a)
     implicit none 
     class(base_sparse_mat), intent(in) :: a
+    get_nrows = 42
   end function get_nrows
 
 end module  base_mat_mod
diff --git a/gcc/testsuite/gfortran.dg/typebound_generic_8.f03 b/gcc/testsuite/gfortran.dg/typebound_generic_8.f03
index 2c507e1..09eda9b 100644
--- a/gcc/testsuite/gfortran.dg/typebound_generic_8.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_generic_8.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 44565: [4.6 Regression] [OOP] ICE in gimplify_expr with array-valued generic TBP
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_18.f90 b/gcc/testsuite/gfortran.dg/typebound_operator_18.f90
index d5ac9e9..9fdaa56 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_18.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_18.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 55297: [4.8 Regression] [OOP] type-bound operator clashes with abstract interface
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_19.f90 b/gcc/testsuite/gfortran.dg/typebound_operator_19.f90
index cf09379..3515ae2 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_19.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_19.f90
@@ -24,6 +24,7 @@ contains
 
   integer function unary(rhs)
     class(foo) ,intent(in) :: rhs
+    unary=42
   end function
 
 end module
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_9.f03 b/gcc/testsuite/gfortran.dg/typebound_operator_9.f03
index 6e62526..b805d56 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_9.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_9.f03
@@ -1,5 +1,6 @@
 ! { dg-do run }
 ! { dg-add-options ieee }
+! { dg-options "-Wno-return-type" }
 ! { dg-skip-if "Too big for local store" { spu-*-* } { "*" } { "" } }
 !
 !     Solve a diffusion problem using an object-oriented approach
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_14.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_14.f03
index 1f0d7de..e51791d 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_14.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_14.f03
@@ -21,6 +21,7 @@ contains
 
   real function bar (this)
     class(t) :: this
+    bar = 42
   end function
 
   subroutine baz (this, par)
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_17.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_17.f03
index 4bc177b..273b983 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_17.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_17.f03
@@ -17,7 +17,8 @@ contains
 
 function get_coeff(self) result(coeff)
   class(t_array), intent(in) :: self
-  real, dimension(size(self%coeff)) :: coeff !! The SIZE here carashes !!
+  real, dimension(size(self%coeff)) :: coeff !! The SIZE here crashes !!
+  coeff = 42
 end function get_coeff
 
 end module array
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_18.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_18.f03
index 725cba6..f04b4b7 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_18.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_18.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 45456: [4.6 Regression] [OOP] Bogus pointer initialization error on pointer-valued TBP
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_24.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_24.f03
index e8ed918..0016e36 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_24.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_24.f03
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 49112: [4.6/4.7 Regression] [OOP] Missing type-bound procedure, "duplicate save" warnings and internal compiler error
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_31.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_31.f90
index d83a9cd..266f937 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_31.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_31.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 59450: [OOP] ICE for type-bound-procedure expression in module procedure interface
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_32.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_32.f90
index 00ae9c7..5fc955b 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_32.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_32.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 59547: [OOP] Problem with using tbp specification function in multiple class procedures
 !
diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_33.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_33.f90
index 68ea53f..4f7fdf8 100644
--- a/gcc/testsuite/gfortran.dg/typebound_proc_33.f90
+++ b/gcc/testsuite/gfortran.dg/typebound_proc_33.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR 60232: [OOP] The rank of the element in the structure constructor does not match that of the component
 !
diff --git a/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 b/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90
index 07fbce3..37b91c6 100644
--- a/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90
+++ b/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/58007
 ! Unresolved fixup while loading a module.
diff --git a/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 b/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90
index ca0a05a..fa97a6e 100644
--- a/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90
+++ b/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/58007
 ! Unresolved fiixup while loading a module.
diff --git a/gcc/testsuite/gfortran.dg/use_22.f90 b/gcc/testsuite/gfortran.dg/use_22.f90
index d61df67..44adc78 100644
--- a/gcc/testsuite/gfortran.dg/use_22.f90
+++ b/gcc/testsuite/gfortran.dg/use_22.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/55827
 ! gfortran used to ICE with the call to `tostring' depending on how the
diff --git a/gcc/testsuite/gfortran.dg/use_23.f90 b/gcc/testsuite/gfortran.dg/use_23.f90
index da05e1a..3a68b7a 100644
--- a/gcc/testsuite/gfortran.dg/use_23.f90
+++ b/gcc/testsuite/gfortran.dg/use_23.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/42769
 ! This test used to ICE in resolve_typebound_procedure because T1's GET
diff --git a/gcc/testsuite/gfortran.dg/use_only_5.f90 b/gcc/testsuite/gfortran.dg/use_only_5.f90
index fb16981..f885380 100644
--- a/gcc/testsuite/gfortran.dg/use_only_5.f90
+++ b/gcc/testsuite/gfortran.dg/use_only_5.f90
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-Wno-return-type" }
 !
 ! PR fortran/39427
 !
diff --git a/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90 b/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
index acfe1b7..ec87d77 100644
--- a/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
+++ b/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
@@ -33,6 +33,7 @@
 contains
   elemental function eid (x)
     integer, intent(in) :: x
+    eid = x
   end function eid
   function neid2 (x)
     integer, intent(in) :: x(:,:)
@@ -42,6 +43,7 @@ contains
   function neid3 (x)
     integer, intent(in) :: x(:,:,:)
     integer             :: neid3(size(x,1),size(x,2),size(x,3))
+    neid3 = x
   end function neid3
   elemental subroutine set (o, i)
     integer, intent(in)  :: i
diff --git a/gcc/testsuite/gfortran.dg/vect/pr46213.f90 b/gcc/testsuite/gfortran.dg/vect/pr46213.f90
index 504d1a3..2893048 100644
--- a/gcc/testsuite/gfortran.dg/vect/pr46213.f90
+++ b/gcc/testsuite/gfortran.dg/vect/pr46213.f90
@@ -19,6 +19,7 @@ contains
      j = cc - j
   end function j
   function get_d()
+     get_d = 42
   end function get_d
 end program test
 
diff --git a/gcc/testsuite/gfortran.dg/whole_file_11.f90 b/gcc/testsuite/gfortran.dg/whole_file_11.f90
index d01b210..eddbe03 100644
--- a/gcc/testsuite/gfortran.dg/whole_file_11.f90
+++ b/gcc/testsuite/gfortran.dg/whole_file_11.f90
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-fwhole-file" }
+! { dg-options "-fwhole-file -Wno-return-type" }
 !
 ! Tests the fix PR40011 comment 16 in which the derived type lists in
 ! different program units were getting mixed up.
diff --git a/gcc/testsuite/objc.dg/comp-types-7.m b/gcc/testsuite/objc.dg/comp-types-7.m
index 526934f..9636a34 100644
--- a/gcc/testsuite/objc.dg/comp-types-7.m
+++ b/gcc/testsuite/objc.dg/comp-types-7.m
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-options "-Wno-return-type" } */
 /* We used to ICE because we removed the cast to List_linked*
    in -[ListIndex_linked next]. */
 
diff --git a/gcc/testsuite/objc.dg/stabs-1.m b/gcc/testsuite/objc.dg/stabs-1.m
index e43f7d8..48c2b9b 100644
--- a/gcc/testsuite/objc.dg/stabs-1.m
+++ b/gcc/testsuite/objc.dg/stabs-1.m
@@ -3,7 +3,7 @@
 
 /* { dg-do compile } */
 /* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* } { "*" } { "" } } */
-/* { dg-options "-gstabs" } */
+/* { dg-options "-gstabs -Wno-return-type" } */
 
 @interface MyClass
 + newWithArg: arg;
diff --git a/gcc/testsuite/objc.dg/super-class-2.m b/gcc/testsuite/objc.dg/super-class-2.m
index 144ea81..450db14 100644
--- a/gcc/testsuite/objc.dg/super-class-2.m
+++ b/gcc/testsuite/objc.dg/super-class-2.m
@@ -13,7 +13,7 @@ typedef struct objc_object { struct objc_class *isa; } *id;
 
 @implementation NSObject
 + (int) test_func0
-{}
+{ return 42; }
 @end
 
 @implementation NSMenuItem
@@ -29,7 +29,7 @@ typedef struct objc_object { struct objc_class *isa; } *id;
 
 @implementation NSObject (Test)
 + (int) test_func
-{}
+{ return 42; }
 @end
 
 @interface NSMenuItem (Test)
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 9d1de01..c3f8ed6 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -8279,7 +8279,7 @@ pass_warn_function_return::execute (function *fun)
 
   /* If we see "return;" in some basic block, then we do reach the end
      without returning a value.  */
-  else if (warn_return_type
+  else if (warn_missing_return
 	   && !TREE_NO_WARNING (fun->decl)
 	   && EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (fun)->preds) > 0
 	   && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (fun->decl))))
@@ -8294,7 +8294,7 @@ pass_warn_function_return::execute (function *fun)
 	      location = gimple_location (last);
 	      if (location == UNKNOWN_LOCATION)
 		location = fun->function_end_locus;
-	      warning_at (location, OPT_Wreturn_type, "control reaches end of non-void function");
+	      warning_at (location, OPT_Wmissing_return, "control reaches end of non-void function");
 	      TREE_NO_WARNING (fun->decl) = 1;
 	      break;
 	    }
diff --git a/libgomp/testsuite/libgomp.c++/loop-2.C b/libgomp/testsuite/libgomp.c++/loop-2.C
index ea3dc58..b1c54db 100644
--- a/libgomp/testsuite/libgomp.c++/loop-2.C
+++ b/libgomp/testsuite/libgomp.c++/loop-2.C
@@ -15,7 +15,7 @@ void parloop (int *a)
     a[i] = i + 3;
 }
 
-main()
+int main()
 {
   int i, a[N];
 
diff --git a/libgomp/testsuite/libgomp.c++/loop-4.C b/libgomp/testsuite/libgomp.c++/loop-4.C
index 731f234..a03bfe2 100644
--- a/libgomp/testsuite/libgomp.c++/loop-4.C
+++ b/libgomp/testsuite/libgomp.c++/loop-4.C
@@ -1,6 +1,6 @@
 extern "C" void abort (void);
 
-main()
+int main()
 {
   int i, a;
 
diff --git a/libgomp/testsuite/libgomp.c++/parallel-1.C b/libgomp/testsuite/libgomp.c++/parallel-1.C
index 3c93147..a4501af 100644
--- a/libgomp/testsuite/libgomp.c++/parallel-1.C
+++ b/libgomp/testsuite/libgomp.c++/parallel-1.C
@@ -8,7 +8,7 @@ foo (void)
   return 10;
 }
 
-main ()
+int main ()
 {
   int A = 0;
 
diff --git a/libgomp/testsuite/libgomp.c++/shared-1.C b/libgomp/testsuite/libgomp.c++/shared-1.C
index 334a553..9f93cec 100644
--- a/libgomp/testsuite/libgomp.c++/shared-1.C
+++ b/libgomp/testsuite/libgomp.c++/shared-1.C
@@ -53,7 +53,7 @@ parallel (int a, int b)
     abort ();
 }
 
-main()
+int main()
 {
   parallel (1, 2);
   return 0;
diff --git a/libgomp/testsuite/libgomp.c++/single-1.C b/libgomp/testsuite/libgomp.c++/single-1.C
index e318a48..5c06f7f 100644
--- a/libgomp/testsuite/libgomp.c++/single-1.C
+++ b/libgomp/testsuite/libgomp.c++/single-1.C
@@ -1,6 +1,6 @@
 extern "C" void abort (void);
 
-main()
+int main()
 {
   int i = 0;
 
diff --git a/libgomp/testsuite/libgomp.c++/single-2.C b/libgomp/testsuite/libgomp.c++/single-2.C
index c2dd228..0dfeb98 100644
--- a/libgomp/testsuite/libgomp.c++/single-2.C
+++ b/libgomp/testsuite/libgomp.c++/single-2.C
@@ -7,7 +7,7 @@ struct X
   int c;
 };
 
-main()
+int main()
 {
   int i = 0;
   struct X x;
diff --git a/libgomp/testsuite/libgomp.c/omp-loop02.c b/libgomp/testsuite/libgomp.c/omp-loop02.c
index 04aaea2..9830039 100644
--- a/libgomp/testsuite/libgomp.c/omp-loop02.c
+++ b/libgomp/testsuite/libgomp.c/omp-loop02.c
@@ -15,7 +15,7 @@ void parloop (int *a)
     a[i] = i + 3;
 }
 
-main()
+int main()
 {
   int i, a[N];
 
diff --git a/libgomp/testsuite/libgomp.c/omp-parallel-for.c b/libgomp/testsuite/libgomp.c/omp-parallel-for.c
index c6631a0..02bcef9 100644
--- a/libgomp/testsuite/libgomp.c/omp-parallel-for.c
+++ b/libgomp/testsuite/libgomp.c/omp-parallel-for.c
@@ -1,6 +1,6 @@
 extern void abort (void);
 
-main()
+int main()
 {
   int i, a;
 
diff --git a/libgomp/testsuite/libgomp.c/omp-parallel-if.c b/libgomp/testsuite/libgomp.c/omp-parallel-if.c
index 5e37835..3c545bd 100644
--- a/libgomp/testsuite/libgomp.c/omp-parallel-if.c
+++ b/libgomp/testsuite/libgomp.c/omp-parallel-if.c
@@ -8,7 +8,7 @@ foo (void)
   return 10;
 }
 
-main ()
+int main ()
 {
   int A = 0;
 
diff --git a/libgomp/testsuite/libgomp.c/omp-single-1.c b/libgomp/testsuite/libgomp.c/omp-single-1.c
index a44ca54..98ea77a 100644
--- a/libgomp/testsuite/libgomp.c/omp-single-1.c
+++ b/libgomp/testsuite/libgomp.c/omp-single-1.c
@@ -1,6 +1,6 @@
 extern void abort (void);
 
-main()
+int main()
 {
   int i = 0;
 
diff --git a/libgomp/testsuite/libgomp.c/omp-single-2.c b/libgomp/testsuite/libgomp.c/omp-single-2.c
index 6878559..cba18d6 100644
--- a/libgomp/testsuite/libgomp.c/omp-single-2.c
+++ b/libgomp/testsuite/libgomp.c/omp-single-2.c
@@ -9,7 +9,7 @@ struct X
   int c;
 };
 
-main()
+int main()
 {
   int i = 0;
   struct X x;
diff --git a/libgomp/testsuite/libgomp.c/omp_matvec.c b/libgomp/testsuite/libgomp.c/omp_matvec.c
index 12b8c68..6a720c8 100644
--- a/libgomp/testsuite/libgomp.c/omp_matvec.c
+++ b/libgomp/testsuite/libgomp.c/omp_matvec.c
@@ -16,7 +16,7 @@
 #define SIZE 10
 
 
-main ()
+int main ()
 {
 
 float A[SIZE][SIZE], b[SIZE], c[SIZE], total;
diff --git a/libgomp/testsuite/libgomp.c/omp_workshare3.c b/libgomp/testsuite/libgomp.c/omp_workshare3.c
index 913f1f7..78e278a 100644
--- a/libgomp/testsuite/libgomp.c/omp_workshare3.c
+++ b/libgomp/testsuite/libgomp.c/omp_workshare3.c
@@ -16,7 +16,7 @@
 #define N       50
 #define CHUNKSIZE   5
 
-main ()  {
+int main ()  {
 
 int i, chunk, tid;
 float a[N], b[N], c[N];
diff --git a/libgomp/testsuite/libgomp.c/omp_workshare4.c b/libgomp/testsuite/libgomp.c/omp_workshare4.c
index 67605e3..c2dca3d 100644
--- a/libgomp/testsuite/libgomp.c/omp_workshare4.c
+++ b/libgomp/testsuite/libgomp.c/omp_workshare4.c
@@ -15,7 +15,7 @@
 #define N       50
 #define CHUNKSIZE   5
 
-main ()  {
+int main ()  {
 
 int i, chunk, tid;
 float a[N], b[N], c[N];
diff --git a/libgomp/testsuite/libgomp.c/shared-1.c b/libgomp/testsuite/libgomp.c/shared-1.c
index f7d4fb2..eae3d6c 100644
--- a/libgomp/testsuite/libgomp.c/shared-1.c
+++ b/libgomp/testsuite/libgomp.c/shared-1.c
@@ -51,7 +51,7 @@ parallel (int a, int b)
     abort ();
 }
 
-main()
+int main()
 {
   parallel (1, 2);
   return 0;
diff --git a/libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
index 3de0723..6e374c1 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
@@ -15,7 +15,7 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 //
-// { dg-options "-std=gnu++11" }
+// { dg-options "-std=gnu++11 -Wno-return-type" }
 // { dg-do run { xfail *-*-* } }
 
 #include <debug/vector>
-- 
1.9.1

