From c2b4cd4b4a4afd15ef3c0412a39340f71973487f Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Wed, 21 Apr 2021 22:26:34 -0700 Subject: [PATCH] some cleanup --- CMakeLists.txt | 8 ++++++-- ast.c | 2 -- compiler.c | 45 +++++---------------------------------------- 3 files changed, 11 insertions(+), 44 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be9c716..a042da7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ ADD_FLEX_BISON_DEPENDENCY(Scanner Parser) include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable( - wraith_compile + wraith ast.c stack.c ${BISON_Parser_OUTPUTS} @@ -39,4 +39,8 @@ add_executable( compiler.c ) -target_link_libraries(wraith_compile PUBLIC LLVM) +if(NOT MSVC) + set_property(TARGET wraith PROPERTY COMPILE_FLAGS "-std=gnu99 -Wall -Wno-strict-aliasing -pedantic") +endif() + +target_link_libraries(wraith PUBLIC LLVM) diff --git a/ast.c b/ast.c index 2906a44..e41761c 100644 --- a/ast.c +++ b/ast.c @@ -210,7 +210,6 @@ Node* MakeFunctionSignatureNode( Node* typeNode, Node* arguments ) { - uint32_t i; Node* node = (Node*) malloc(sizeof(Node)); node->syntaxKind = FunctionSignature; node->childCount = 3; @@ -283,7 +282,6 @@ Node* MakeFunctionCallExpressionNode( Node *identifierNode, Node *argumentSequenceNode ) { - int32_t i; Node* node = (Node*) malloc(sizeof(Node)); node->syntaxKind = FunctionCallExpression; node->children = (Node**) malloc(sizeof(Node*) * 2); diff --git a/compiler.c b/compiler.c index 05b2c2b..9849d26 100644 --- a/compiler.c +++ b/compiler.c @@ -30,9 +30,6 @@ typedef struct ScopeFrame { LocalVariable *localVariables; uint32_t localVariableCount; - - FunctionArgument *arguments; - uint32_t argumentCount; } ScopeFrame; typedef struct Scope @@ -65,8 +62,6 @@ static Scope* CreateScope() Scope *scope = malloc(sizeof(Scope)); scope->scopeStack = malloc(sizeof(ScopeFrame)); - scope->scopeStack[0].argumentCount = 0; - scope->scopeStack[0].arguments = NULL; scope->scopeStack[0].localVariableCount = 0; scope->scopeStack[0].localVariables = NULL; scope->scopeStackCount = 1; @@ -78,8 +73,6 @@ static void PushScopeFrame(Scope *scope) { uint32_t index = scope->scopeStackCount; scope->scopeStack = realloc(scope->scopeStack, sizeof(ScopeFrame) * (scope->scopeStackCount + 1)); - scope->scopeStack[index].argumentCount = 0; - scope->scopeStack[index].arguments = NULL; scope->scopeStack[index].localVariableCount = 0; scope->scopeStack[index].localVariables = NULL; @@ -91,15 +84,6 @@ static void PopScopeFrame(Scope *scope) uint32_t i; uint32_t index = scope->scopeStackCount - 1; - if (scope->scopeStack[index].arguments != NULL) - { - for (i = 0; i < scope->scopeStack[index].argumentCount; i += 1) - { - free(scope->scopeStack[index].arguments[i].name); - } - free(scope->scopeStack[index].arguments); - } - if (scope->scopeStack[index].localVariables != NULL) { for (i = 0; i < scope->scopeStack[index].localVariableCount; i += 1) @@ -126,18 +110,6 @@ static void AddLocalVariable(Scope *scope, LLVMValueRef pointer, char *name) scopeFrame->localVariableCount += 1; } -static void AddFunctionArgument(Scope *scope, LLVMValueRef value, char *name) -{ - ScopeFrame *scopeFrame = &scope->scopeStack[scope->scopeStackCount - 1]; - uint32_t index = scopeFrame->argumentCount; - - scopeFrame->arguments = realloc(scopeFrame->arguments, sizeof(FunctionArgument) * (scopeFrame->argumentCount + 1)); - scopeFrame->arguments[index].name = strdup(name); - scopeFrame->arguments[index].value = value; - - scopeFrame->argumentCount += 1; -} - static LLVMValueRef FindStructFieldPointer(LLVMBuilderRef builder, LLVMValueRef structPointer, char *name) { int32_t i, j; @@ -195,14 +167,6 @@ static LLVMValueRef FindVariableValue(LLVMBuilderRef builder, char *name) for (i = scope->scopeStackCount - 1; i >= 0; i -= 1) { - for (j = 0; j < scope->scopeStack[i].argumentCount; j += 1) - { - if (strcmp(scope->scopeStack[i].arguments[j].name, name) == 0) - { - return scope->scopeStack[i].arguments[j].value; - } - } - for (j = 0; j < scope->scopeStack[i].localVariableCount; j += 1) { if (strcmp(scope->scopeStack[i].localVariables[j].name, name) == 0) @@ -413,8 +377,6 @@ static LLVMValueRef CompileExpression( LLVMValueRef function, Node *expression ) { - LLVMValueRef var; - switch (expression->syntaxKind) { case AccessExpression: @@ -440,7 +402,6 @@ static LLVMValueRef CompileExpression( /* FIXME: we need a scope structure */ static void CompileReturn(LLVMValueRef wStructValue, LLVMBuilderRef builder, LLVMValueRef function, Node *returnStatemement) { - uint32_t i, j; LLVMValueRef expression = CompileExpression(wStructValue, builder, function, returnStatemement->children[0]); LLVMBuildRet(builder, expression); } @@ -452,7 +413,6 @@ static void CompileReturnVoid(LLVMBuilderRef builder) static void CompileAssignment(LLVMValueRef wStructValue, LLVMBuilderRef builder, LLVMValueRef function, Node *assignmentStatement) { - LLVMValueRef fieldPointer; LLVMValueRef result = CompileExpression(wStructValue, builder, function, assignmentStatement->children[1]); LLVMValueRef identifier; if (assignmentStatement->children[0]->syntaxKind == AccessExpression) @@ -463,6 +423,11 @@ static void CompileAssignment(LLVMValueRef wStructValue, LLVMBuilderRef builder, { identifier = FindVariablePointer(assignmentStatement->children[0]->value.string); } + else + { + printf("Identifier not found!"); + return; + } LLVMBuildStore(builder, result, identifier); }