[Bug c/38954] AVR-GCC: internal compiler error: in start_function, at c-decl.c:6248

2009-01-24 Thread charles at chaoslizard dot org
--- Comment #2 from charles at chaoslizard dot org 2009-01-24 21:43 --- As with #34299, if you move the __attribute__s to the function's prototype (creating one if necessary) and remove them from the definition, the ICE goes away. -- http://gcc.gnu.org/bugzilla/show_bug.c

[Bug c/38954] New: AVR-GCC: internal compiler error: in start_function, at c-decl.c:6248

2009-01-23 Thread charles at chaoslizard dot org
ir.length > 0 ) { inpos = data[4]; r = 0xff; } else { data[0] = 0; r = 1; } __asm__ __volatile__ ("sei" ::); } if ( req == LCD_INSTR ) { (*(volatile uint8_t *)((0x18) + 0x20)) &= ~ (1 << 4); } if ( req == LCD_DATA ) { (*(volatile uint8_t *)((0x18) + 0x20)) |= (1 << 4); } return r; } extern byte_t usb_in ( byte_t* data, byte_t len ) { byte_t n; byte_t max; max = ir.length + 3; n = 0; while ( n < len ) { if ( inpos >= max ) { __asm__ __volatile__ ("cli" ::); if ( edges ) { edges = 0xff; } inpos = 0xff; __asm__ __volatile__ ("sei" ::); break; } data[n++] = (& ir.length)[inpos++]; } return n; } extern void usb_out ( byte_t* data, byte_t len ) { while ( len ) { lcd_write( *data++ ); len--; } } __attribute__((naked)) extern int main ( void ) { (*(volatile uint8_t *)((0x12) + 0x20)) |= (1 << (3)); (*(volatile uint8_t *)((0x11) + 0x20)) |= (1 << (3)); lcd_init(); usb_init(); ir_init(); for ( ;; ) { usb_poll(); } return 0; } -- Summary: AVR-GCC: internal compiler error: in start_function, at c-decl.c:6248 Product: gcc Version: 4.3.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: charles at chaoslizard dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38954