Sorry Tobias, I was about to post a patch about this when I saw your message.

The issue is that the code handling NULL() doesn't consume the gfc_ss struct created for it. Your fix, which advances to the next one anyway would work just well, but I think it is slightly cleaner to not create the struct in the first place, as it is unused.

I'm currently regtesting the following patch. The testcase is the same as your. OK for 4.7/4.6?


2012-01-09  Mikael Morin  <mik...@gcc.gnu.org>

        * trans-array.c (gfc_walk_elemental_function_args):
        Skip over NULL() actual arguments.



diff --git a/trans-array.c b/trans-array.c
index b9902b9..ca6519b 100644
--- a/trans-array.c
+++ b/trans-array.c
@@ -8369,7 +8369,8 @@ gfc_walk_elemental_function_args (gfc_ss * ss, 
gfc_actual_arglist *arg,
   scalar = 1;
   for (; arg; arg = arg->next)
     {
-      if (!arg->expr)
+      if (!arg->expr
+         || arg->expr->expr_type == EXPR_NULL)
        continue;
 
       newss = gfc_walk_subexpr (head, arg->expr);

Reply via email to