diff --git a/libacc/acc.cpp b/libacc/acc.cpp index 483a1ac62..6e195033a 100644 --- a/libacc/acc.cpp +++ b/libacc/acc.cpp @@ -4891,11 +4891,15 @@ class Compiler : public ErrorSink { int argCount = 0; for (Type* pP = pDecl->pTail; pP; pP = pP->pTail) { Type* pArg = pP->pHead; - addLocalSymbol(pArg); + if (pArg->id) { + addLocalSymbol(pArg); + } /* read param name and compute offset */ size_t alignment = pGen->stackAlignmentOf(pArg); a = (a + alignment - 1) & ~ (alignment-1); - VI(pArg->id)->pAddress = (void*) a; + if (pArg->id) { + VI(pArg->id)->pAddress = (void*) a; + } a = a + pGen->stackSizeOf(pArg); argCount++; } diff --git a/libacc/tests/data/funcargs.c b/libacc/tests/data/funcargs.c new file mode 100644 index 000000000..1dce2263c --- /dev/null +++ b/libacc/tests/data/funcargs.c @@ -0,0 +1,8 @@ +int f(int a,int, int c) { + return a + c; +} + +int main() { + return f(1,2,3); +} + diff --git a/libacc/tests/test.py b/libacc/tests/test.py index ed203341f..bef9fc64e 100644 --- a/libacc/tests/test.py +++ b/libacc/tests/test.py @@ -437,6 +437,11 @@ result: 0 def testDefines(self): self.compileCheck(["-R", "data/defines.c"], """Executing compiled code: result: 3 +""","""""") + + def testFuncArgs(self): + self.compileCheck(["-R", "data/funcargs.c"], """Executing compiled code: +result: 4 ""","""""") def main():