aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-02-10 17:38:31 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-02-10 16:38:31 +0000
commitd90cae086f06c358426a3138513c35c79de5f4a4 (patch)
tree9fb7c639432aed1256e3d0c328b87087c60e352a
parentb2f2a1c99a71af82ae7af9fa2a1f5fd80b1ee226 (diff)
downloadgcc-d90cae086f06c358426a3138513c35c79de5f4a4.zip
gcc-d90cae086f06c358426a3138513c35c79de5f4a4.tar.gz
gcc-d90cae086f06c358426a3138513c35c79de5f4a4.tar.bz2
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraphunit.c8
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/method.c14
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 <hubicka@ucw.cz>
+
+ PR ipa/64982
+ * cgraphunit.c (cgraph_node::expand_thunk): Look for stdarg
+ thunks.
+
2015-02-10 Trevor Saunders <tsaunders@mozilla.com>
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 <hubicka@ucw.cz>
+
+ PR ipa/64982
+ * method.c (use_thunk): Do not check for stdarg thunks.
+
2015-02-06 Jason Merrill <jason@redhat.com>
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 ();
}