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

#pragma compound statement -- internal error: 0_1506

dan_e
Beginner
481 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
Honored Contributor III
481 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.
0 Kudos
jimdempseyatthecove
Honored Contributor III
481 Views
How about:

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

Jim Dempsey
0 Kudos
dan_e
Beginner
481 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.
0 Kudos
TimP
Honored Contributor III
481 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.
0 Kudos
JenniferJ
Moderator
481 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
0 Kudos
Alexander_W_Intel
481 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
0 Kudos
Reply