------- Comment #7 from janus at gcc dot gnu dot org 2009-08-21 15:11 ------- (In reply to comment #4) > D.1571 = o.f; > D.1572 = D.1571 (&C.1569, &C.1570); > g = (logical(kind=4)) greater (&C.1568, &&D.1572);
Btw, it seems unnecessary to me that every PPC call generates a temporary (D.1571 is this case). This is fixed by the following patchlet: Index: gcc/fortran/trans-expr.c =================================================================== --- gcc/fortran/trans-expr.c (revision 150987) +++ gcc/fortran/trans-expr.c (working copy) @@ -3512,8 +3513,7 @@ gfc_get_proc_ptr_comp (gfc_se *se, gfc_e e2 = gfc_copy_expr (e); e2->expr_type = EXPR_VARIABLE; gfc_conv_expr (&comp_se, e2); - comp_se.expr = build_fold_addr_expr_loc (input_location, comp_se.expr); - return gfc_evaluate_now (comp_se.expr, &se->pre); + return build_fold_addr_expr_loc (input_location, comp_se.expr); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41139