This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/50427] New: IRA fails to detect conflict


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50427

             Bug #: 50427
           Summary: IRA fails to detect conflict
    Classification: Unclassified
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: bigotp@acm.org


Created attachment 25299
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25299
C source, intermediate dump files, build command

Per discussion on gcc email list, this may be a bug in gcc rather than in
the msp430 back-end.  Any assistance in isolating it would be welcome.  gcc
with the msp430 back-end integrated is available at
git://mspgcc.git.sourceforge.net/gitroot/mspgcc/gcc in branch master.

In the msp430 back end, hard registers 4 through 15 are HImode, with
adjacent register sequences used for SImode and DImode.  In preparation for
a library call, I'm emitting RTL that assigns values directly to reg:SI 4.

Despite that, in gcc 4.5.x and 4.6.x IRA choses reg:HI 4 as the destination
for a pseudo-register for a preceding assignment, and does nothing to
preserve the value over the span where the register is part of an SI value.

Attached is a sample program and the dumps from what appear to be relevant
phases.  I can provide any further details required.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]