https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84868
Harald Anlauf <anlauf at gmx dot de> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |anlauf at gmx dot de
--- Comment #5 from Harald Anlauf <anlauf at gmx dot de> ---
There is a variant that is wrongly rejected:
module m
implicit none
contains
function f(n) result(z)
character, save :: c(3) = ['x', 'y', 'z']
integer, intent(in) :: n
character(len_trim(c(n))) :: z
z = c(n)
end
end
program p
use m
print *, f(2)
end
pr84868b.f90:7:23:
character(len_trim(c(n))) :: z
1
Error: Variable 'c' cannot appear in the expression at (1)
With the following patch len_trim is accepted in a specification expression:
Index: expr.c
===================================================================
--- expr.c (revision 269880)
+++ expr.c (working copy)
@@ -3402,10 +3402,13 @@
return false;
}
- if (!gfc_simplify_expr (e, 0))
- return false;
+ if (gfc_simplify_expr (e, 0))
+ return true;
- return check_restricted (e);
+ if (check_restricted (e))
+ return true;
+
+ return false;
}
But then we hit the following issue at link time:
pr84868b.f90:(.text+0x12c): undefined reference to `___MOD_c'