Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
7679 Discussions

#pragma compound statement -- internal error: 0_1506

dan_e
Beginner
198 Views
Couldn't find a bug tracker so...
icc chokes on this line (because of the && that gcc and msvc have no problem with) with aninternal error: 0_1506
#pragma omp parallel for private(y) if(!nqd->preview && img->y*img->x > 16384) schedule(guided)
Had to do this to workaround the problem:
#ifdef __INTEL_COMPILER
#pragma omp parallel for private(y) if(!nqd->preview) schedule(guided)
#else
#pragma omp parallel for private(y) if(!nqd->preview && img->y*img->x > 16384) schedule(guided)
#endif
icc (ICC) 12.0.0 20101006IA-32
Ubuntu 10.10 x86_32
0 Kudos
6 Replies
TimP
Black Belt
198 Views
Please submit a bug report with a working example on your premier.intel.com account. We could hope that someone might try to reproduce this, but it might be difficult without the actual example.
jimdempseyatthecove
Black Belt
198 Views
How about:

bool doGuided = (!nqd->preview && img->y*img->x > 16384);
#pragma omp parallel for private(y) if(doGuided) schedule(guided)

Jim Dempsey
dan_e
Beginner
198 Views
Don't think I have a premium account being a non-commercial 'free' user but I'll check.
The actual file this shows up in (don't know what's up with their security cert):
Also the other tools don't seem to like Blender too much so no staticanalysisor thread/memory checking. Totally separate issue I know but seem like a good test case since I've run it through llvm/clang tools with no problems before.
TimP
Black Belt
198 Views
If you didn't open an account, you can do so at https://registrationcenter.intel.com using the license key (embedded in the name of your license file.
I've seen problems with inclusion of compound syntax in omp clauses before; I agree they should be reported and maybe fixed.
JenniferJ
Moderator
198 Views
I duplicated the internal error with the test below on Windowis. I'll file a bug report for it.

[bash]typedef struct {
	bool preview;
	bool isImage;
} strNQD; 
typedef struct {
	int x;
	int y;
} strIMG; 

void foo(strNQD* nqd, strIMG* img)
{
	int y;
#ifdef 0
   #pragma omp parallel for private(y) if(!nqd->preview) schedule(guided) // works
#else
    #pragma omp parallel for private(y) if(!nqd->preview && img->y*img->x > 16384) schedule(guided)
#endif
	for (y = 0; y < 16355; y++)
		img->y = y+img->x;
} [/bash]

When it's fixed, I'll let you know.

Thanks for reporting the issue.
Jennifer
Alexander_W_Intel
198 Views
The fix for your issue was included in the Intel Parallel Studio/Composer 2011 Update 3. I tried your testcase with the actual Update 4 and it worked for me.

Alexander
Reply