[Bug fortran/69739] [6/7/8 Regression] ICE during array result, allocatable assignment
pault at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Nov 4 17:29:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69739
--- Comment #7 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Harald Anlauf from comment #5)
> You probably hit something that's just not yet implemented:
>
> trans-expr.c:
>
> (gdb) list 4083,4096
> 4083 case GFC_ISYM_LBOUND:
> 4084 case GFC_ISYM_UBOUND:
> 4085 /* TODO These implementations of lbound and ubound do not
> limit if
> 4086 the size < 0, according to F95's 13.14.53 and 13.14.113.
> */
> 4087
> 4088 if (!sym->as || sym->as->rank == 0)
> 4089 return false;
> 4090
> 4091 if (arg2 && arg2->expr_type == EXPR_CONSTANT)
> 4092 d = mpz_get_si (arg2->value.integer) - 1;
> 4093 else
> 4094 /* TODO: If the need arises, this could produce an array of
> 4095 ubound/lbounds. */
> 4096 gcc_unreachable ();
Harald,
You are quite right. Declaring 'operate' as
real :: operate(1:PRODUCT([UBOUND(A,1),UBOUND(A,2),UBOUND(A,3)]))
works as expected.
There has to be some way to simplify this, since it happens correctly in
specification expressions. On to it....
Cheers
Paul
More information about the Gcc-bugs
mailing list