"Assertion failure" when Release Compiler Error, NYI initv kind 1...

Hi,

[attachment=5836:attachment]

Build output:

------ Build started: Project: cu_blank_forTest, Configuration: Release Win32 ------

Performing Custom Build Step

cu_host.cu

“e:\mywindata\桌面\cu_blank_fortest\cu_blank_fortest\cu_kernel.cu”, line 23: warning:

      variable "x" was declared but never referenced

unsigned int x = threadIdx.x;

            ^

tmpxft_0000151c_00000000-3.gpu

tmpxft_0000151c_00000000-7.gpu

Assertion failure at line 907 of …/…/be/cg/NVISA/cgemit_targ.cxx:

Compiler Error in file C:\DOCUME~1\CDW\LOCALS~1\Temp/tmpxft_0000151c_00000000-8.i during Assembly phase:

NYI initv kind 1

nvopencc ERROR: d:\CUDA\bin/…/open64/lib//be.exe returned non-zero status 1

Linking…

Embedding manifest…

Build log was saved at “file://e:\MyWinData\桌面\cu_blank_forTest\cu_blank_forTest\Release\BuildLog.htm”

cu_blank_forTest - 0 error(s), 1 warning(s)

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

//kernel.cu

typedef struct g_states_t 

{

	unsigned int x;

	struct g_states_t *pl;

	struct g_states_t *pr;

}g_states;

//ok

__device__ g_states_t g_sarr1[2];

//failure

__device__ g_states_t g_sarr2[2] = {

	{1, &g_sarr2[0], &g_sarr2[1]},

	{2, &g_sarr2[1], &g_sarr2[0]}

};

__global__ void

kernel()

{

	unsigned int x = threadIdx.x;

	//ok

	g_sarr1[0].x = 1;

	g_sarr1[0].pl = &g_sarr1[0];

	g_sarr1[0].pr = &g_sarr1[1];

}

I see essentially the same compiler fault. This happened when I modified working code to remove an assignment statement within a loop. My first change (commenting out that assignment statement) resulted in an unused local variable. I went on to completely eliminate the variable but continued to get the problem. I haven’t found a workaround yet that will let me compile again.

Unfortunately I can’t post the code and will have to try to reproduce it with a smaller example. (I had little luck with that the last time I ran into a compiler issue.)

Build output:

Assertion failure at line 1454 of …/…/be/cg/cgemit.cxx:

Compiler Error in file /tmp/tmpxft_0000716d_00000000-5.i during Assembly phase:

incorrect register class for operand 1

nvopencc INTERNAL ERROR: /opt/cuda/open64/lib//be returned non-zero status 1
make: *** [obj/release/myfile.cu_o] Error 255

Any hints on what in the code could be causing this? I’m using fewer local variables now than before when it was compiling okay.