[Bug debug/39355] [4.4 Regression] ICE at dwarf2out.c:10353 in loc_descriptor_from_tree_1

dave at hiauly1 dot hia dot nrc dot ca gcc-bugzilla@gcc.gnu.org
Sat Mar 14 21:31:00 GMT 2009



------- 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



More information about the Gcc-bugs mailing list