/* * gcc401bug.c * Written by Mikael Pettersson, [EMAIL PROTECTED], 2005-06-24. * Adapted from linux-2.6.12/drivers/serial/8250.c. * * gcc-4.0-20050623 bootstrapped on i686-pc-linux-gnu * gets an ICE when compiling this program at -O2: * * gcc401bug.c: In function 'serial8250_isa_init_ports': * gcc401bug.c:30: internal compiler error: Segmentation fault * * Notes: * - gcc-4.0.1-20050616 does not have this bug. * - Using -O1 prevents the ICE. */
static unsigned int old_serial_port_irq[10]; static struct uart_8250_port { volatile unsigned int slock; unsigned int irq; } serial8250_ports[10]; static __inline__ __attribute__((always_inline)) int irq_canonicalize(int irq) { return ((irq == 2) ? 9 : irq); } void serial8250_isa_init_ports(void) { struct uart_8250_port *up; int i; for (i = 0, up = serial8250_ports; i < 10; i++, up++) up->irq = irq_canonicalize(old_serial_port_irq[i]); } int main(void) { serial8250_isa_init_ports(); return 0; } -- Summary: gcc-4.0-20050623 internal compiler error in linux/drivers/serial/8250.c Product: gcc Version: 4.0.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: regression AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mikpe at csd dot uu dot se CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22171