]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/30865 ([4.1, 4.2 only] optional argument passed on to size(...,dim=))
authorTobias Burnus <burnus@net-b.de>
Thu, 1 Mar 2007 08:19:09 +0000 (09:19 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Thu, 1 Mar 2007 08:19:09 +0000 (09:19 +0100)
2007-03-01  Tobias Burnus  <burnus@net-b.de>

        PR fortran/30865
        * trans-intrinsic.c (gfc_conv_intrinsic_size): Compare pointers.

From-SVN: r122423

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c

index 33fa9ad749efffc636d847a4d502f5aff56b295a..b804fedaac572ee776652f81c1be3a612f8e5297 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-01  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/30865
+       * trans-intrinsic.c (gfc_conv_intrinsic_size): Compare pointers.
+
 2007-02-28  Tobias Burnus  <burnus@net-b.de>
            Paul Thomas  <pault@gcc.gnu.org>
 
index 267d7a91208e8be4d86a65b166d068a361e12064..6c08004e449c231084aa6f3c8d6785bdf7ab6f6b 100644 (file)
@@ -2723,10 +2723,13 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr)
            && actual->expr->symtree->n.sym->attr.optional)
        {
          tree tmp;
-         tmp = gfc_build_addr_expr (pvoid_type_node,
-                                    argse.expr);
-         tmp = build2 (NE_EXPR, boolean_type_node, tmp, 
-                       build_int_cst (pvoid_type_node, 0));
+         gfc_init_se (&argse, NULL);
+         argse.want_pointer = 1;
+         argse.data_not_needed = 1;
+         gfc_conv_expr (&argse, actual->expr);
+         gfc_add_block_to_block (&se->pre, &argse.pre);
+         tmp = build2 (NE_EXPR, boolean_type_node, argse.expr,
+                       null_pointer_node);
          tmp = gfc_evaluate_now (tmp, &se->pre);
          se->expr = build3 (COND_EXPR, pvoid_type_node,
                             tmp, fncall1, fncall0);