Community
cancel
Showing results for 
Search instead for 
Did you mean: 
dan_e
Beginner
118 Views

#pragma compound statement -- internal error: 0_1506

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
118 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
118 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
118 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
118 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
118 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
118 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