[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 Dominique d'Humieres dominiq at lps dot ens.fr changed: What|Removed |Added Target|x86_64-apple-darwin12 |x86_64-apple-darwin1* |x86_64-apple-darwin13 | Host|x86_64-apple-darwin12 |x86_64-apple-darwin1* |x86_64-apple-darwin13 | Build|x86_64-apple-darwin12 |x86_64-apple-darwin1* |x86_64-apple-darwin13 | --- Comment #8 from Dominique d'Humieres dominiq at lps dot ens.fr --- also on darwin12. Also on darwin10: see https://gcc.gnu.org/ml/gcc-testresults/2014-06/msg01321.html.
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 --- Comment #7 from Dominique d'Humieres dominiq at lps dot ens.fr --- Could this PR get some attention please? To have an idea about how fun it is, look at https://gcc.gnu.org/ml/gcc-testresults/2014-06/msg01182.html.
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 Hans-Peter Nilsson hp at gcc dot gnu.org changed: What|Removed |Added CC||hp at gcc dot gnu.org --- Comment #6 from Hans-Peter Nilsson hp at gcc dot gnu.org --- (In reply to Dominique d'Humieres from comment #5) The following patch fixes the failures (not counting new ones: g++.dg/debug/dwarf2/imported-decl-2.C and g++.dg/tls/diag-1.C). Is the g++.dg/tls/diag-1.C the same as in PR61436? Seems likely as darwin is IIUC an emutls target.
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 --- Comment #5 from Dominique d'Humieres dominiq at lps dot ens.fr --- (In reply to Iain Sandoe from comment #4) 3. Anyway, assuming that the intention is to unwrap the indirection from the call - something like: ... The following patch fixes the failures (not counting new ones: g++.dg/debug/dwarf2/imported-decl-2.C and g++.dg/tls/diag-1.C). --- ../_clean/gcc/config/i386/i386.c2014-06-04 00:42:24.0 +0200 +++ gcc/config/i386/i386.c2014-06-04 15:05:42.0 +0200 @@ -38898,7 +38898,9 @@ x86_output_mi_thunk (FILE *file, { if (sibcall_insn_operand (fnaddr, word_mode)) { - tmp = gen_rtx_CALL (VOIDmode, fnaddr, const0_rtx); + fnaddr = XEXP (DECL_RTL (function), 0); + tmp = gen_rtx_MEM (QImode, fnaddr); + tmp = gen_rtx_CALL (VOIDmode, tmp, const0_rtx); tmp = emit_call_insn (tmp); SIBLING_CALL_P (tmp) = 1; }
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 Iain Sandoe iains at gcc dot gnu.org changed: What|Removed |Added Target|x86_64-apple-darwin13 |x86_64-apple-darwin12 ||x86_64-apple-darwin13 Status|UNCONFIRMED |NEW Last reconfirmed||2014-06-02 Host|x86_64-apple-darwin13 |x86_64-apple-darwin12 ||x86_64-apple-darwin13 Ever confirmed|0 |1 Build|x86_64-apple-darwin13 |x86_64-apple-darwin12 ||x86_64-apple-darwin13 --- Comment #1 from Iain Sandoe iains at gcc dot gnu.org --- also on darwin12.
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.10.0 --- Comment #2 from Richard Biener rguenth at gcc dot gnu.org --- This is a google branch rev.
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 --- Comment #3 from Iain Sandoe iains at gcc dot gnu.org --- (In reply to Richard Biener from comment #2) This is a google branch rev. 211088 is OK the revision that triggers the fail is http://gcc.gnu.org/viewcvs/gcc?view=revisionrevision=211089
[Bug target/61387] [4.10 Regression] ~900 test failures on on x86_64-apple-darwin13 for g++ with -m64 after r211088
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61387 Iain Sandoe iains at gcc dot gnu.org changed: What|Removed |Added CC||mrs at gcc dot gnu.org --- Comment #4 from Iain Sandoe iains at gcc dot gnu.org --- some analysis: 1. The codepath: predicate that can distinguish between frame and non-frame memory. For our purposes here, we can get away with (ab)using a jump pattern, because we're going to do no optimization. */ if (MEM_P (fnaddr)) { if (sibcall_insn_operand (fnaddr, word_mode)) { does not appear to be triggered for x86_64-linux (i put an assert in which was not triggered in either a bootstrap or complete c/c++ testsuite run). 2. taking say pr58585.c as an example. struct A { virtual void foo() {} void bar(); }; void A::bar() { foo(); } Linux and Darwin both mark foo() as weak. However, Linux says that targetm.binds_local_p (foo) == true. Darwin says it's false. So Darwin takes the code-path above and Linux doesn't. Right now, I'm not sure which is the right claim on the binds_local_p. 3. Anyway, assuming that the intention is to unwrap the indirection from the call - something like: if (MEM_P (fnaddr)) { if (sibcall_insn_operand (fnaddr, word_mode)) { fnaddr = XEXP (DECL_RTL (function), 0); tmp = gen_rtx_MEM (QImode, fnaddr); tmp = gen_rtx_CALL (VOIDmode, tmp, const0_rtx); tmp = emit_call_insn (tmp); SIBLING_CALL_P (tmp) = 1; } else emit_jump_insn (gen_indirect_jump (fnaddr)); } seems more like what was intended. However, I really think we need to explain the difference in treatment. Mike? amy thoughts?