@@ -11220,18 +11220,39 @@ arg_evaluated_for_scalarization (gfc_intrinsic_sym *function,
{
if (function != NULL)
{
- switch (function->id)
+ if (actual_arg.name == NULL)
{
- case GFC_ISYM_INDEX:
- case GFC_ISYM_LEN_TRIM:
- if ((actual_arg.name == NULL && arg_num == 3)
- || (actual_arg.name != NULL
- && strcmp ("kind", actual_arg.name) == 0))
- return false;
- /* Fallthrough. */
+ switch (function->id)
+ {
+ case GFC_ISYM_INDEX:
+ if (arg_num == 3)
+ return false;
+ break;
- default:
- break;
+ case GFC_ISYM_LEN_TRIM:
+ if (arg_num == 1)
+ return false;
+
+ /* Fallthrough. */
+
+ default:
+ break;
+ }
+ }
+ else
+ {
+ switch (function->id)
+ {
+ case GFC_ISYM_INDEX:
+ case GFC_ISYM_LEN_TRIM:
+ if (strcmp ("kind", actual_arg.name) == 0)
+ return false;
+
+ /* Fallthrough. */
+
+ default:
+ break;
+ }
}
}
@@ -19,5 +19,7 @@ program p
d = index ('xyxyz','yx', back=a, kind=8)
b = index ('xyxyz','yx', back=a, kind=8)
d = index ('xyxyz','yx', back=a, kind=4)
+ b = index ('xyxyz','yx', a, 4)
+ d = index ('xyxyz','yx', a, 8)
end
@@ -17,11 +17,17 @@ program main
kk = len_trim (a)
mm = len_trim (a, kind=4)
nn = len_trim (a, kind=8)
+ mm = len_trim (a, 4)
+ nn = len_trim (a, 8)
kk = len_trim ([b])
mm = len_trim ([b],kind=4)
nn = len_trim ([b],kind=8)
+ mm = len_trim ([b], 4)
+ nn = len_trim ([b], 8)
kk = len_trim (c)
mm = len_trim (c, kind=4)
nn = len_trim (c, kind=8)
+ mm = len_trim (c, 4)
+ nn = len_trim (c, 8)
if (any (l4 /= 2_4) .or. any (l8 /= 2_8)) stop 1
end program main