Handle functions with anonymous arguments
Example: int f(int a, int, int c) { return a + c; }
This commit is contained in:
parent
761aeb431e
commit
0a01a5db56
|
@ -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++;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
int f(int a,int, int c) {
|
||||
return a + c;
|
||||
}
|
||||
|
||||
int main() {
|
||||
return f(1,2,3);
|
||||
}
|
||||
|
|
@ -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():
|
||||
|
|
Loading…
Reference in New Issue