Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Internal Error

Noel_B_
Novice
2,302 Views

Hi,

The intel compiler generates this:

../simd/avx.hpp(50): internal error: assertion failed at: "shared/cfe/edgcpfe/decls.c", line 9448

      static constexpr unary_value initialize = _mm256_set1_pd;

Here's how I generated the attached preprocessed file:

/compilers/intel/composer_xe_2019.3.199/compilers_and_libraries/linux/bin/intel64/icpc  -std=c++14 -mavx2  -o junk.pp -c junk.cpp -E

Can someone try to reproduce this on Linux?

0 Kudos
8 Replies
RahulV_intel
Moderator
2,304 Views

Hi,

The error is reproducible on Linux. Apparently, from the error log, line number 3 of junk.cpp is triggering the error.

Do you mind sharing the minimal reproducible source code, so as to try and understand the root cause of the error?

 

--Rahul

0 Kudos
Noel_B_
Novice
2,304 Views

Please see the attached files, you should be able to reproduce the problem with:

 icpc -std=c++17 -mavx2  -c junk.cpp -I.

 

0 Kudos
Noel_B_
Novice
2,304 Views

Ignore previous attachment, those are the wrong files, 

0 Kudos
Noel_B_
Novice
2,302 Views

Note that I get the same error on the Mac with intel 19.

avx.hpp(69): internal error: assertion failed at: "shared/cfe/edgcpfe/decls.c", line 9486

 

0 Kudos
RahulV_intel
Moderator
2,302 Views

Hi Noel,

Looks like a bug to me. Thanks for reporting this and providing sample codes, preprocessed files.

I will escalate this issue to the concerned team.

 

Regards,

Rahul

0 Kudos
Melanie_B_Intel
Employee
2,302 Views

Thanks for the bug report. You can work around this compiler bug by providing a wrapper function around the intrinsic function. For example, add this function

#include <immintrin.h> 
__m256d wrap_mm256_set1_pd (double d) {   
  return _mm256_set1_pd(d); 
}

And instead of referring to the intrinsic within the template, use the wrapper function's name,

static constexpr unary_value initialize = wrap_mm256_set1_pd;

Hope this helps. --Melanie

0 Kudos
Melanie_B_Intel
Employee
2,302 Views

Here is another workaround that doesn't require you to modify your source code, you can #define this symbol or put it into the compiler flags

icpc -c -D__INTEL_COMPILER_USE_INTRINSIC_PROTOTYPES=1 test.cpp

0 Kudos
RahulV_intel
Moderator
1,723 Views

Hi,


I have not heard back from you, so I will go ahead and close this thread. Intel will no longer monitor this thread. Feel free to post a new query if you require further assistance from Intel.


0 Kudos
Reply