Alignment change in new version?

Alignment change in new version?

Аватар пользователя ereisch

Did the array padding or alignment semantics change in version 12.1 of the compiler?  While seeing if the new version fixes an issue I had with the old version we're using (12.0.4), I compiled half our code using the new version until it hit a file it couldn't compile (separate thread re: compiler segfault).  I built the rest of the files using the old version to get us back up and running, and we encountered dozens of issues of COMMON area variables being set in one routine and magically having a different value several routines later.  Without debugging, my suspicion is that the alignment algorithm was tweaked in the newer version in a way that makes it not backwards-compatible with older versions of the compiler.  I tried looking in the documentation that comes with the compiler for the release notes, but was unable to find any.

Somewhat related enhancement request: can the release notes / changelog be included in with the documentation that is on the compiler/debugger RPM?  Having to go to the Intel site for this information isn't always convenient.

4 posts / 0 новое
Последнее сообщение
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.
Аватар пользователя Steve Lionel (Intel)

Nothing regarding alignment of COMMON variables should have changed. Alignment of local arrays may well have changed. Please do some more investigation to see what the problem is.

The release notes are in the rpm, but the change log is not as it is generated separately.

Steve
Аватар пользователя Tim Prince

There is a new option which should increase the alignment of the start of a COMMON, but you would have had to specify that (same in each compilation unit).
If you constructed your common such that misalignments are implied, you would need the identical compile options regarding padding and alignment for all compilation units using it, and all the data types would need to match for padding to work. By default, there would be no padding, but you may get warnings of misalignments.

Setting options such as auto-double could create inconsistencies among uses of the COMMON.

Аватар пользователя jimdempseyatthecove

>>we encountered dozens of issues of COMMON area variables being set in one routine and magically having a different value several routines later. Without debugging, my suspicion is that the alignment ...

It may also be the size of a particular object differing due to compile time differences.

Jim Dempsey

www.quickthreadprogramming.com

Зарегистрируйтесь, чтобы оставить комментарий.