[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-03-31 Thread amodra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #22 from Alan Modra  ---
Author: amodra
Date: Thu Mar 31 06:26:02 2016
New Revision: 234609

URL: https://gcc.gnu.org/viewcvs?rev=234609=gcc=rev
Log:
[RS6000] reload_vsx_from_gprsf splitter

This is PR68973 part 2, caused by the reload_vsx_from_gprsf splitter
emitting an invalid move.  Part 1 deferred for branch until it is
proven that the reload change is necessary.

Backport from mainline
2016-02-16  Alan Modra  
PR target/68973
* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter.
(p8_mtvsrd_df, p8_mtvsrd_sf): New.
(p8_mtvsrd_1, p8_mtvsrd_2): Delete.
(p8_mtvsrwz): New.
(p8_mtvsrwz_1, p8_mtvsrwz_2): Delete.
(p8_xxpermdi_): Take two DF inputs rather than one TF.
(p8_fmrgow_): Likewise.
(reload_vsx_from_gpr): Adjust for above.  Use "wa" for
clobber constraint.
(reload_fpr_from_gpr): Adjust for above.  Use "d" for
op0 constraint.
(reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting
to use movdi_internal64.  Remove op0_di.
* config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode.

Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.md
branches/gcc-4_9-branch/gcc/config/rs6000/vsx.md

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-03-31 Thread amodra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #21 from Alan Modra  ---
Author: amodra
Date: Thu Mar 31 06:24:40 2016
New Revision: 234608

URL: https://gcc.gnu.org/viewcvs?rev=234608=gcc=rev
Log:
[RS6000] reload_vsx_from_gprsf splitter

This is PR68973 part 2, caused by the reload_vsx_from_gprsf splitter
emitting an invalid move.  Part 1 deferred for branch until it is
proven that the reload change is necessary.

Backport from mainline
2016-02-16  Alan Modra  
PR target/68973
* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter.
(p8_mtvsrd_df, p8_mtvsrd_sf): New.
(p8_mtvsrd_1, p8_mtvsrd_2): Delete.
(p8_mtvsrwz): New.
(p8_mtvsrwz_1, p8_mtvsrwz_2): Delete.
(p8_xxpermdi_): Take two DF inputs rather than one TF.
(p8_fmrgow_): Likewise.
(reload_vsx_from_gpr): Adjust for above.  Use "wa" for
clobber constraint.
(reload_fpr_from_gpr): Adjust for above.  Use "d" for
op0 constraint.
(reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting
to use movdi_internal64.  Remove op0_di.
* config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode.

Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/rs6000/rs6000.md
branches/gcc-5-branch/gcc/config/rs6000/vsx.md

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-15 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Alan Modra  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #20 from Alan Modra  ---
Fixed

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-15 Thread amodra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #19 from Alan Modra  ---
Author: amodra
Date: Mon Feb 15 23:29:17 2016
New Revision: 233438

URL: https://gcc.gnu.org/viewcvs?rev=233438=gcc=rev
Log:
[RS6000] reload_vsx_from_gprsf splitter

This is PR68973 part 2, caused by the reload_vsx_from_gprsf splitter
emitting an invalid move.  The patch also fixes uses of TFmode, which
cannot now be assumed to be IBM double-double.

PR target/68973
* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter.
(p8_mtvsrd_df, p8_mtvsrd_sf): New.
(p8_mtvsrd_1, p8_mtvsrd_2): Delete.
(p8_mtvsrwz): New.
(p8_mtvsrwz_1, p8_mtvsrwz_2): Delete.
(p8_xxpermdi_): Take two DF inputs rather than one TF.
(p8_fmrgow_): Likewise.
(reload_vsx_from_gpr): Make clobber IF.  Adjust for above
changes.
(reload_fpr_from_gpr): Similarly. Use "d" for op0 constraint.
(reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting
to use movdi_internal64.  Remove op0_di.
* config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.md
trunk/gcc/config/rs6000/vsx.md

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-13 Thread amodra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #18 from Alan Modra  ---
Author: amodra
Date: Sun Feb 14 01:37:40 2016
New Revision: 233406

URL: https://gcc.gnu.org/viewcvs?rev=233406=gcc=rev
Log:
PRE_INC with invalid hard reg

PR target/68973
* reloads.c (find_reloads_address_1): For pre/post-inc/dec
with an invalid hard reg, reload just the reg not the entire
pre/post-inc/dec address expression.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/reload.c

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-11 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Alan Modra  changed:

   What|Removed |Added

   Assignee|segher at gcc dot gnu.org  |amodra at gmail dot com

--- Comment #16 from Alan Modra  ---
Patches posted for both the g++.dg/pr67211.C and the boost testcase.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-11 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #17 from Alan Modra  ---
Created attachment 37670
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37670=edit
rtl dumps

dumps for pr67211.C -O3 -mcpu=power7 -fno-vect-cost-model, mainline rev 233357.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-10 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Segher Boessenkool  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||segher at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |segher at gcc dot 
gnu.org

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-10 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Alan Modra  changed:

   What|Removed |Added

 CC||amodra at gmail dot com

--- Comment #14 from Alan Modra  ---
This looks like a reload problem.  The pr67211.C testcase on powerpc64le gives
reload this insn

(insn 155 153 156 8 (set (reg/f:DI 178 [ p3$_M_first ])
(mem/f:DI (pre_inc:DI (reg/f:DI 185 [ p3$_M_node ])) [3 MEM[base: _9,
offset: 0B]+0 S8 A64])) /src/gcc.git/gcc/testsuite/g++.dg/pr67211.C:28 550
{*movdi_internal64}
 (expr_list:REG_INC (reg/f:DI 185 [ p3$_M_node ])
(nil)))

and reload chooses to put reg 185 in fr31, likely due to using that reg in
vector insns elsewhere.  Of course, (pre_inc:DI (reg/f:DI 63)) isn't a valid
memory address so it needs reloading.  reload does that by reloading the entire
address into a gpr rather than just reloading fr31.  Unfortunately neither the
rs6000 backend machinery nor the code in push_reload that normally handles
secondary memory sees that a secondary reload is needed.

There is some pre_inc code in find_reloads_address_1 that could reload just
fr31 but that is currently only active for regs that already have a mem. 
Making that code active for invalid hard regs cures this failure.

Another fix is to disable the auto_inc_dec pass (maybe we should do that anyway
for powerpc processors where the update forms of memory insns are slow).

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-10 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #15 from David Edelsohn  ---
Improving find_reloads_address_1 seems the better path.  auto_inc_dec is
beneficial in recent Power processors.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-02-09 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||trippels at gcc dot gnu.org

--- Comment #13 from Markus Trippelsdorf  ---
Created attachment 37639
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37639=edit
reduced testcase

With today's trunk I've hit the ICE in the boost testsuite:

 % g++ -c -w -mcpu=power8 -O3 -mlra test_fixed_containers.ii
test_fixed_containers.ii: In function ‘void test_matrix(std::B) [with T =
std::complex]’:
test_fixed_containers.ii:203:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 1206 1205 1207 2 (set (reg:DI 108 31)
(reg:DI 9 9 [970])) test_fixed_containers.ii:171 540
{*movdi_internal64}
 (expr_list:REG_DEAD (reg:DI 9 9 [970])
(nil)))
test_fixed_containers.ii:203:1: internal compiler error: in
extract_constrain_insn, at recog.c:2190

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-21 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #12 from Jakub Jelinek  ---
Indeed, latest trunk with
-O3 -mcpu=power7 -mtune=power8 pr67211.C -fno-vect-cost-model
still ICEs.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-21 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #10 from Jakub Jelinek  ---
Indeed, there were tons of richi's SLP changes in the last 10 days.  Where one
of those changes make this bug latent.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-21 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #11 from Richard Biener  ---
Give a cost model change exposed this I suspect the cost mode fix (PR68961) hid
this again.  Just debug the issue ontop of r231674 please - it is definitely
a latent issue.  Or try -fno-vect-cost-model on g++.dg/pr67211.C and trunk.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-20 Thread seurer at linux dot vnet.ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #6 from Bill Seurer  ---
As of Tuesday (19 January 2015) morning this test case was no longer failing. 
Something fixed things up in the Friday-Monday timespan though I do not know
what it was.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-20 Thread seurer at linux dot vnet.ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #7 from Bill Seurer  ---
I should say that it succeeds on power8 LE.  I haven't tried it on a BE system
nor targeting power7.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-20 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #8 from Michael Meissner  ---
I did try it with svn id 232575 yesterday on a power7 BE target, using various
optimization levels and various -mcpu=/-mtune= combinations.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-20 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #9 from Michael Meissner  ---
Whoops, I saved the response too soon.  I meant I tried various combinations of
optimization, -mcpu=, -mtune=, -mbig/-mlittle, -m32 and I couldn't get it to
fail with subversion id 232575.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
Mike, could you please have a look at this?  This is a P1 blocker.
It ICEs also with -mcpu=power7 -mtune=power7.  And is again fixed with LRA as
various other PPC ICEs.
In IRA we have:
(insn 155 153 156 8 (set (reg/f:DI 178 [ p3$_M_first ])
(mem/f:DI (pre_inc:DI (reg/f:DI 185 [ p3$_M_node ])) [3 MEM[base: _9,
offset: 0B]+0 S8 A64])) pr67211.C:28 540 {*movdi_internal64}
 (expr_list:REG_INC (reg/f:DI 185 [ p3$_M_node ])
(nil)))
and disposition for pseudo 185 looks good: 9:r185 l0
but reload decides to put r185 into a floating point register despite of that,
because it is used in some VSX instruction.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #3 from Richard Biener  ---
That just made a latent issue (re-)appear.  It looks like just a reg-reg DImode
move - what can be possibly wrong with it?

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-08 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #4 from Michael Meissner  ---
I haven't looked at the bug, but on PowerPC systems before power8, the
following is illegal:

(insn 258 153 259 8 (set (reg:DI 9 9)
(reg/f:DI 63 31 [orig:185 p3$_M_node ] [185])) pr67211.C:28 540
{*movdi_internal64}
 (nil))

That is because register 9 is a GPR register and register 63 is a FPR register.
 Power8 systems in 64-bit mode have the ability to move values between GPRs and
FPRs/VSX registers, but earlier systems don't.  In order to transfer stuff
between the two register sets, you would need to do a store and a load.  Power8
32-bit (big endian only) would need scratch registers and multiple instructions
to transfer 64-bit values.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2016-01-02 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #2 from Andreas Schwab  ---
141d7d6e93a44d509f0be246231b46939e728c97 is the first bad commit
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231674
138bc75d-0d04-0410-961f-82ee72b054a4

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2015-12-22 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

David Edelsohn  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-12-22
 CC||dje at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from David Edelsohn  ---
Confirmed.

[Bug target/68973] [6 regression] Internal compiler error on power for gcc/testsuite/g++.dg/pr67211.C

2015-12-18 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

Richard Biener  changed:

   What|Removed |Added

 Target||powerpc64*
   Target Milestone|--- |6.0