> Jan, > This patch caused Bug 64982 - [5 Regression] Many g++ failures on > x86_64-apple-darwin14 with -m32. > Jack
Hi, I think best way would be to move the warning to middle-end when the thunk is being expanded (other alternative is just to force analysis before doing the sanity check in cp/method.c. I had to dro # in the error message, I am not quite sure what it means. Jason, what do you think? Honza Index: cp/method.c =================================================================== --- cp/method.c (revision 220547) +++ cp/method.c (working copy) @@ -418,20 +418,6 @@ use_thunk (tree thunk_fndecl, bool emit_ 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 (); } Index: cgraphunit.c =================================================================== --- cgraphunit.c (revision 220547) +++ cgraphunit.c (working copy) @@ -1559,6 +1559,14 @@ cgraph_node::expand_thunk (bool output_a 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;