--- gcc/testsuite/gcc.dg/debug/debug-7.c 2003-09-15 15:40:47.000000000 +0200 +++ gcc/testsuite/gcc.dg/debug/debug-7.c 2004-01-22 18:18:12.000000000 +0100 @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-dA" } */ + +typedef __SIZE_TYPE__ size_t; + +static inline size_t foo (int n) +{ + return (n + sizeof (int) * 8 - 1) / (sizeof (int) * 8); +} + +void bar (int, int *); + +void baz (int n) +{ + int a[foo (n)]; + bar (n, a); +} causes ICE (e.g. at -Os -g, -O1 -g, -O2 -g). The problem is that EXPR_WITH_FILE_LOCATION (STMT_EXPR ()) is passed to loc_descriptor_from_tree whcih doesn't handle statement expressions and/or inline functions and aborts.
This is a regression from GCC 3.3.x (where the debug info was not complete but at least it did not ICE), the testcase is distilled from Linux kernel.
Confirmed, a regression. From Phil's regression hunter: Search converges between 2003-02-28-trunk (#233) and 2003-03 -01-trunk (#234).
Confirmed. It is indeed a regression. W.
This is a dup of bug 12934 which has a shorter testcase which fails now. *** This bug has been marked as a duplicate of 12934 ***