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

Compiler error: backend signals

chhenning_1977
Beginner
453 Views

Hi there, the following error prevents me to compile my project. Here is the output:

1>------ Rebuild All started: Project: MyProject, Configuration: Release x64 ------

1> StdAfx.cpp

1> 102042.cpp

1> 102042.cpp

1> 102042.cpp

1> 102042.cpp

1> 102042.cpp

1> 102042.cpp

1> 102042.cpp

1>C:\\Program Files (x86)\\MSBuild\\Microsoft.Cpp\\v4.0\\Platforms\\x64\\PlatformToolsets\\Intel C++ Compiler XE 12.0\\Microsoft.Cpp.x64.Intel C++ Compiler XE 12.0.targets(88,5): error : backend signals

1>

1> compilation aborted for StdAfx.cpp (code 4)

========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

I have turned off precompiled headers and still get the same error.

Any ideas what I can do?

Thanks,

Christian

0 Kudos
7 Replies
TimP
Honored Contributor III
453 Views
First, you must look at all of the error messages; the first error report for each compilation unit is the most important. Guessing that you may be using Microsoft stdafx, you may need to show what you are doing so as to get an opinion frome someone more knowledgeable about MFC.
0 Kudos
chhenning_1977
Beginner
453 Views
Well, I guess I have to start commenting out header files to find the cause.

I'll get back to you when I cannot fix it myself.

Thanks for your answer,
Christian
0 Kudos
Om_S_Intel
Employee
453 Views
It would be nice if you can share the testcase to investigate the issue.

0 Kudos
chhenning_1977
Beginner
453 Views
Hi there, it took me almost one day to finally come up with some example code that seems to break Intel C++ 12.0 compiler.
Here is the code:
--------------------------------------------------------------
#include
#include
using namespace std;
struct HOBJ
{
HOBJ() {}
HOBJ( const HOBJ& src ) { CopyFrom(src); }
HOBJ& CopyFrom( const HOBJ& src ) { memcpy(&guid, &src, sizeof(HOBJ)); return(*this); }
bool operator < ( const HOBJ& h2) { return( memcmp( &guid, &h2.guid, sizeof(HOBJ)) < 0); }
GUID guid;
};
struct Value
{
struct
{
HOBJ m_arrLOB[15];
};
};
int main()
{
map< int, Value > mmmm;
mmmm[0] = Value();
return 0;
}
-----------------------------------------------------
And the output from my command line:
---------------------------------------------------------------------------------------
Intel Inspector XE 2011 (build 134657)
Intel VTune Amplifier XE 2011 (build 128765)
Intel Parallel Studio XE 2011 Update 1
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.
Intel Composer XE 2011 Update 2 (package 154)
Setting environment for using Microsoft Visual Studio 2010 x64 tools.
C:\Program Files (x86)\Intel\ComposerXE-2011>cd c:\
c:\>icl -c chh.cpp
Intel C++ Intel 64 Compiler XE for applications running on Intel 64, Ve
rsion 12.0.2.154 Build 20110112
Copyright (C) 1985-2011 Intel Corporation. All rights reserved.
30 DAY EVALUATION LICENSE
icl: NOTE: The evaluation period for this product ends on 16-mar-2011 UTC.
chh.cpp
(0): internal error: backend signals
compilation aborted for chh.cpp (code 4)
c:\>
--------------------------------------------------------------------------
Hi there, it took me almost one day to finally come up with some example code that seems to break Intel C++ 12.0 compiler.
Here is the code.


And the output from my command line:
0 Kudos
Om_S_Intel
Employee
453 Views
I have reproduced the issue and submitted a report to Intel Compiler development team. I will update this thread when I have more information on this.

Thanks,

Om

Intel Compiler support
0 Kudos
Judith_W_Intel
Employee
453 Views

Thanks for taking the time to create a reproducer.

I have reduced the example further to this standalone test case:


template
struct Pair
{
Pair(const _Ty1&, const _Ty2& _Val2) : second(_Val2) {}
_Ty2 second;
};


struct HOBJ
{
HOBJ();
HOBJ( const HOBJ& src );
};

struct Value
{
#ifdef OK
struct S
#else
struct
#endif
{
HOBJ h[2];
};
};

int main()
{
Pair(int(), Value());
return 0;
}

As a workaround you can change the structure to a non-anonmyous struct (see #ifdef OK in example above).

BTW, it is illegal according to the C++ standard to declare anonymous structs. But since Microsoft allows this we do too.

0 Kudos
chhenning_1977
Beginner
453 Views
Judith, this is great news. Thanks a lot!
Christian
0 Kudos
Reply