------- Comment #21 from hjl dot tools at gmail dot com 2009-03-15 17:37 ------- (In reply to comment #19)
> I did find that the ICE doesn't occur with the following change to > libcpp/expr.c: > > Index: expr.c > =================================================================== > --- expr.c (revision 144529) > +++ expr.c (working copy) > @@ -39,7 +39,7 @@ > /* Some simple utility routines on double integers. */ > #define num_zerop(num) ((num.low | num.high) == 0) > #define num_eq(num1, num2) (num1.low == num2.low && num1.high == num2.high) > -static bool num_positive (cpp_num, size_t); > +static bool num_positive (cpp_num, size_t) __attribute__((noinline)); > static bool num_greater_eq (cpp_num, cpp_num, size_t); > static cpp_num num_trim (cpp_num, size_t); > static cpp_num num_part_mul (cpp_num_part, cpp_num_part); > Since revision 144529: http://gcc.gnu.org/ml/gcc-patches/2009-03/msg00000.html is the cause and it is inline related, I suggest you use revision 144529 as base and revert the tree-inline.c change to see if it fixes libcpp/expr.c. -- hjl dot tools at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.4 Regression] ICE at |[4.4 Regression] Revision |dwarf2out.c:10353 in |144529 miscompiled |loc_descriptor_from_tree_1 |libcpp/expr.c http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39355