diff --git a/parse.yy b/parse.yy index 1b44f996..90bddf02 100644 --- a/parse.yy +++ b/parse.yy @@ -495,8 +495,9 @@ declaration_statement { if ($1->declSpecs->storageClass == SC_TYPEDEF) { for (unsigned int i = 0; i < $1->declarators.size(); ++i) { - m->AddTypeDef($1->declarators[i]->sym); + m->AddTypeDef($1->declarators[i]->GetSymbol()); } + $$ = NULL; } else { std::vector vars = $1->GetVariableDeclarations(); diff --git a/tests/typedef-3.ispc b/tests/typedef-3.ispc new file mode 100644 index 00000000..1502823d --- /dev/null +++ b/tests/typedef-3.ispc @@ -0,0 +1,14 @@ + +export uniform int width() { return programCount; } + +export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) { + typedef float Float[3]; + float a = aFOO[programIndex]; + Float x; + x[0] = 1; + x[1] = a; + x[2] = 2; + RET[programIndex] = x[b-4]; +} + +export void result(uniform float RET[]) { RET[programIndex] = 1+programIndex; } diff --git a/tests/typedef-4.ispc b/tests/typedef-4.ispc new file mode 100644 index 00000000..6970a23d --- /dev/null +++ b/tests/typedef-4.ispc @@ -0,0 +1,10 @@ + +export uniform int width() { return programCount; } + +export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) { + typedef float Float; + Float a = aFOO[programIndex]; + RET[programIndex] = a; +} + +export void result(uniform float RET[]) { RET[programIndex] = 1+programIndex; }