[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 Segher Boessenkool changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Segher Boessenkool --- Fixed everywhere.
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #6 from Segher Boessenkool --- Author: segher Date: Tue Jun 27 18:24:51 2017 New Revision: 249707 URL: https://gcc.gnu.org/viewcvs?rev=249707=gcc=rev Log: Backports from trunk: 2016-08-15 Segher BoessenkoolPR rtl-optimization/73650 * lra-constraints.c (simple_move_p): If the insn is multiple_sets it is not a simple move. 2017-01-20 Segher Boessenkool PR target/61729 PR target/77850 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to read from, for big endian. 2017-04-12 Segher Boessenkool PR target/80382 * config/rs6000/sync.md (atomic_load, atomic_store PR middle-end/80692 * real.c (do_compare): Give decimal_do_compare preference over comparing just the signs. 2017-05-31 Segher Boessenkool PR target/80618 * config/rs6000/vector.md (*vector_uneq): Write the nor in the splitter result in the canonical way. 2017-06-09 Segher Boessenkool PR target/80966 * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that gen_add3_insn did not fail. * config/rs6000/rs6000.md (add3): If asked to add a constant to r0, construct that number in a temporary reg and add that reg to r0. If asked to put the result in r0 as well, fail. 2017-06-23 Segher Boessenkool PR middle-end/80902 * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after a call, force the call to not be a tail call. gcc/testsuite/ Backports from trunk: 2017-05-17 Segher Boessenkool PR middle-end/80692 * gcc.c-torture/execute/pr80692.c: New testcase. 2017-06-09 Segher Boessenkool PR target/80966 * gcc.target/powerpc/stack-limit.c: New testcase. Added: branches/gcc-5-branch/gcc/testsuite/gcc.c-torture/execute/pr80692.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/stack-limit.c Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/builtins.c branches/gcc-5-branch/gcc/config/rs6000/rs6000.c branches/gcc-5-branch/gcc/config/rs6000/rs6000.md branches/gcc-5-branch/gcc/config/rs6000/sync.md branches/gcc-5-branch/gcc/config/rs6000/vector.md branches/gcc-5-branch/gcc/lra-constraints.c branches/gcc-5-branch/gcc/real.c branches/gcc-5-branch/gcc/testsuite/ChangeLog
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #5 from Segher Boessenkool --- Author: segher Date: Tue Jun 27 17:11:01 2017 New Revision: 249700 URL: https://gcc.gnu.org/viewcvs?rev=249700=gcc=rev Log: Backports from trunk: 2016-08-15 Segher BoessenkoolPR rtl-optimization/73650 * lra-constraints.c (simple_move_p): If the insn is multiple_sets it is not a simple move. 2017-01-20 Segher Boessenkool PR target/61729 PR target/77850 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to read from, for big endian. 2017-04-04 Segher Boessenkool PR rtl-optimization/60818 * simplify-rtx.c (simplify_binary_operation_1): Do not replace a compare of comparisons with the thing compared if this results in a different machine mode. 2017-04-12 Segher Boessenkool PR target/80382 * config/rs6000/sync.md (atomic_load, atomic_store PR rtl-optimization/80429 * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that are only used in debug insns. 2017-05-17 Segher Boessenkool PR middle-end/80692 * real.c (do_compare): Give decimal_do_compare preference over comparing just the signs. 2017-05-31 Segher Boessenkool PR target/80618 * config/rs6000/vector.md (*vector_uneq): Write the nor in the splitter result in the canonical way. 2017-06-09 Segher Boessenkool PR target/80966 * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that gen_add3_insn did not fail. * config/rs6000/rs6000.md (add3): If asked to add a constant to r0, construct that number in a temporary reg and add that reg to r0. If asked to put the result in r0 as well, fail. 2017-06-23 Segher Boessenkool PR middle-end/80902 * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after a call, force the call to not be a tail call. gcc/testsuite/ Backports from trunk: 2017-04-04 Segher Boessenkool PR rtl-optimization/60818 * gcc.c-torture/compile/pr60818.c: New testcase. 2017-05-17 Segher Boessenkool PR middle-end/80692 * gcc.c-torture/execute/pr80692.c: New testcase. 2017-06-09 Segher Boessenkool PR target/80966 * gcc.target/powerpc/stack-limit.c: New testcase. Added: branches/gcc-6-branch/gcc/testsuite/gcc.c-torture/compile/pr60818.c branches/gcc-6-branch/gcc/testsuite/gcc.c-torture/execute/pr80692.c branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/stack-limit.c Modified: branches/gcc-6-branch/gcc/ChangeLog branches/gcc-6-branch/gcc/builtins.c branches/gcc-6-branch/gcc/config/rs6000/rs6000.c branches/gcc-6-branch/gcc/config/rs6000/rs6000.md branches/gcc-6-branch/gcc/config/rs6000/sync.md branches/gcc-6-branch/gcc/config/rs6000/vector.md branches/gcc-6-branch/gcc/ira.c branches/gcc-6-branch/gcc/lra-constraints.c branches/gcc-6-branch/gcc/real.c branches/gcc-6-branch/gcc/simplify-rtx.c branches/gcc-6-branch/gcc/testsuite/ChangeLog
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #4 from Segher Boessenkool --- Author: segher Date: Sat Jan 21 03:11:49 2017 New Revision: 244740 URL: https://gcc.gnu.org/viewcvs?rev=244740=gcc=rev Log: rs6000: Small varargs for BE SVR4 (PR61729, PR77850) The varargs code for SVR4 puts all (integer) arguments in 4-byte slots. When it then reads an item from there as something not a multiple of 4 bytes, it needs to adjust the address if big endian. We didn't yet do that. This fixes the g++.dg/abi/scoped1.C, gcc.dg/compat/scalar-by-value-4, and gcc.dg/compat/scalar-return-4 testcases. PR target/61729 PR target/77850 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to read from, for big endian. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 Segher Boessenkool changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |segher at gcc dot gnu.org
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #3 from Segher Boessenkool --- Okay, I'll make it work for SVR4 in the rs6000 backend then. The generic code makes suboptimal code, many ABIs need to update (even those that haven't changed for 25 years), and more backends will need to adjust; but if this is what C++ decided, we'll have to work with that. Thanks for the confirmation.
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #2 from joseph at codesourcery dot com --- FWIW, new C floating-point types such as _Float16 and _Float32 are not promoted in variable arguments either, which has required a few back-end changes. Complex types such as _Complex float or _Complex char never are promoted, but for a long time it seems we weren't testing those in variable arguments either (I'm not sure if we now have tests for such types in variable arguments). So it's consistent with that to have unpromoted new C++ types (and presumably naming those types in va_arg needs to work correctly), but they might well cause more problems than the above examples.
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 --- Comment #1 from Segher Boessenkool --- This testcase uses a 2-byte scoped enum, which doesn't get the integer promotions if I read the C++ standard correctly -- but it is passed via varargs, and the target code expects that to be promoted always. The -m64 code works correctly (it uses the generic varargs expansion code), but it is less efficient than it would be for promoted args as well. Should varargs in C++ get the integer promotions (like in C), or do we need to extend many ABIs to work with C++?
[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61729 Segher Boessenkool changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-01-10 CC||segher at gcc dot gnu.org Ever confirmed|0 |1