[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-03 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #19 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Mar  3 09:18:01 2017
New Revision: 245861

URL: https://gcc.gnu.org/viewcvs?rev=245861=gcc=rev
Log:
PR target/79514
* config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

Uroš Bizjak  changed:

   What|Removed |Added

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

--- Comment #18 from Uroš Bizjak  ---
Fixed everywhere.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #17 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Mar  2 21:35:38 2017
New Revision: 245854

URL: https://gcc.gnu.org/viewcvs?rev=245854=gcc=rev
Log:
PR target/79514
* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.

testsuite/ChangeLog:

PR target/79514
* gcc.target/i386/pr79514.c: New test.


Added:
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/pr79514.c
Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/i386/i386.md
branches/gcc-5-branch/gcc/testsuite/ChangeLog

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #16 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Mar  2 20:42:33 2017
New Revision: 245851

URL: https://gcc.gnu.org/viewcvs?rev=245851=gcc=rev
Log:
PR target/79514
* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.

testsuite/ChangeLog:

PR target/79514
* gcc.target/i386/pr79514.c: New test.


Added:
branches/gcc-6-branch/gcc/testsuite/gcc.target/i386/pr79514.c
Modified:
branches/gcc-6-branch/gcc/ChangeLog
branches/gcc-6-branch/gcc/config/i386/i386.md
branches/gcc-6-branch/gcc/testsuite/ChangeLog

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #15 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Mar  2 18:47:03 2017
New Revision: 245844

URL: https://gcc.gnu.org/viewcvs?rev=245844=gcc=rev
Log:
PR target/79514
* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.

testsuite/ChangeLog:

PR target/79514
* gcc.target/i386/pr79514.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/i386/pr79514.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md
trunk/gcc/testsuite/ChangeLog

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

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

--- Comment #14 from Jakub Jelinek  ---
Comment on attachment 40870
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40870
Proposed patch

LGTM.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #13 from Uroš Bizjak  ---
Created attachment 40870
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40870=edit
Proposed patch

Patch that implements *pushxf_rounded pattern.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-02 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

Uroš Bizjak  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
  Component|middle-end  |target

--- Comment #12 from Uroš Bizjak  ---
(In reply to Jakub Jelinek from comment #11)
> (In reply to Uroš Bizjak from comment #10)
> > (In reply to Jakub Jelinek from comment #9)
> > Years ago, I defined HAVE_PRE_DEC, and I was told that it is intended for
> > targets that can increment pointer on *any* memory access, not just on stack
> > pointer. So, x86 uses PRE_DEC and POST_INC only to abstract push and pop
> > insn. Various parts of the compiler (modulo auto-inc-dec.c) mostly check for
> > PRE_DEC and POST_INC to skip further optimizations, which is non-issue for
> > push and pop.
> > 
> > But this generic part of the code assumes that any target can handle
> > PRE_MODIFY, and emits insn even for !HAVE_PRE_MODIFY_DISP. This is
> > conservatively incorrect, so conditionally disabling the part that blindly
> > emits PRE_MODIFY is IMO the way to go.
> 
> But isn't that the same?  Targets can only define HAVE_PRE_MODIFY_DISP, if
> they support PRE_MODIFY with arbitrary registers, but when they only support
> it with the stack pointer, they can't.

Yes, this makes sense. I have a patch.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-01 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

--- Comment #3 from Uroš Bizjak  ---
(In reply to Gerhard Steinmetz from comment #0)
> (insn 10 9 11 2 (set (mem:XF (pre_modify:DI (reg/f:DI 7 sp)
> (plus:DI (reg/f:DI 7 sp)
> (const_int -16 [0xfff0]))) [2  S12 A32])
> (reg:XF 87 [ _1 ])) "pr46251.c":3 118 {*pushxf}
>  (expr_list:REG_DEAD (reg:XF 87 [ _1 ])
> (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
> (nil

This doesn't look like a valid RTL to me.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-03-01 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org,
   ||uros at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
With -m96bit-long-double pr79514.c -mno-accumulate-outgoing-args it goes all
the way back to r95000 (still ICEs), but r9 doesn't ICE.
We get a pre_modify and perhaps that is what the backend doesn't like.

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-02-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2
   Target Milestone|--- |5.5

[Bug target/79514] [5/6/7 Regression] ICE in curr_insn_transform, at lra-constraints.c:3773

2017-02-15 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514

Martin Liška  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-02-15
 CC||marxin at gcc dot gnu.org
Summary|ICE in curr_insn_transform, |[5/6/7 Regression] ICE in
   |at lra-constraints.c:3773   |curr_insn_transform, at
   ||lra-constraints.c:3773
 Ever confirmed|0   |1

--- Comment #1 from Martin Liška  ---
Confirmed, started with GCC 4.9.1.