codegen fixes

ast_refactor
cosmonaut 2021-05-16 00:23:52 -07:00
parent 459a1dd3b7
commit 876e8deb6e
2 changed files with 7 additions and 5 deletions

View File

@ -54,6 +54,8 @@ struct Program
myStruct.myInt = 4;
}
return myStruct.myInt;
Console.PrintLine("%i", myStruct.myInt);
return 0;
}
}

View File

@ -509,7 +509,7 @@ static LLVMValueRef CompileFunctionCallExpression(
if (functionCallExpression->functionCallExpression.identifier->syntaxKind == AccessExpression)
{
LLVMTypeRef typeReference = FindStructType(
functionCallExpression->functionCallExpression.identifier->identifier.name
functionCallExpression->functionCallExpression.identifier->accessExpression.accessee->identifier.name
);
if (typeReference != NULL)
@ -708,7 +708,7 @@ static LLVMBasicBlockRef CompileIfElseStatement(LLVMBuilderRef builder, LLVMValu
for (i = 0; i < ifElseStatement->ifElseStatement.ifStatement->ifStatement.statementSequence->statementSequence.count; i += 1)
{
CompileStatement(builder, function, ifElseStatement->ifStatement.statementSequence->statementSequence.sequence[i]);
CompileStatement(builder, function, ifElseStatement->ifElseStatement.ifStatement->ifStatement.statementSequence->statementSequence.sequence[i]);
}
LLVMBuildBr(builder, afterCond);
@ -900,13 +900,13 @@ static void CompileFunction(
for (i = 0; i < functionSignature->functionSignature.arguments->functionSignatureArguments.count; i += 1)
{
char *ptrName = strdup(functionSignature->functionSignature.arguments->functionSignatureArguments.sequence[i]->identifier.name);
char *ptrName = strdup(functionSignature->functionSignature.arguments->functionSignatureArguments.sequence[i]->declaration.identifier->identifier.name);
strcat(ptrName, "_ptr");
LLVMValueRef argument = LLVMGetParam(function, i + !isStatic);
LLVMValueRef argumentCopy = LLVMBuildAlloca(builder, LLVMTypeOf(argument), ptrName);
LLVMBuildStore(builder, argument, argumentCopy);
free(ptrName);
AddLocalVariable(scope, argumentCopy, NULL, functionSignature->functionSignature.arguments->functionSignatureArguments.sequence[i]->identifier.name);
AddLocalVariable(scope, argumentCopy, NULL, functionSignature->functionSignature.arguments->functionSignatureArguments.sequence[i]->declaration.identifier->identifier.name);
}
for (i = 0; i < functionBody->statementSequence.count; i += 1)