public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/64688] [5 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)
Date: Sun, 25 Jan 2015 16:00:00 -0000	[thread overview]
Message-ID: <bug-64688-4-cWmY5qYBZl@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-64688-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64688

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ra
             Status|REOPENED                    |NEW
          Component|target                      |rtl-optimization

--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Markus Trippelsdorf from comment #11)
> Created attachment 34566 [details]
> reduced testcase
> 
> trippels@gcc20 % g++ -c -O3 -std=c++11 -march=westmere performance.ii
> performance.ii: In function ‘void performance_testtest_method()’:
> performance.ii:133:1: internal compiler error: Max. number of generated
> reload insns per insn is achieved (90)

Happens when trying to reload for:

(insn 73 72 393 2 (set (reg:V4SI 304)
        (vec_merge:V4SI (vec_duplicate:V4SI (subreg:SI (reg:QI 103 [ SR.27 ])
0))
            (const_vector:V4SI [
                    (const_int 0 [0])
                    (const_int 0 [0])
                    (const_int 0 [0])
                    (const_int 0 [0])
                ])
            (const_int 1 [0x1]))) 2460 {vec_setv4si_0}
     (nil))

Reload goes into infinite loop here.

Changing pseudo 103 in operand 2 of insn 73 on equiv 0
      Creating newreg=359, assigning class ALL_REGS to subreg reg r359
   73: r304:V4SI=vec_merge(vec_duplicate(r359:QI#0),const_vector,0x1)
    Inserting subreg reload before:
  502: r359:QI=0

            2 Non pseudo reload: reject++
          alt=0,overall=1,losers=0,rld_nregs=0
     Choosing alt 0 in insn 73:  (0) =Yr  (1) C  (2) Yr {vec_setv4si_0}
      Change to class NO_REX_SSE_REGS for r359
            0 Non input pseudo reload: reject++
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
          alt=0,overall=16,losers=2,rld_nregs=2
            0 Non input pseudo reload: reject++
          alt=1,overall=7,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
            alt=2,overall=16,losers=2 -- refuse
            0 Non input pseudo reload: reject++
            1 Non-pseudo reload: reject+=2
            1 Non input pseudo reload: reject++
            alt=3,overall=16,losers=2 -- refuse
            0 Non input pseudo reload: reject++
          alt=4,overall=7,losers=1,rld_nregs=1
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
            alt=5,overall=13,losers=1 -- refuse
            0 Non input pseudo reload: reject++
          alt=6,overall=7,losers=1,rld_nregs=0
            alt=7: Bad operand -- refuse
            alt=8: Bad operand -- refuse
            0 Non input pseudo reload: reject++
            alt=9: Bad operand -- refuse
     Choosing alt 6 in insn 502:  (0) m  (1) qn {*movqi_internal}
      Creating newreg=360 from oldreg=359, assigning class NO_REGS to r360
  502: r360:QI=0
    Inserting insn reload after:
  503: r359:QI=r360:QI

            0 Non input pseudo reload: reject++
          alt=0,overall=13,losers=2,rld_nregs=2
            0 Non input pseudo reload: reject++
          alt=1,overall=13,losers=2,rld_nregs=2
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=2,overall=8,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            alt=3,overall=13,losers=2 -- refuse
            0 Non input pseudo reload: reject++
            alt=4,overall=13,losers=2 -- refuse
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
            alt=5,overall=13,losers=1 -- refuse
            0 Non input pseudo reload: reject++
            alt=6,overall=13,losers=2 -- refuse
            alt=7: Bad operand -- refuse
            alt=8: Bad operand -- refuse
            0 Non input pseudo reload: reject++
            alt=9: Bad operand -- refuse
     Choosing alt 2 in insn 503:  (0) q  (1) qm {*movqi_internal}
      Creating newreg=361 from oldreg=359, assigning class GENERAL_REGS to r361
  503: r361:QI=r360:QI
    Inserting insn reload after:
  504: r359:QI=r361:QI

            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=0,overall=608,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=1,overall=608,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=2,overall=608,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=3,overall=608,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=4,overall=608,losers=1,rld_nregs=1
            Staticly defined alt reject+=6
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=5,overall=614,losers=1,rld_nregs=1
            0 Non input pseudo reload: reject++
            1 Non pseudo reload: reject++
          alt=6,overall=8,losers=1,rld_nregs=0
            alt=7: Bad operand -- refuse
            alt=8: Bad operand -- refuse
            0 Non input pseudo reload: reject++
            alt=9: Bad operand -- refuse
     Choosing alt 6 in insn 504:  (0) m  (1) qn {*movqi_internal}
      Creating newreg=362 from oldreg=359, assigning class NO_REGS to r362
...


This is a new problem and does not look like target problem to me.

Recategorizing back to RA problem.
>From gcc-bugs-return-474784-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Jan 25 16:37:40 2015
Return-Path: <gcc-bugs-return-474784-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 10521 invoked by alias); 25 Jan 2015 16:37:32 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 9480 invoked by uid 48); 25 Jan 2015 16:36:59 -0000
From: "antony at cosmologist dot info" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/64787] New: Invalid code on sourced allocation of class(*) character string
Date: Sun, 25 Jan 2015 16:37:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: fortran
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: antony at cosmologist dot info
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter
Message-ID: <bug-64787-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-01/txt/msg02778.txt.bz2
Content-length: 937

