https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68765

            Bug ID: 68765
           Summary: warning for aliasing restrict parameters
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

Consider this invalid example:
...
subroutine foo (a, b)

  implicit none
  integer :: a
  integer :: b

  a = 1
  b = 0
  a = a + 1

end subroutine

program main
  implicit none
  integer :: a

  call foo(a, a)

  if (a .ne. 1) call abort

end program main
...

The example is invalid because foo is called with aliasing parameters, while in
fortran, we assume that parameters do not alias by annotating them with
restrict, as demonstrated in the original dump:
...
foo (integer(kind=4) & restrict a, integer(kind=4) & restrict b)
{
  *a = 1;
  *b = 0;
  *a = *a + 1;
}
  ...
  foo (&a, &a);
  ...
...

When compiling with -Wall, we do not warn for this:
...
$ gfortran alias.f95 -fdump-tree-all -Wall
$
...

Marking this a fortran issue for now. [ Tough the same type of warning is
missing for c examples with explicit restrict ]

Reply via email to