<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
This seems dubious, doesn't it, to state something is not initiallized, and then initialize it?<br>It triggers an assertion failure in gcc 4.6 backend.<br><br>RTCollector.m3<br><br>(479) declare_global name:null size:0X4000000(67108864) align:0X40(64) type:struct type_id:0x747D8491 exported:false initialized:false var:0x3B m3name:L_2<br>(14190) init_var offset:0X2280(8832) var:0x3B:L_2 0 one_field: offset:0x2280 size:0x20<br><br><br>Yes I realize it is initialized to zero.<br>I don't know if it is obviously initialized to all zeros, as I don't see the size in declare_global..er..rather, yes, there is a size there...is it real, or just some large guess..? I haven't looked..<br><br><br>I'm going to try this little hack:<br><br><br>M3CG_HANDLER (INIT_VAR)<br>{<br> tree f = { 0 };<br> tree v = { 0 };<br><br>#if GCC46<br> if (DECL_COMMON (var))<br> {<br> if (option_trace_all)<br> fprintf (stderr, " clearing DECL_COMMON on %s", m3_get_var_trace_name (var));<br> DECL_COMMON (var) = false;<br> }<br>#endif<br><br> TREE_USED (var) = true;<br> one_field (offset, POINTER_SIZE, t_addr, &f, &v);<br> TREE_VALUE (v) = m3_build2 (POINTER_PLUS_EXPR, t_addr,<br> m3_build1 (ADDR_EXPR, t_addr, var),<br> size_int (b));<br>}<br><br>The assertion is in gcc-4.6/gcc/config/darwin.c<br><br>darwin_asm_output_aligned_decl_local<br><br> /* .. and it should be suitable for placement in local mem. */<br> gcc_assert(!TREE_PUBLIC (decl) && !DECL_COMMON (decl));<br> /* .. and any initializer must be all-zero. */<br> gcc_assert ((DECL_INITIAL (decl) == NULL) <br> || (DECL_INITIAL (decl) == error_mark_node) <br> || initializer_zerop (DECL_INITIAL (decl)));<br><br><br>The first one I think. I think it is common.<br><br><br> - Jay<br> </div></body>
</html>