llvm-gcc not compatible with gcc on a small case?

I found a case which gcc can compile while llvm-gcc can not. I’m using the gcc4.1 and the most recent llvm-gcc.

Here is the case:

class T {
int V;

T<4> test(T<4> a[4][8]) {
return a[3][3];

llvm-gcc dumped:

fail.cpp: In function \u2018T<4> test(T<4> (*)[8])\u2019:
fail.cpp:7: error: invalid use of incomplete type \u2018class T<4>\u2019
fail.cpp:2: error: declaration of \u2018class T<4>\u2019

Guys, any idea for this issue?

Whoops, forgot to CC: the list.

No, the method is not in the class. It is a function that returns a T<4> and takes (approximately) a reference to a multidimensional array of T<4>s. In fact it compiles fine for me, with no warnings, under both
g++ -Wall -c thing.cpp # version 4.5.1
clang++ -Wall -c thing.cpp # version 2.8

Perhaps gcc-4.2 (the base GCC version of llvm-gcc, unless you have a really old one, check llvm-gcc --version ?) gets confused about that code, or such?


Hi Isaac,