From: Michael Beck Date: Tue, 11 Dec 2007 14:20:21 +0000 (+0000) Subject: improved uninitialized variable warning X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=f0fc6838cda19af299d3f23d4b29c41ce4dbba05;p=cparser improved uninitialized variable warning [r18671] --- diff --git a/ast2firm.c b/ast2firm.c index e8af1ab..cf08613 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -17,6 +17,7 @@ #include "type_t.h" #include "ast_t.h" #include "parser.h" +#include "diagnostic.h" #include "lang_features.h" #include "driver/firm_opt.h" #include "driver/firm_cmdline.h" @@ -60,15 +61,10 @@ static int count_decls_in_stmts(const statement_t *stmt); ir_node *uninitialized_local_var(ir_graph *irg, ir_mode *mode, int pos) { - (void) pos; -#if 0 - const declaration_t *declaration = & value_numbers[pos]->declaration; + const declaration_t *declaration = get_irg_loc_description(irg, pos); - print_warning_prefix(declaration->source_position); - fprintf(stderr, "variable '%s' might be used uninitialized\n", - declaration->symbol->string); -#endif - fprintf(stderr, "Some variable might be used uninitialized\n"); + warningf(declaration->source_position, "variable '%#T' might be used uninitialized\n", + declaration->type, declaration->symbol); return new_r_Unknown(irg, mode); } @@ -2970,6 +2966,7 @@ static void create_local_variable(declaration_t *declaration) } else { declaration->declaration_kind = DECLARATION_KIND_LOCAL_VARIABLE; declaration->v.value_number = next_value_number_function; + set_irg_loc_description(current_ir_graph, next_value_number_function, declaration); ++next_value_number_function; } @@ -3828,6 +3825,7 @@ static void initialize_function_parameters(declaration_t *declaration) parameter->declaration_kind = DECLARATION_KIND_LOCAL_VARIABLE; parameter->v.value_number = next_value_number_function; + set_irg_loc_description(current_ir_graph, next_value_number_function, parameter); ++next_value_number_function; set_value(parameter->v.value_number, proj);