From d90cae086f06c358426a3138513c35c79de5f4a4 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 10 Feb 2015 17:38:31 +0100 Subject: [PATCH] re PR ipa/64982 (Many g++ failures on x86_64-apple-darwin14 with -m32.) PR ipa/64982 * cgraphunit.c (cgraph_node::expand_thunk): Look for stdarg thunks. * method.c (use_thunk): Do not check for stdarg thunks. From-SVN: r220587 --- gcc/ChangeLog | 6 ++++++ gcc/cgraphunit.c | 8 ++++++++ gcc/cp/ChangeLog | 5 +++++ gcc/cp/method.c | 14 -------------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50fa380..5da067e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-02-10 Jan Hubicka + + PR ipa/64982 + * cgraphunit.c (cgraph_node::expand_thunk): Look for stdarg + thunks. + 2015-02-10 Trevor Saunders PR tree-optimization/64326 diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 8280fc4..48a4b35 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1559,6 +1559,14 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk) thunk.thunk_p = false; analyzed = false; } + else if (stdarg_p (TREE_TYPE (thunk_fndecl))) + { + error ("generic thunk code fails for method %qD which uses %<...%>", + thunk_fndecl); + TREE_ASM_WRITTEN (thunk_fndecl) = 1; + analyzed = true; + return false; + } else { tree restype; diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 37ce9098..7e282d8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2015-02-10 Jan Hubicka + + PR ipa/64982 + * method.c (use_thunk): Do not check for stdarg thunks. + 2015-02-06 Jason Merrill PR c++/64899 diff --git a/gcc/cp/method.c b/gcc/cp/method.c index aeb3791..33e2f3c 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -418,20 +418,6 @@ use_thunk (tree thunk_fndecl, bool emit_p) if (DECL_ONE_ONLY (function)) thunk_node->add_to_same_comdat_group (funcn); - if (!this_adjusting - || !targetm.asm_out.can_output_mi_thunk (thunk_fndecl, fixed_offset, - virtual_value, alias)) - { - /* If this is a covariant thunk, or we don't have the necessary - code for efficient thunks, generate a thunk function that - just makes a call to the real function. Unfortunately, this - doesn't work for varargs. */ - - if (varargs_function_p (function)) - error ("generic thunk code fails for method %q#D which uses %<...%>", - function); - } - pop_from_top_level (); } -- 2.7.4