Hello,
I've been tinkering with getting gccxml-bodies working with the latest
gccxml. I think I've got everything playing nicely together I've
attached a patch against the latest from cvs for a couple of changes I
did to gccxml. Thought I would pass them on.
The first fixes a seg fault when a fundamental type does not have a
name.
The second fixes a problem I found while compiling some code where
gccxml is expecting a statement list and it's getting a return
expression or an expression statement.
I've only been hacking at this for a day or two so I don't know if the
fixes I've done are a hack or proper fixes. Please let me know.
Anyways, I'm compiling qt right now with the latest gccxml and my
version of gccxml-bodies. And things seem to be humming along just
nicely.. I'm sure I'll find other little issues along the way if you
want patches for them let me know.
Cheers,
Kyle
? test.patch
Index: GCC/gcc/cp/xml.c
===================================================================
RCS file: /cvsroot/GCC_XML/gccxml/GCC/gcc/cp/xml.c,v
retrieving revision 1.129
diff -u -p -r1.129 xml.c
--- GCC/gcc/cp/xml.c 18 Jan 2010 16:42:37 -0000 1.129
+++ GCC/gcc/cp/xml.c 25 Jan 2010 20:00:56 -0000
@@ -648,15 +648,25 @@ xml_document_add_attribute_location(xml_
static void
xml_print_endline_attribute (xml_dump_info_p xdi, tree body)
{
- /* Get the last statement in the list. The list may be empty if the
- body is for an empty implicitly-generated copy-constructor. */
- tree_stmt_iterator t = tsi_last(body);
- if(!tsi_end_p(t))
+ if (TREE_CODE(body) == RETURN_EXPR || TREE_CODE(body) == EXPR_STMT)
{
- tree stmt = tsi_stmt(t);
- if(EXPR_HAS_LOCATION(stmt))
+ if(EXPR_HAS_LOCATION(body))
{
- fprintf (xdi->file, " endline=\"%d\"", EXPR_LINENO(stmt));
+ fprintf (xdi->file, " endline=\"%d\"", EXPR_LINENO(body));
+ }
+ }
+ else
+ {
+ /* Get the last statement in the list. The list may be empty if the
+ body is for an empty implicitly-generated copy-constructor. */
+ tree_stmt_iterator t = tsi_last(body);
+ if(!tsi_end_p(t))
+ {
+ tree stmt = tsi_stmt(t);
+ if(EXPR_HAS_LOCATION(stmt))
+ {
+ fprintf (xdi->file, " endline=\"%d\"", EXPR_LINENO(stmt));
+ }
}
}
}
@@ -2415,7 +2425,11 @@ xml_output_fundamental_type (xml_dump_in
{
fprintf (xdi->file, " <FundamentalType");
xml_print_id_attribute (xdi, dn);
- xml_print_name_attribute (xdi, DECL_NAME (TYPE_NAME (t)));
+ //some fundamental types do not have names
+ if (TYPE_NAME (t))
+ {
+ xml_print_name_attribute (xdi, DECL_NAME (TYPE_NAME (t)));
+ }
xml_print_attributes_attribute (xdi, TYPE_ATTRIBUTES(t), 0);
xml_print_size_attribute (xdi, t);
xml_print_align_attribute (xdi, t);
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://www.gccxml.org/mailman/listinfo/gccxml