aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--src/codegen.c20
-rw-r--r--src/codegen_wasm.c9
-rw-r--r--src/parse.c8
-rw-r--r--src/preprocess.c12
-rw-r--r--src/token.c2
6 files changed, 23 insertions, 32 deletions
diff --git a/Makefile b/Makefile
index a1204ad..c4eb6bb 100644
--- a/Makefile
+++ b/Makefile
@@ -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, &macroargs->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 = &macro->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 = &macro->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);