#pragma compound statement -- internal error: 0_1506

#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)#endificc (ICC) 12.0.0 20101006IA-32Ubuntu 10.10 x86_32

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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.

How about:

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

Jim Dempsey

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):https://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_defocus.cAlso 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.

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.

I duplicated the internal error with the test below on Windowis. I'll file a bug report for it.

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;
} 

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

Thanks for reporting the issue.
Jennifer

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today