public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/46779] New: wrong code generation for array access
@ 2010-12-03 11:31 mschulze at ivs dot cs.ovgu.de
  2010-12-03 13:37 ` [Bug c/46779] " rguenth at gcc dot gnu.org
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: mschulze at ivs dot cs.ovgu.de @ 2010-12-03 11:31 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: wrong code generation for array access
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: c
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: mschulze@ivs.cs.ovgu.de
                CC: mschulze@ivs.cs.ovgu.de
            Target: avr-*-*


Created attachment 22611
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22611
example program for reproducing the wrong code generation

The gcc versions 4.4.0-4.4.5 generates wrong code for an array access if some
thing come together and it was very difficult to produce a nearly minimal test
case. It seems to be that the generation of the code goes wrong if using size
optimization, inline assembler and nested loops. Maybe the optimizer runs out
of usable registers, because some registers are globbered by the inline
assembler. The inline assembler is not from my self, because I used a macro
from the avr-libc (version 1.6.8) for filling up a boot page for later writing
this into the flash. The relevant code look as follows (in the code I expanded
the macro directly):

uint8_t array[256]={'A','B'};

int main(void) {
    uint8_t *buf=array;
    uint32_t page=0;
    uint16_t w;
    uint8_t y;
    uint16_t i;
    for (y=0;y<100;++y) {
        page=((uint16_t)y)<<8;
        for (i=0; i<10; i+=2) {
            w = (buf[i+1]);
            w<<=8;
            w|= buf[i];
            __asm__ __volatile__
            (
                "movw  r0, %4\n\t"
                "movw r30, %A3\n\t"
                "sts %1, %C3\n\t"
                "sts %0, %2\n\t"
                "spm\n\t"
                "clr  r1\n\t"
              :
              :
                  "i" (_SFR_MEM_ADDR(__SPM_REG)),
                  "i" (_SFR_MEM_ADDR(RAMPZ)),
                  "r" ((uint8_t)__BOOT_PAGE_FILL),
                  "r" ((uint32_t)(page+i)),
                  "r" ((uint16_t)w)
                : "r0", "r30", "r31"
                );
        }
    }
    return 0;
}

To reproduce the bug, compile the provided attachment with:

avr-gcc -Os main.cc -mmcu=atmega128

This generates, showing only the inner loop:

  ea:   60 e0           ldi     r22, 0x00       ; 0
  ec:   eb 01           movw    r28, r22
  ee:   6c 91           ld      r22, X
  f0:   70 e0           ldi     r23, 0x00       ; 0
  f2:   6c 2b           or      r22, r28
  f4:   7d 2b           or      r23, r29
  f6:   0b 01           movw    r0, r22
  f8:   f9 01           movw    r30, r18
  fa:   40 93 5b 00     sts     0x005B, r20
  fe:   10 93 68 00     sts     0x0068, r17
 102:   e8 95           spm
 104:   11 24           eor     r1, r1
 106:   12 96           adiw    r26, 0x02       ; 2
 108:   2e 5f           subi    r18, 0xFE       ; 254
 10a:   3f 4f           sbci    r19, 0xFF       ; 255
 10c:   4f 4f           sbci    r20, 0xFF       ; 255
 10e:   5f 4f           sbci    r21, 0xFF       ; 255
 110:   71 e0           ldi     r23, 0x01       ; 1
 112:   aa 30           cpi     r26, 0x0A       ; 10
 114:   b7 07           cpc     r27, r23
 116:   49 f7           brne    .-46            ; 0xea <main+0x1c>

and you see at 0xee the RAM is read, but only at this position, however, in the
C-source we have two reads.

This example compiled with gcc version 4.4.x generates wrong code, instead
using gcc version 4.5.x it works as it should. However, I am not sure if this
is fixed there or is this bug there also latently contained. Maybe, it is bug
in the optimizer, which only needs another example to show up there too.

Some information to the used compiler:
avr-gcc  -v 
Using built-in specs.        
Target: avr
Configured with: /tmp/cross-build/gcc-4.4.0/configure --target=avr
--prefix=/localapp/cross-gcc/builds/2.20.1-4.4.0-7.1/avr --program-prefix=avr-
--with-gnu-ld --with-gnu-as --enable-languages=c,c++
Thread model: single
gcc version 4.4.0 (GCC)

The other compiler version are compiled with same configure flags.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug c/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
@ 2010-12-03 13:37 ` rguenth at gcc dot gnu.org
  2010-12-03 13:58 ` mschulze at ivs dot cs.ovgu.de
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: rguenth at gcc dot gnu.org @ 2010-12-03 13:37 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-12-03 13:37:46 UTC ---
at least I see r1 use in the asm but no clobber for it, instead it clobbers
the seemingly unused r31.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug c/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
  2010-12-03 13:37 ` [Bug c/46779] " rguenth at gcc dot gnu.org
