aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2012-07-25 14:08:06 -0400
committerSandra Loosemore <sandra@gcc.gnu.org>2012-07-25 14:08:06 -0400
commitd45eae79db3e8c41ac1f307b267179498a636e0b (patch)
treef42803034e2d99c0fb7f313962516557837e0a57 /gcc/cp
parent62732c3044c767f4efcff0cd398c9e65ba437bda (diff)
downloadgcc-d45eae79db3e8c41ac1f307b267179498a636e0b.zip
gcc-d45eae79db3e8c41ac1f307b267179498a636e0b.tar.gz
gcc-d45eae79db3e8c41ac1f307b267179498a636e0b.tar.bz2
re PR target/53633 (__attribute__((naked)) should disable -Wreturn-type)
2012-07-25 Sandra Loosemore <sandra@codesourcery.com> Paul Brook <paul@codesourcery.com> PR target/53633 gcc/ * target.def (warn_func_return): New hook. * doc/tm.texi.in (TARGET_WARN_FUNC_RETURN): New hook. * doc/tm.texi: Regenerate. * doc/sourcebuild.texi (Effective-Target Keywords): Document naked_functions. * ipa-pure-const.c (warn_function_noreturn): Check targetm.warn_func_return. * tree-cfg.c (execute_warn_function_return): Likewise. * config/spu/spu.c (spu_warn_func_return): New. (TARGET_WARN_FUNC_RETURN): Define. * config/rx/rx.c (rx_warn_func_return): New. (TARGET_WARN_FUNC_RETURN): Define. * config/avr/avr.c (avr_warn_func_return): New. (TARGET_WARN_FUNC_RETURN): Define. * config/arm/arm.c (arm_warn_func_return): New. (TARGET_WARN_FUNC_RETURN): Define. * config/mcore/mcore.c (mcore_warn_func_return): New. (TARGET_WARN_FUNC_RETURN): Define. (saved_warn_return_type, saved_warn_return_type_count): Remove. (mcore_reorg, mcore_handle_naked_attribute): Remove warn_return hack. gcc/cp/ * decl.c (finish_function): Check targetm.warn_func_return. gcc/testsuite/ * lib/target-suports.exp (check_effective_target_naked_functions): New. * c-c++-common/pr53633.c: New test. Co-Authored-By: Paul Brook <paul@codesourcery.com> From-SVN: r189860
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/decl.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 409e64d..2d87bdc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2012-07-25 Sandra Loosemore <sandra@codesourcery.com>
+ Paul Brook <paul@codesourcery.com>
+
+ PR target/53633
+
+ * decl.c (finish_function): Check targetm.warn_func_return.
+
2012-07-25 Jason Merrill <jason@redhat.com>
PR c++/54086
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 047b2fe..8e95a06 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -13575,7 +13575,8 @@ finish_function (int flags)
&& !TREE_NO_WARNING (fndecl)
/* Structor return values (if any) are set by the compiler. */
&& !DECL_CONSTRUCTOR_P (fndecl)
- && !DECL_DESTRUCTOR_P (fndecl))
+ && !DECL_DESTRUCTOR_P (fndecl)
+ && targetm.warn_func_return (fndecl))
{
warning (OPT_Wreturn_type,
"no return statement in function returning non-void");