https://gcc.gnu.org/bugzilla/show_bug.cgi?idd787

            Bug ID: 64787
           Summary: Invalid code on sourced allocation of class(*)
                    character string
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: antony at cosmologist dot info

On trunk

 module X
 contains

    subroutine AddCopy(C)
    class(*), intent(in) :: C
    class(*), pointer :: P
    allocate(P, source=C)
    end subroutine

 end module X

 program test
 use X

 call AddCopy('test string')

 end program test


compiles, but when compiled with -O3 this always gives me a Seg Fault when run
(and probably invalid code more generally).

It may be related to
https://gcc.gnu.org/bugzilla/show_bug.cgi?idd692
https://gcc.gnu.org/bugzilla/show_bug.cgi?idD672


  parent reply	other threads:[~2015-01-25 16:00 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-20 12:34 [Bug target/64688] New: " trippels at gcc dot gnu.org
2015-01-20 16:50 ` [Bug target/64688] [5 Regression] " jakub at gcc dot gnu.org
2015-01-21 20:52 ` vmakarov at gcc dot gnu.org
2015-01-22  8:09 ` ubizjak at gmail dot com
2015-01-22 14:45 ` uros at gcc dot gnu.org
2015-01-22 20:26 ` uros at gcc dot gnu.org
2015-01-23 23:05 ` jakub at gcc dot gnu.org
2015-01-24 10:31 ` trippels at gcc dot gnu.org
2015-01-24 10:40 ` trippels at gcc dot gnu.org
2015-01-24 10:42 ` ubizjak at gmail dot com
2015-01-24 14:40 ` trippels at gcc dot gnu.org
2015-01-25 16:00 ` ubizjak at gmail dot com [this message]
2015-01-30 22:23 ` [Bug rtl-optimization/64688] [4.9/5 " vmakarov at gcc dot gnu.org
2015-01-31  2:48 ` law at redhat dot com
2015-01-31  7:18 ` trippels at gcc dot gnu.org
2015-01-31  8:53 ` [Bug rtl-optimization/64688] [4.9 " jakub at gcc dot gnu.org
2015-02-03 16:31 ` law at redhat dot com
2015-02-04 18:26 ` vmakarov at gcc dot gnu.org
2015-03-27 20:13 ` vmakarov at gcc dot gnu.org
2015-04-22 12:02 ` jakub at gcc dot gnu.org
2015-04-22 12:22 ` ubizjak at gmail dot com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-64688-4-cWmY5qYBZl@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).