forked from cosmonaut/wraith-lang
codegen fixes
parent
459a1dd3b7
commit
876e8deb6e
|
@ -54,6 +54,8 @@ struct Program
|
|||
myStruct.myInt = 4;
|
||||
}
|
||||
|
||||
return myStruct.myInt;
|
||||
Console.PrintLine("%i", myStruct.myInt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue