------- Comment #19 from dave at hiauly1 dot hia dot nrc dot ca 2009-03-14 21:31 ------- Subject: Re: [4.4 Regression] ICE at dwarf2out.c:10353 in loc_descriptor_from_tree_1
On Tue, 10 Mar 2009, jakub at gcc dot gnu dot org wrote: > You can start with trying if -O2 -fno-inline -fno-inline-small-functions is > still miscompiled and if -O0 works, then you can add > __attribute__((__optimized__([02]))) to suspected functions. -O2 -fno-inline -fno-inline-small-functions and -O0 both work. However, I couldn't get the attribute to work, or find any documentation for it. 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); So, it seems quite likely that this is a shift issue. Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39355