This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/47455] [4.6 Regression][OOP] internal compiler error: in fold_convert_loc, at fold-const.c:2028
- From: "burnus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 25 Jan 2011 13:24:57 +0000
- Subject: [Bug fortran/47455] [4.6 Regression][OOP] internal compiler error: in fold_convert_loc, at fold-const.c:2028
- Auto-submitted: auto-generated
- References: <bug-47455-4@http.gcc.gnu.org/bugzilla/>
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 ...