[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-12-07 Thread kelvin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

--- Comment #6 from kelvin at gcc dot gnu.org ---
Author: kelvin
Date: Thu Dec  7 13:20:27 2017
New Revision: 255465

URL: https://gcc.gnu.org/viewcvs?rev=255465=gcc=rev
Log:
gcc/testsuite/ChangeLog:

2017-12-07  Kelvin Nilsen  

Backport from trunk
2017-05-08  Kelvin Nilsen  

PR target/80101
* gcc.target/powerpc/pr80101-1.c: New test.


gcc/ChangeLog:

2017-12-07  Kelvin Nilsen  

Backport from trunk
2017-05-08  Kelvin Nilsen  

PR target/80101
* config/rs6000/power6.md: Replace store_data_bypass_p calls with
rs6000_store_data_bypass_p in seven define_bypass directives and
in several comments.
* config/rs6000/rs6000-protos.h: Add prototype for
rs6000_store_data_bypass_p function.
* config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
function implements slightly different (rs6000-specific) semantics
than store_data_bypass_p, returning false rather than aborting
with assertion error when arguments do not satisfy the
requirements of store data bypass.
(rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
rs6000_store_data_bypass_p.


Added:
branches/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/pr80101-1.c
Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/rs6000/power6.md
branches/gcc-7-branch/gcc/config/rs6000/rs6000-protos.h
branches/gcc-7-branch/gcc/config/rs6000/rs6000.c
branches/gcc-7-branch/gcc/testsuite/ChangeLog

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-12-06 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
Note, the patch has been committed to trunk and backported to 6.x, but not 7.x
in between those.

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-09-15 Thread kelvin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

kelvin at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from kelvin at gcc dot gnu.org ---
Patch was commited 2017-05-09.  Was backported to GCC 6 2017-07-14.

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-07-14 Thread kelvin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

--- Comment #3 from kelvin at gcc dot gnu.org ---
Author: kelvin
Date: Fri Jul 14 16:58:00 2017
New Revision: 250210

URL: https://gcc.gnu.org/viewcvs?rev=250210=gcc=rev
Log:
gcc/ChangeLog:

2017-07-14  Kelvin Nilsen  

Backports from trunk

2017-03-23  Kelvin Nilsen  
* config/rs6000/rs6000.c (rs6000_option_override_internal): Change
handling of certain combinations of target options, including the
combinations -mpower8-vector vs. -mno-vsx, -mpower8-vector vs.
-mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.

2017-03-27  Kelvin Nilsen  
PR target/80103
* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
special handling for target option conflicts between dform options
(-mpower9-dform, -mpower9-dform-vector, -mpower9-dform-scalar) and
-mno-direct-move.

2017-05-08  Kelvin Nilsen  
PR target/80101
* config/rs6000/power6.md: Replace store_data_bypass_p calls with
rs6000_store_data_bypass_p in seven define_bypass directives and
in several comments.
* config/rs6000/rs6000-protos.h: Add prototype for
rs6000_store_data_bypass_p function.
* config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
function implements slightly different (rs6000-specific) semantics
than store_data_bypass_p, returning false rather than aborting
with assertion error when arguments do not satisfy the
requirements of store data bypass.
(rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
rs6000_store_data_bypass_p.

gcc/testsuite/ChangeLog:

2017-07-14  Kelvin Nilsen  

Backports from trunk:

2017-01-23  Kelvin Nilsen  
PR target/9
* gcc.dg/loop-8.c: Modify dg-skip-if directive to exclude this
test on powerpc targets.

2017-02-08  Kelvin Nilsen  
PR target/68972
* g++.dg/cpp1y/vla-initlist1.C: Add dg-skip-if directive to
disable this test on power architecture.

2017-03-23  Kelvin Nilsen  
* gcc.target/powerpc/p9-options-1.c: New test.

2017-03-27  Kelvin Nilsen  
PR target/80103
* gcc.target/powerpc/pr80103-1.c: New test.

2017-05-08  Kelvin Nilsen  
PR target/80101
* gcc.target/powerpc/pr80101-1.c: New test.

2017-07-05  Kelvin Nilsen  
PR target/80103
* gcc.target/powerpc/pr80103-1.c (b): Correct spelling of
__attribute__.


Added:
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/p9-options-1.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/pr80101-1.c
branches/gcc-6-branch/gcc/testsuite/gcc.target/powerpc/pr80103-1.c
Modified:
branches/gcc-6-branch/gcc/ChangeLog
branches/gcc-6-branch/gcc/config/rs6000/power6.md
branches/gcc-6-branch/gcc/config/rs6000/rs6000-protos.h
branches/gcc-6-branch/gcc/config/rs6000/rs6000.c
branches/gcc-6-branch/gcc/testsuite/ChangeLog
branches/gcc-6-branch/gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
branches/gcc-6-branch/gcc/testsuite/gcc.dg/loop-8.c

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-05-08 Thread kelvin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

--- Comment #2 from kelvin at gcc dot gnu.org ---
Author: kelvin
Date: Tue May  9 01:15:46 2017
New Revision: 24

URL: https://gcc.gnu.org/viewcvs?rev=24=gcc=rev
Log:
gcc/testsuite/ChangeLog:

2017-05-08  Kelvin Nilsen  

PR target/80101
* gcc.target/powerpc/pr80101-1.c: New test.


gcc/ChangeLog:

2017-05-08  Kelvin Nilsen  

PR target/80101
* config/rs6000/power6.md: Replace store_data_bypass_p calls with
rs6000_store_data_bypass_p in seven define_bypass directives and
in several comments.
* config/rs6000/rs6000-protos.h: Add prototype for
rs6000_store_data_bypass_p function.
* config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
function implements slightly different (rs6000-specific) semantics
than store_data_bypass_p, returning false rather than aborting
with assertion error when arguments do not satisfy the
requirements of store data bypass.
(rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
rs6000_store_data_bypass_p.


Added:
trunk/gcc/testsuite/gcc.target/powerpc/pr80101-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/power6.md
trunk/gcc/config/rs6000/rs6000-protos.h
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/testsuite/ChangeLog

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-03-20 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

--- Comment #1 from Segher Boessenkool  ---
power6.md defines a bypass:

; define the bypass for the case where the value written
; by a fixed point op is used as the source value on a
; store.
(define_bypass 1 "power6-integer,\
  power6-exts,\
  power6-shift,\
  power6-insert,\
  power6-insert-dword"
 "power6-store,\
  power6-store-update,\
  power6-store-update-indexed,\
  power6-fpstore,\
  power6-fpstore-update"
  "store_data_bypass_p")

where power6-integer is defined as:

(define_insn_reservation "power6-integer" 1
  (and (ior (eq_attr "type" "integer")
(and (eq_attr "type" "add,logical")
 (eq_attr "dot" "no")))
   (eq_attr "cpu" "power6"))
  "FXU_power6")

and the default for "type" is "integer".  The instruction on which we
crash is:

(define_insn "blockage"
  [(unspec_volatile [(const_int 0)] UNSPECV_BLOCK)]
  ""
  "")

(which does not have a SET in it, which however is required by
store_data_bypass_p).

"blockage" should not have type "integer" for this to work.

To fix it more generally, maybe we can teach bypass_p to ignore insns
without outputs?

[Bug target/80101] ICE in store_data_bypass_p, at recog.c:3737

2017-03-20 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101

Segher Boessenkool  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-21
 Ever confirmed|0   |1