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

             Bug #: 52472
           Summary: ICE: in convert_debug_memory_address, at
                    cfgexpand.c:2491
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Keywords: addr-space, ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: g...@gcc.gnu.org
                CC: eric.wedding...@atmel.com
              Host: mingw32
            Target: avr


typedef unsigned long uint32_t;
typedef unsigned int uint16_t;

extern const __memx unsigned int data[320][12];

#define pgm_read_word_far(addr)                 \
    (__extension__({                            \
        uint32_t __addr32 = (uint32_t)(addr);   \
        uint16_t __result;                      \
        __asm__("; much code"                   \
            : "=r" (__result)                   \
            : "r" (__addr32));                  \
        __result;                               \
    }))

int ice (void)
{
    return pgm_read_word_far (0x20000 + (unsigned long) &data[0][0]);
}

== Command Line ==

>> avr-gcc ice-memx.c -S -Os -g3 -v

== ICE ==

ice-memx.c: In function 'ice':
ice-memx.c:18:12: warning: cast from pointer to integer of different size
[-Wpointer-to-int-cast]
ice-memx.c:16:5: internal compiler error: in convert_debug_memory_address, at
cfgexpand.c:2491


== Configure ==

Using built-in specs.
Target: avr
Configured with: ../gcc-trunk/configure --with-gmp=/usr/local
--prefix=/usr/local/avr --target=avr --enable-languages=c,c++ --with-dwarf2
--disable-shared --disable-libada --disable-libssp --disable-nls
Thread model: single
gcc version 4.7.0 20120217 (experimental) (GCC) 
GNU C (GCC) version 4.7.0 20120217 (experimental) (avr)
    compiled by GNU C version 4.6.2, GMP version 5.0.4, MPFR version 3.1.0, MPC
version 0.9

Reply via email to