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