------- 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

Reply via email to