This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/47455] [4.6 Regression][OOP] internal compiler error: in fold_convert_loc, at fold-const.c:2028


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

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-01-25 13:24:39 UTC ---
Regarding the regression:

  FAILS: 2010-05-03-r158988
  WORKS: 2010-04-29-r158905

  That includes a huge merge by Paul (r158910, 2010-04-29) - seemingly the
  OOP branch merge.

 * * *

The failure occurs for the assignment in gfc_trans_scalar_assign, which is
called by gfc_trans_assignment_1 for:
expr1 is BT_DERIVED with "this"->"x"
expr2 is EXPR_FUNCTION with "this"->"_vptr"->"find_x"

The failure occurs for:

5281          gfc_add_modify (&block, lse->expr,
5282                          fold_convert (TREE_TYPE (lse->expr), rse->expr));

If one looks at "rhs->expr.common.type" and "lhs->expr.common.type" both are
essentially the same - except that the RHS is a pointer:

RHS:
 <pointer_type 0x2aaaace325e8
    type <record_type 0x2aaaaac2fb28 tx BLK
LHS:
 <record_type 0x2aaaaac2fb28 tx BLK


In the working version from April 2010, the dump looks like:
    *this->$data->x = *find_x ((struct .class.t *) this);

The "*" on the RHS seems to be missing ...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]