diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | src/codegen.c | 20 | ||||
| -rw-r--r-- | src/codegen_wasm.c | 9 | ||||
| -rw-r--r-- | src/parse.c | 8 | ||||
| -rw-r--r-- | src/preprocess.c | 12 | ||||
| -rw-r--r-- | src/token.c | 2 |
6 files changed, 23 insertions, 32 deletions
@@ -28,11 +28,11 @@ $(BUILD_DIR): # TODO: provide release build? # TODO: use -std=c23 instead of -std=gnu23 $(BUILD_ROOT_DIR)/$(TARGET): $(OBJECTS) - $(CC) -Wall -MMD -g -O0 -std=gnu23 -o $@ $^ + $(CC) -Wall -Wextra -MMD -g -O0 -std=gnu23 -o $@ $^ # TODO: provide release build? # TODO: use -std=c23 instead of -std=gnu23 $(BUILD_DIR)/%.o: src/%.c - $(CC) -c $(CFLAGS) -Wall -MMD -g -O0 -std=gnu23 -o $@ $< + $(CC) -c $(CFLAGS) -Wall -Wextra -MMD -g -O0 -std=gnu23 -o $@ $< -include $(BUILD_DIR)/*.d diff --git a/src/codegen.c b/src/codegen.c index 5063bd0..d35772f 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -66,7 +66,7 @@ static void codegen_func_prologue(CodeGen* g, AstNode* ast) { fprintf(g->out, " sub rsp, %d\n", to_aligned(ast->node_stack_size, 8)); } -static void codegen_func_epilogue(CodeGen* g, AstNode* ast) { +static void codegen_func_epilogue(CodeGen* g, AstNode*) { fprintf(g->out, " mov rsp, rbp\n"); fprintf(g->out, " pop rbp\n"); fprintf(g->out, " ret\n"); @@ -94,7 +94,7 @@ static void codegen_unary_expr(CodeGen* g, AstNode* ast) { } } -static void codegen_ref_expr(CodeGen* g, AstNode* ast, GenMode gen_mode) { +static void codegen_ref_expr(CodeGen* g, AstNode* ast) { codegen_expr(g, ast->node_operand, GenMode_lval); } @@ -557,7 +557,7 @@ static void codegen_expr(CodeGen* g, AstNode* ast, GenMode gen_mode) { } else if (ast->kind == AstNodeKind_unary_expr) { codegen_unary_expr(g, ast); } else if (ast->kind == AstNodeKind_ref_expr) { - codegen_ref_expr(g, ast, gen_mode); + codegen_ref_expr(g, ast); } else if (ast->kind == AstNodeKind_deref_expr) { codegen_deref_expr(g, ast, gen_mode); } else if (ast->kind == AstNodeKind_cast_expr) { @@ -647,7 +647,7 @@ static void codegen_do_while_stmt(CodeGen* g, AstNode* ast) { --g->loop_labels; } -static void codegen_break_stmt(CodeGen* g, AstNode* ast) { +static void codegen_break_stmt(CodeGen* g, AstNode*) { if (g->switch_label != -1) { fprintf(g->out, " jmp .Lend%d\n", g->switch_label); } else { @@ -656,7 +656,7 @@ static void codegen_break_stmt(CodeGen* g, AstNode* ast) { } } -static void codegen_continue_stmt(CodeGen* g, AstNode* ast) { +static void codegen_continue_stmt(CodeGen* g, AstNode*) { int label = *g->loop_labels; fprintf(g->out, " jmp .Lcontinue%d\n", label); } @@ -753,12 +753,6 @@ static void codegen_expr_stmt(CodeGen* g, AstNode* ast) { codegen_expr(g, ast->node_expr, GenMode_rval); } -static void codegen_var_decl(CodeGen* g, AstNode* ast) { -} - -static void codegen_nop(CodeGen* g, AstNode* ast) { -} - static void codegen_block_stmt(CodeGen* g, AstNode* ast) { for (int i = 0; i < ast->node_len; ++i) { AstNode* stmt = ast->node_items + i; @@ -790,9 +784,9 @@ static void codegen_stmt(CodeGen* g, AstNode* ast) { } else if (ast->kind == AstNodeKind_expr_stmt) { codegen_expr_stmt(g, ast); } else if (ast->kind == AstNodeKind_lvar_decl) { - codegen_var_decl(g, ast); + // Do nothing. } else if (ast->kind == AstNodeKind_nop) { - codegen_nop(g, ast); + // Do nothing. } else if (ast->kind == AstNodeKind_case_label || ast->kind == AstNodeKind_default_label) { // They are handled by codegen_switch_stmt(). unreachable(); diff --git a/src/codegen_wasm.c b/src/codegen_wasm.c index 335a527..e0be383 100644 --- a/src/codegen_wasm.c +++ b/src/codegen_wasm.c @@ -36,7 +36,7 @@ static void codegen_func_prologue(CodeGen* g, AstNode* ast) { fprintf(g->out, " (result i32)\n"); } -static void codegen_func_epilogue(CodeGen* g, AstNode* ast) { +static void codegen_func_epilogue(CodeGen*, AstNode*) { } static void codegen_int_expr(CodeGen* g, AstNode* ast) { @@ -57,7 +57,7 @@ static void codegen_binary_expr(CodeGen* g, AstNode* ast, GenMode gen_mode) { } } -static void codegen_lvar(CodeGen* g, AstNode* ast, GenMode gen_mode) { +static void codegen_lvar(CodeGen* g, AstNode* ast, GenMode) { fprintf(g->out, " local.get $l_%s\n", ast->name); } @@ -109,9 +109,6 @@ static void codegen_if_stmt(CodeGen* g, AstNode* ast) { fprintf(g->out, " )\n"); } -static void codegen_nop(CodeGen* g, AstNode* ast) { -} - static void codegen_block_stmt(CodeGen* g, AstNode* ast) { for (int i = 0; i < ast->node_len; ++i) { AstNode* stmt = ast->node_items + i; @@ -127,7 +124,7 @@ static void codegen_stmt(CodeGen* g, AstNode* ast) { } else if (ast->kind == AstNodeKind_if_stmt) { codegen_if_stmt(g, ast); } else if (ast->kind == AstNodeKind_nop) { - codegen_nop(g, ast); + // Do nothing. } else { unreachable(); } diff --git a/src/parse.c b/src/parse.c index c602073..d590df6 100644 --- a/src/parse.c +++ b/src/parse.c @@ -207,7 +207,7 @@ static Token* expect(Parser* p, TokenKind expected) { token_stringify(t)); } -static int find_lvar_in_scope(Parser* p, Scope* scope, const char* name) { +static int find_lvar_in_scope(Parser*, Scope* scope, const char* name) { for (size_t i = 0; i < scope->syms.len; ++i) { ScopedSymbol* sym = &scope->syms.data[i]; if (sym->name && strcmp(sym->name, name) == 0) { @@ -1155,7 +1155,7 @@ static AstNode* parse_for_stmt(Parser* p) { if (is_type_token(p, peek_token(p))) { AstNode* decls = parse_var_decl(p); AstNode* initializers = ast_new_list(1); - for (size_t i = 0; i < decls->node_len; i++) { + for (int i = 0; i < decls->node_len; i++) { AstNode* initializer = decls->node_items[i].node_expr; if (initializer) { ast_append(initializers, initializer); @@ -1523,7 +1523,7 @@ static AstNode* parse_member_declaration(Parser* p) { expect(p, TokenKind_semicolon); - for (size_t i = 0; i < decls->node_len; i++) { + for (int i = 0; i < decls->node_len; i++) { decls->node_items[i].kind = AstNodeKind_struct_member; } return decls; @@ -1535,7 +1535,7 @@ static AstNode* parse_member_declaration_list(Parser* p) { AstNode* members = ast_new_list(4); while (peek_token(p)->kind != TokenKind_brace_r) { AstNode* decls = parse_member_declaration(p); - for (size_t i = 0; i < decls->node_len; i++) { + for (int i = 0; i < decls->node_len; i++) { ast_append(members, &decls->node_items[i]); } } diff --git a/src/preprocess.c b/src/preprocess.c index c932f5d..ed9dd8b 100644 --- a/src/preprocess.c +++ b/src/preprocess.c @@ -195,7 +195,7 @@ void macroargs_build_json(JsonBuilder* builder, MacroArgArray* macroargs) { jsonbuilder_object_member_end(builder); jsonbuilder_object_member_start(builder, "data"); jsonbuilder_array_start(builder); - for (int i = 0; i < macroargs->len; ++i) { + for (size_t i = 0; i < macroargs->len; ++i) { jsonbuilder_array_element_start(builder); macroarg_build_json(builder, ¯oargs->data[i]); jsonbuilder_array_element_end(builder); @@ -641,7 +641,7 @@ static int expand_macro(Preprocessor* pp, bool skip_newline, MacroExpansionConte } } Token* rhs = NULL; - for (int j = i + 1; j < macro->replacements.len; ++j) { + for (size_t j = i + 1; j < macro->replacements.len; ++j) { if (macro->replacements.data[j].kind != TokenKind_whitespace) { rhs = ¯o->replacements.data[j]; break; @@ -661,7 +661,7 @@ static int expand_macro(Preprocessor* pp, bool skip_newline, MacroExpansionConte } } else if (kind == TokenKind_hash) { Token* operand = NULL; - for (int j = i + 1; j < macro->replacements.len; ++j) { + for (size_t j = i + 1; j < macro->replacements.len; ++j) { if (macro->replacements.data[j].kind != TokenKind_whitespace) { operand = ¯o->replacements.data[j]; break; @@ -1017,7 +1017,7 @@ static void preprocess_include_directive(Preprocessor* pp) { expand_include_directive(pp, include_name_resolved, include_name); } -static void preprocess_embed_directive(Preprocessor* pp) { +static void preprocess_embed_directive(Preprocessor*) { unimplemented(); } @@ -1084,7 +1084,7 @@ static void preprocess_undef_directive(Preprocessor* pp) { } } -static void preprocess_line_directive(Preprocessor* pp) { +static void preprocess_line_directive(Preprocessor*) { unimplemented(); } @@ -1118,7 +1118,7 @@ static void preprocess_warning_directive(Preprocessor* pp) { fprintf(stderr, "%s:%d: %s", msg->loc.filename, msg->loc.line, msg->value.string); } -static void preprocess_pragma_directive(Preprocessor* pp) { +static void preprocess_pragma_directive(Preprocessor*) { unimplemented(); } diff --git a/src/token.c b/src/token.c index 0790e95..7e54729 100644 --- a/src/token.c +++ b/src/token.c @@ -365,7 +365,7 @@ void tokens_build_json(JsonBuilder* builder, TokenArray* tokens) { jsonbuilder_object_member_end(builder); jsonbuilder_object_member_start(builder, "data"); jsonbuilder_array_start(builder); - for (int i = 0; i < tokens->len; ++i) { + for (size_t i = 0; i < tokens->len; ++i) { jsonbuilder_array_element_start(builder); token_build_json(builder, &tokens->data[i]); jsonbuilder_array_element_end(builder); |