@ 2010-12-03 13:58 ` mschulze at ivs dot cs.ovgu.de
  2010-12-03 14:06 ` [Bug target/46779] " rguenth at gcc dot gnu.org
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: mschulze at ivs dot cs.ovgu.de @ 2010-12-03 13:58 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Michael Schulze <mschulze at ivs dot cs.ovgu.de> 2010-12-03 13:58:40 UTC ---
(In reply to comment #1)
> at least I see r1 use in the asm but no clobber for it, instead it clobbers
> the seemingly unused r31.
Yes correct, r1 is not clobbered, however, I tested it with clobbering this one
too. But this does not change the code generation, leading to the same
erroneous code. In case of r31, I think you are wrong because it is used in
"movw r30, %A3\n\t".

Are you agree this is a bug or not?


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
  2010-12-03 13:37 ` [Bug c/46779] " rguenth at gcc dot gnu.org
  2010-12-03 13:58 ` mschulze at ivs dot cs.ovgu.de
@ 2010-12-03 14:06 ` rguenth at gcc dot gnu.org
  2010-12-03 14:16 ` mschulze at ivs dot cs.ovgu.de
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: rguenth at gcc dot gnu.org @ 2010-12-03 14:06 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c                           |target
            Version|4.4.0                       |4.4.5

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-12-03 14:05:42 UTC ---
(In reply to comment #2)
> (In reply to comment #1)
> > at least I see r1 use in the asm but no clobber for it, instead it clobbers
> > the seemingly unused r31.
> Yes correct, r1 is not clobbered, however, I tested it with clobbering this one
> too. But this does not change the code generation, leading to the same
> erroneous code. In case of r31, I think you are wrong because it is used in
> "movw r30, %A3\n\t".
> 
> Are you agree this is a bug or not?

I don't know anything about AVR, so I can't say that (I just noticed the r1
issue).


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (2 preceding siblings ...)
  2010-12-03 14:06 ` [Bug target/46779] " rguenth at gcc dot gnu.org
@ 2010-12-03 14:16 ` mschulze at ivs dot cs.ovgu.de
  2011-02-05 16:01 ` avr at gjlay dot de
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: mschulze at ivs dot cs.ovgu.de @ 2010-12-03 14:16 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Michael Schulze <mschulze at ivs dot cs.ovgu.de> 2010-12-03 14:16:30 UTC ---
> I don't know anything about AVR, so I can't say that (I just noticed the r1
> issue).
Ok due to the compiler abi for the avr, r0,r1 are fixed registers that are
never allocated by gcc for local data, but often used for fixed purposes. r0 is
a temporary register that may be globbered by any C-code. r1 is assumed to be
always zero in any C-code. This is the reason, why it is cleared at the end of
the inline assembler.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (3 preceding siblings ...)
  2010-12-03 14:16 ` mschulze at ivs dot cs.ovgu.de
@ 2011-02-05 16:01 ` avr at gjlay dot de
  2011-02-23 15:55 ` avr at gjlay dot de
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: avr at gjlay dot de @ 2011-02-05 16:01 UTC (permalink / raw)
  To: gcc-bugs

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

Georg Lay <avr at gjlay dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |avr at gjlay dot de

--- Comment #5 from Georg Lay <avr at gjlay dot de> 2011-02-05 16:01:14 UTC ---
Probably we see PR45291 here introduced by the byte-shift w <<= 8. Some
versions of avr backend emit bad subreg rtx which is still present in 4.5.2 and
4.6.0

http://gcc.gnu.org/PR45291

FYI, not clobbering R1 resp. R0 will not trigger a bug because there regs are
fixed.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (4 preceding siblings ...)
  2011-02-05 16:01 ` avr at gjlay dot de
@ 2011-02-23 15:55 ` avr at gjlay dot de
  2011-02-24 14:04 ` avr at gjlay dot de
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: avr at gjlay dot de @ 2011-02-23 15:55 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Georg-Johann Lay <avr at gjlay dot de> 2011-02-23 15:51:11 UTC ---

I can confirm the bug for gcc version 4.4.6 20110222 (prerelease) (GCC)

In pass .168r.asmcons we have

(insn 92 57 93 4 pr46779-1.c:17 (set (subreg:QI (reg/v:HI 85 [ w.30 ]) 1)
        (mem:QI (plus:HI (reg:HI 88 [ ivtmp.21 ])
                (const_int 1 [0x1])) [0 S1 A8])) 4 {*movqi} (nil))

(insn 93 92 61 4 pr46779-1.c:17 (set (subreg:QI (reg/v:HI 85 [ w.30 ]) 0)
        (const_int 0 [0x0])) 4 {*movqi} (nil))

insn 93 invalidates insn 92. It accesses reg 85 as QI but doing so it
invalidated the high part. This is due to subreg semantic. After IRA we have in
.c.172r.ira:
(insn 105 57 92 4 pr46779-1.c:17 (set (reg:HI 14 r14)
        (reg/v:HI 28 r28 [orig:85 w.30 ] [85])) 10 {*movhi} (nil))

(insn 92 105 107 4 pr46779-1.c:17 (set (reg:QI 22 r22)
        (mem:QI (plus:HI (reg:HI 26 r26 [orig:88 ivtmp.21 ] [88])
                (const_int 1 [0x1])) [0 S1 A8])) 4 {*movqi} (nil))

(insn 107 92 106 4 pr46779-1.c:17 (set (reg:QI 15 r15 [+1 ])
        (reg:QI 22 r22)) 4 {*movqi} (nil))

(insn 106 107 93 4 pr46779-1.c:17 (set (reg/v:HI 28 r28 [orig:85 w.30 ] [85])
        (reg:HI 14 r14)) 10 {*movhi} (nil))

(insn 93 106 108 4 pr46779-1.c:17 (set (reg:QI 22 r22)
        (const_int 0 [0x0])) 4 {*movqi} (nil))

(insn 108 93 61 4 pr46779-1.c:17 (set (reg/v:HI 28 r28 [orig:85 w.30 ] [85])
        (reg:HI 22 r22)) 10 {*movhi} (nil))

Now we see that insn 108 (from IRA/reload) overwrites the contents of reg 28.

So in fact we see a bug similar to PR45291 which also originates in bad
multiple subreg usage as Lvalue.

The difference is that in 4.4 the bad subreg moves come from 

(define_insn_and_split "*rotlhi3_8"
(define_insn_and_split "*rotlsi3_16"
(define_insn_and_split "*rotlsi3_8"
(define_insn_and_split "*rotlsi3_24"

whereas in 4.5 and 4.6 they come from avr.c:avr_rotate_bytes()


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (5 preceding siblings ...)
  2011-02-23 15:55 ` avr at gjlay dot de
@ 2011-02-24 14:04 ` avr at gjlay dot de
  2011-04-14 18:52 ` gjl at gcc dot gnu.org
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: avr at gjlay dot de @ 2011-02-24 14:04 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Georg-Johann Lay <avr at gjlay dot de> 2011-02-24 13:58:58 UTC ---
Created attachment 23453
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23453
Simpler example without #include

Slightly simpler test case, compile with

avr-gcc -S -Os -mmcu=atmega128 pr46779-1.c

Pass .subreg1 emits subregs as Lvalues with the same pseudo as SUBREG_REG so
that the second insn ovewrwrites the first.

Target: avr
Configured with: /gnu/source/gcc.gnu.org/branches/gcc-4_4-branch/configure
--target=avr --prefix=/home/georg/gcc/install/gcc-4.4 --enable-languages=c,c++
--disable-libssp --disable-libada --disable-nls --disable-shared
Thread model: single
gcc version 4.4.6 20110222 (prerelease) (GCC)
[...]
GNU C (GCC) version 4.4.6 20110222 (prerelease) (avr)
        compiled by GNU C version 4.3.2 [gcc-4_3-branch revision 141291], GMP
version 4.3.1, MPFR version 2.4.2.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (6 preceding siblings ...)
  2011-02-24 14:04 ` avr at gjlay dot de
@ 2011-04-14 18:52 ` gjl at gcc dot gnu.org
  2011-06-16 10:01 ` gjl at gcc dot gnu.org
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-04-14 18:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-04-14 18:50:16 UTC ---
Author: gjl
Date: Thu Apr 14 18:50:02 2011
New Revision: 172442

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172442
Log:
    PR target/46779
    PR target/45291
    PR target/41894
    * gcc.target/avr/pr46779-1.c: New test case
    * gcc.target/avr/pr46779-2.c: New test case


Added:
    trunk/gcc/testsuite/gcc.target/avr/pr46779-1.c
    trunk/gcc/testsuite/gcc.target/avr/pr46779-2.c
Modified:
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (7 preceding siblings ...)
  2011-04-14 18:52 ` gjl at gcc dot gnu.org
@ 2011-06-16 10:01 ` gjl at gcc dot gnu.org
  2011-06-27 15:49 ` jakub at gcc dot gnu.org
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-06-16 10:01 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2011.06.16 10:01:03
                 CC|avr at gjlay dot de         |gjl at gcc dot gnu.org
   Target Milestone|---                         |4.6.1
     Ever Confirmed|0                           |1

--- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-06-16 10:01:03 UTC ---
Reconfirmed with current 4.7 trunk against 

gcc.target/avr/pr46779-1.c


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (8 preceding siblings ...)
  2011-06-16 10:01 ` gjl at gcc dot gnu.org
@ 2011-06-27 15:49 ` jakub at gcc dot gnu.org
  2011-07-08 17:40 ` gjl at gcc dot gnu.org
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-06-27 15:49 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.6.1                       |4.6.2

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-27 12:32:54 UTC ---
GCC 4.6.1 is being released.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (9 preceding siblings ...)
  2011-06-27 15:49 ` jakub at gcc dot gnu.org
@ 2011-07-08 17:40 ` gjl at gcc dot gnu.org
  2011-07-08 17:47 ` gjl at gcc dot gnu.org
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-07-08 17:40 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-08 17:38:43 UTC ---
Author: gjl
Date: Fri Jul  8 17:38:39 2011
New Revision: 176053

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176053
Log:

    PR target/46779
    * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
    In particular, allow 8-bit values in r28 and r29.
    (avr_hard_regno_scratch_ok): Disallow any register that might be
    part of the frame pointer.
    (avr_hard_regno_rename_ok): Same.
    (avr_legitimate_address_p): Don't allow SUBREGs.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr.c


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (10 preceding siblings ...)
  2011-07-08 17:40 ` gjl at gcc dot gnu.org
@ 2011-07-08 17:47 ` gjl at gcc dot gnu.org
  2011-07-08 17:54 ` gjl at gcc dot gnu.org
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-07-08 17:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-08 17:46:42 UTC ---
Author: gjl
Date: Fri Jul  8 17:46:38 2011
New Revision: 176055

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176055
Log:

    PR target/46779
    Backport from mainline SVN 176053.
    2011-07-08  Georg-Johann Lay
    * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
    In particular, allow 8-bit values in r28 and r29.
    (avr_hard_regno_scratch_ok): Disallow any register that might be
    part of the frame pointer.
    (avr_hard_regno_rename_ok): Same.
    (avr_legitimate_address_p): Don't allow SUBREGs.


Modified:
    branches/gcc-4_6-branch/gcc/ChangeLog
    branches/gcc-4_6-branch/gcc/config/avr/avr.c


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (11 preceding siblings ...)
  2011-07-08 17:47 ` gjl at gcc dot gnu.org
@ 2011-07-08 17:54 ` gjl at gcc dot gnu.org
  2011-07-10 20:58 ` gjl at gcc dot gnu.org
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-07-08 17:54 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |otaylor at redhat dot com

--- Comment #13 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-08 17:52:08 UTC ---
*** Bug 45291 has been marked as a duplicate of this bug. ***


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (12 preceding siblings ...)
  2011-07-08 17:54 ` gjl at gcc dot gnu.org
@ 2011-07-10 20:58 ` gjl at gcc dot gnu.org
  2011-07-23 15:10 ` gjl at gcc dot gnu.org
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-07-10 20:58 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
      Known to work|                            |4.6.2, 4.7.0
         Resolution|                            |FIXED
      Known to fail|                            |4.6.1

--- Comment #14 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-10 20:57:18 UTC ---
Closed as FIXED for 4.6.2


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] wrong code generation for array access
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (13 preceding siblings ...)
  2011-07-10 20:58 ` gjl at gcc dot gnu.org
@ 2011-07-23 15:10 ` gjl at gcc dot gnu.org
  2011-10-26 20:03 ` [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29 gjl at gcc dot gnu.org
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-07-23 15:10 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |frank at mynety dot net

--- Comment #15 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-07-23 15:09:49 UTC ---
*** Bug 41894 has been marked as a duplicate of this bug. ***


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (14 preceding siblings ...)
  2011-07-23 15:10 ` gjl at gcc dot gnu.org
@ 2011-10-26 20:03 ` gjl at gcc dot gnu.org
  2012-02-11 10:55 ` gjl at gcc dot gnu.org
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-10-26 20:03 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|wrong code generation for   |[4.4/4.5/4.6
                   |array access                |Regression][avr] wrong code
                   |                            |generation for values held
                   |                            |in R28/R29
           Severity|critical                    |normal


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (15 preceding siblings ...)
  2011-10-26 20:03 ` [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29 gjl at gcc dot gnu.org
@ 2012-02-11 10:55 ` gjl at gcc dot gnu.org
  2012-05-02 17:05 ` gjl at gcc dot gnu.org
  2012-05-02 17:08 ` gjl at gcc dot gnu.org
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-02-11 10:55 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dhowells at redhat dot com

--- Comment #16 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-02-11 10:54:54 UTC ---
*** Bug 51445 has been marked as a duplicate of this bug. ***


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (16 preceding siblings ...)
  2012-02-11 10:55 ` gjl at gcc dot gnu.org
@ 2012-05-02 17:05 ` gjl at gcc dot gnu.org
  2012-05-02 17:08 ` gjl at gcc dot gnu.org
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-05-02 17:05 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #17 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-05-02 17:05:10 UTC ---
Author: gjl
Date: Wed May  2 17:05:04 2012
New Revision: 187055

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187055
Log:
    Backport from 2011-07-08 4.6-branch r176055.
    PR target/46779
    * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
    In particular, allow 8-bit values in r28 and r29.
    (avr_hard_regno_scratch_ok): Disallow any register that might be
    part of the frame pointer.
    (avr_hard_regno_rename_ok): Same.
    (avr_legitimate_address_p): Don't allow SUBREGs.


Modified:
    branches/gcc-4_5-branch/gcc/ChangeLog
    branches/gcc-4_5-branch/gcc/config/avr/avr.c


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29
  2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
                   ` (17 preceding siblings ...)
  2012-05-02 17:05 ` gjl at gcc dot gnu.org
@ 2012-05-02 17:08 ` gjl at gcc dot gnu.org
  18 siblings, 0 replies; 20+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-05-02 17:08 UTC (permalink / raw)
  To: gcc-bugs

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

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.5.4
      Known to fail|                            |4.5.3

--- Comment #18 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-05-02 17:08:06 UTC ---
Backported to for 4.5.4


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2012-05-02 17:08 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-03 11:31 [Bug c/46779] New: wrong code generation for array access mschulze at ivs dot cs.ovgu.de
2010-12-03 13:37 ` [Bug c/46779] " rguenth at gcc dot gnu.org
2010-12-03 13:58 ` mschulze at ivs dot cs.ovgu.de
2010-12-03 14:06 ` [Bug target/46779] " rguenth at gcc dot gnu.org
2010-12-03 14:16 ` mschulze at ivs dot cs.ovgu.de
2011-02-05 16:01 ` avr at gjlay dot de
2011-02-23 15:55 ` avr at gjlay dot de
2011-02-24 14:04 ` avr at gjlay dot de
2011-04-14 18:52 ` gjl at gcc dot gnu.org
2011-06-16 10:01 ` gjl at gcc dot gnu.org
2011-06-27 15:49 ` jakub at gcc dot gnu.org
2011-07-08 17:40 ` gjl at gcc dot gnu.org
2011-07-08 17:47 ` gjl at gcc dot gnu.org
2011-07-08 17:54 ` gjl at gcc dot gnu.org
2011-07-10 20:58 ` gjl at gcc dot gnu.org
2011-07-23 15:10 ` gjl at gcc dot gnu.org
2011-10-26 20:03 ` [Bug target/46779] [4.4/4.5/4.6 Regression][avr] wrong code generation for values held in R28/R29 gjl at gcc dot gnu.org
2012-02-11 10:55 ` gjl at gcc dot gnu.org
2012-05-02 17:05 ` gjl at gcc dot gnu.org
2012-05-02 17:08 ` gjl at gcc dot gnu.org

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).