> > 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 ...
The java front-end later on replaces prim_class with the correct tree, witness how the type of COMPONENT_REF is NULL. -- Pinski