Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

alignment attribute for same variable names (error #8626)

soni__vineet
Beginner
351 Views

Hello,

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.

Vineet

0 Kudos
2 Replies
Juergen_R_R
Valued Contributor I
351 Views

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.

0 Kudos
soni__vineet
Beginner
351 Views

Thank you!

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

0 Kudos
Reply