------- Comment #5 from laurent at guerby dot net 2009-08-10 08:01 ------- The search is not finished but it's likely the following patch:
2009-07-17 Aldy Hernandez <al...@redhat.com> Manuel López-Ibáñez <m...@gcc.gnu.org> PR 40435 ... builtins.c ... Add location argument to ... The ICE happens here: builtins.c: *expr_p = targetm.gimplify_va_arg_expr (valist, type, pre_p, post_p); SET_EXPR_LOCATION (*expr_p, loc); While compiling the following code: genattrtab.c: HOST_WIDE_INT arg0 = va_arg (p, HOST_WIDE_INT); Note the HOST_WIDE_INT here. And sparc_gimplify_va_arg_expr does something special in one case, tagged FIXME: sparc.c: /* If the address isn't aligned properly for the type, we need a temporary. FIXME: This is inefficient, usually we can do this in registers. */ else if (align == 0 && TYPE_ALIGN (type) > BITS_PER_WORD) { tree tmp = create_tmp_var (type, "va_arg_tmp"); tree dest_addr = build_fold_addr_expr (tmp); tree copy = build_call_expr (implicit_built_in_decls[BUILT_IN_MEMCPY], 3, dest_addr, addr, size_int (rsize)); TREE_ADDRESSABLE (tmp) = 1; gimplify_and_add (copy, pre_p); addr = dest_addr; } This is guessing because I don't understand all that stuff so help welcomed :). -- laurent at guerby dot net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manu at gcc dot gnu dot org, | |aldyh at redhat dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40788