Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.

alignment attribute for same variable names (error #8626)



I am trying to align the memory of pointers in a pretty large code. But, I receive a compilation error #8626 which is undocumented. So, I have made a test program that can reproduce the same compilation error.

The issue is that the variable names outside of a derived type in a module is the same as the ones inside a derived type.

Below is the test program to get a clear picture:

module mod1
implicit none

real*8, pointer, contiguous :: Arr(:)
!dir$ attributes align : 64 :: Arr

type der1
   ! This does NOT work because the name is same
   real*8, pointer, contiguous :: Arr(:)
   !dir$ attributes align : 64 :: Arr

   ! This works because Arr is renamed to ArrD
   !real*8, pointer, contiguous :: ArrD(:)
   !!dir$ attributes align : 64 :: ArrD
end type

end module

program test
use mod1
implicit none

end program

When I compiler the program, I receive the following error:

test.f90(10): error #8626: The DEC$ ATTRIBUTES ALIGN or FASTMEM attribute must specify a field in the type being defined.   [ARR]
   !dir$ attributes align : 64 :: Arr
compilation aborted for test.f90 (code 1)

How do I specify a field, as told in the above error? Is there any way to tell the compiler to differentiate these two pointers?

Thank you in advance.


0 Kudos
2 Replies
Valued Contributor I

The code that you provided works with ifort 17 and 18. So this seems to be a regression in the v19 of the compiler. I suggest to report this via the Online Support Center of Intel.


Thank you!

Yes, I forgot to mention that I was indeed using Intel 19 for this test program.