non canonical tree in java

Nathan Sidwell nathan@codesourcery.com
Wed Aug 3 17:49:00 GMT 2005


java is creating a COMPONENT_REF node where the first operand is a RECORD_TYPE, 
rather than an expresion or DECL node.  This is created at java/class.c:1014

	      prim_class = lookup_class (get_identifier (prim_class_name));
	      return build3 (COMPONENT_REF, NULL_TREE,
			     prim_class, TYPE_identifier_node, NULL_TREE);

here PRIM_CLASS is the RECORD_TYPE of the class.  This usage disagrees with the 
requirements for a COMPONENT_REF in tree.def
	/* Value is structure or union component.
	   Operand 0 is the structure or union (an expression).
	   Operand 1 is the field (a node of type FIELD_DECL).
	   Operand 2, if present, is the value of DECL_FIELD_OFFSET, measured
	   in units of DECL_OFFSET_ALIGN / BITS_PER_UNIT.  */
	DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3)

it is interfering with some cleanups I'm trying to do.  What would be the best 
way of making java compliant?  Have lookup_class return a suitable VAR_DECL 
node?  I'm not sure where this then gets used ...

nathan
-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery LLC
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk



More information about the Gcc mailing list