[Bug target/61729] FAIL: g++.dg/abi/scoped1.C -std=gnu++11 execution test

2017-11-18 Thread segher at gcc dot gnu.org
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

2017-06-27 Thread segher at gcc dot gnu.org
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 Boessenkool  
PR 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

2017-06-27 Thread segher at gcc dot gnu.org
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 Boessenkool  
PR 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

2017-01-20 Thread segher at gcc dot gnu.org
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

2017-01-18 Thread segher at gcc dot gnu.org
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

2017-01-16 Thread segher at gcc dot gnu.org
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

2017-01-16 Thread joseph at codesourcery dot com
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

2017-01-14 Thread segher at gcc dot gnu.org
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

2017-01-10 Thread segher at gcc dot gnu.org
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