Eigen compilation error: " tell me what is the equivalent of __attribute__((aligned(16))) for your compiler".

I am trying to compile the examples with IBM xlC compiler (it’s MPI wrapper actually) and get the following error message:


"palabos-v0.7r2/externalLibraries/Eigen/src/Core/util/Macros.h", line 193.2: 1540-0859 (S) #error directive: Please tell me what is the equivalent of __attribute__((aligned(16))) for your compiler.

I’ve googled for the error and there’s some version of Eigen here, that has a promising description:

Branch of Eigen development repository designed to be IBM XLC v9.0 compatible and eventually for high performance on IBM POWER/BlueGene systems.

However the directory structure of Eigen that comes with palabos is different from the one in the link above.

Has anyone encountered the similar compilation error?
Has anyone experience with Eigen version for xlC?
Any suggestions are welcomed.

In file Macros.h there’re some mentionings of powerpc and ppc, which are my target platform…

IBM XL C++ supports attribute extension, so I’ve solved this particular problem by modifying the Macros.h file. Now it reads:


#if !EIGEN_ALIGN
#define EIGEN_ALIGN_128
#elif (defined __GNUC__)
#define EIGEN_ALIGN_128 __attribute__((aligned(16)))
#elif (defined _MSC_VER)
#define EIGEN_ALIGN_128 __declspec(align(16))
#elif (defined __IBMCPP__)
#define EIGEN_ALIGN_128 __attribute__((aligned(16)))
#else
#error Please tell me what is the equivalent of __attribute__((aligned(16))) for your compiler
#endif

This seem to solve the issue, however the others appear, which seem to be related to how xlC handles templates. I’ll post it as a separate topic.