[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-04 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

--- Comment #6 from Jakub Jelinek  ---
Author: jakub
Date: Thu Feb  4 13:59:27 2016
New Revision: 233139

URL: https://gcc.gnu.org/viewcvs?rev=233139=gcc=rev
Log:
Backported from mainline
2016-02-03  Jakub Jelinek  

PR target/69644
* config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
Force oldval into register if it does not satisfy reg_or_short_operand
predicate.  Fix up formatting.

* gcc.dg/pr69644.c: New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/pr69644.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.c
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog

[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-04 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

--- Comment #5 from Jakub Jelinek  ---
Author: jakub
Date: Thu Feb  4 13:58:21 2016
New Revision: 233138

URL: https://gcc.gnu.org/viewcvs?rev=233138=gcc=rev
Log:
Backported from mainline
2016-02-03  Jakub Jelinek  

PR target/69644
* config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
Force oldval into register if it does not satisfy reg_or_short_operand
predicate.  Fix up formatting.

* gcc.dg/pr69644.c: New test.

Added:
branches/gcc-5-branch/gcc/testsuite/gcc.dg/pr69644.c
Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/rs6000/rs6000.c
branches/gcc-5-branch/gcc/testsuite/ChangeLog

[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-03 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

--- Comment #3 from Jakub Jelinek  ---
Author: jakub
Date: Wed Feb  3 22:38:56 2016
New Revision: 233113

URL: https://gcc.gnu.org/viewcvs?rev=233113=gcc=rev
Log:
PR target/69644
* config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap):
Force oldval into register if it does not satisfy reg_or_short_operand
predicate.  Fix up formatting.

* gcc.dg/pr69644.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr69644.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/testsuite/ChangeLog

[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-03 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jakub Jelinek  ---
Fixed.

[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-02 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
Created attachment 37562
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37562=edit
gcc6-pr69644.patch

Untested fix.  It ICEs on powerpc64 big endian too, you just need -mcpu=power8
to trigger it.

[Bug target/69644] ICE with -O on __sync_bool_compare_and_swap with short in extract_insn, at recog.c:2286

2016-02-02 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69644

Martin Sebor  changed:

   What|Removed |Added

 Target||powerpc64le-*-linux-*
   Last reconfirmed||2016-2-2
  Known to fail||5.3.0, 6.0

--- Comment #1 from Martin Sebor  ---
This affects powerpc64le but I couldn't reproduce it on big-endian powerpc64.