Don't rewrite 0*X to 0 if X is not scalar. Up until now this hasn't shown up as a bug because a scalar 0 works in nearly all expressions where an array would be expected. But not in all cases -- this bad rewrite can cause generic procedure resolution to fail when it causes an actual argument to have an unsupported rank.
23 lines
527 B
Fortran
23 lines
527 B
Fortran
! RUN: %flang_fc1 -fsyntax-only -pedantic %s 2>&1 | FileCheck %s --allow-empty
|
|
! Regression test for pFUnit case: ensure that 0*ka doesn't get rewritten
|
|
! into a scalar 0 and then fail generic resolution.
|
|
! CHECK-NOT: error:
|
|
program test
|
|
interface g
|
|
procedure s
|
|
end interface
|
|
integer(1) a(1)
|
|
a(1) = 2
|
|
call test(1_1, a)
|
|
contains
|
|
subroutine s(a1,a2)
|
|
integer(1) a1(:), a2(:)
|
|
print *, a1
|
|
print *, a2
|
|
end
|
|
subroutine test(j,ka)
|
|
integer(1) j, ka(:)
|
|
call g(int(j+0*ka,kind(ka)), ka)
|
|
end
|
|
end
|