Showing results for 
Search instead for 
Did you mean: 

C++ code fails to compile when "-openmp" and "-g" flags are both present

Dear all,

I noticed a strange behavior of the Intel C++ compiler when trying to compile the (already preprocessed) piece of code in the attachment. In fact, when compiling with:
[bash] icpc -std=c++0x  -g  -O0 -c global.i[/bash]
or with:
[bash] icpc -std=c++0x -O0 -openmp -c global.i[/bash]
an object file is created correctly, while when compiling with both the "-openmp" and "-g" flags:
[bash] icpc -std=c++0x -g  -O0 -openmp -c global.i[/bash]
I get the following message:
[bash](0): internal error: backend signals

compilation aborted for global.i (code 4)
I tried without success to isolate the problem in a smaller example. Honestly I still don't understand if it is a compiler issue or something related to system libraries. I tried only the latest version of the Intel C++ compiler:

[bash]$ icpc --version
icpc (ICC) 12.0.4 20110427
Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.

Is anyone able to reproduce this behavior? In any case, should anybody have a clue on this please post a reply.

Many thanks in advance,
0 Kudos
3 Replies

Hi Massimiliano,

I can reproduce this also with icpc 12.0.5. I also tested it with the next upcoming update of the compiler and the error is already fixed there.


Hi Alex,

and many thanks for your reply!

May I ask, out of curiosity, which was the cause of the problem and if a workaround esists for compiler versions <= 12.0.5?

Many thanks again,

Hi Massimilano,

because this is an internal error I didn't see more than you on this. Because this is already fixed, the engineering team will not start an investigation on it. So I couldn't give you an answer why.

I tried some options to find a workaround but without of luck. Because optimization is already disabled this is likely a problem on the compiler frontend. To find a workaround you can try to reorganize your code. But this could be a lengthy task. If there is no immediate need, try to wait for the next update and the fix of the problem.