[Bug java/13733] [tree-ssa] internal compiler error: in check_pointer_types_r, at gimplify.c:3460

jsturm at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Jan 19 05:45:00 GMT 2004


------- Additional Comments From jsturm at gcc dot gnu dot org  2004-01-19 05:45 -------
(In reply to comment #2)
> The java front-end is not converting the trees to gimple right.

That's not precisely correct since java isn't responsible for conversion to
gimple, aside from a few minor langhooks.  Either the generic trees produced are
wrong or the gimplifier is misbehaving somewhere.

After compiling the statement

		if ((result = this.member).binding == arg)

to generic, the nested MODIFY_EXPR has type (DerivedBug *).  The gimplifier
reduces the above to:

  struct DerivedBug * T.1;
  struct java.lang.Object * T.2;
  struct Bug * result;
                                                                                
  T.1 = this->member;
  result = T.1;
  T.2 = result->binding;  <---
  if (T.2 == arg)

note that the INDIRECT_REF now has "result" as its operand.  This operand
substitution is legal provided the operands have the same type, but they do not.

IMO the INDIRECT_REF should have been gimplified into

  T.2 = T.1->binding;

with no need for type conversion, since T.1 is equivalent to the result of the
original MODIFY_EXPR.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|tree-ssa                    |---


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13733



More information about the Gcc-bugs mailing list