From 47baca22d95271822a4c5f305a85565222716c68 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Fri, 28 Dec 2012 19:07:43 +0100 Subject: [PATCH] -Wuninitialized-const, -Wuninitialized-global --- opts.c | 1 + opts.def | 2 ++ parser.c | 8 ++++++++ 3 files changed, 11 insertions(+) diff --git a/opts.c b/opts.c index 0594b37..390e284 100644 --- a/opts.c +++ b/opts.c @@ -55,6 +55,7 @@ static void opts_setdefault() { opts_set(opts.warn, WARN_CPP, true); opts_set(opts.warn, WARN_UNKNOWN_ATTRIBUTE, true); opts_set(opts.warn, WARN_RESERVED_NAMES, true); + opts_set(opts.warn, WARN_UNINITIALIZED_CONSTANT, true); /* flags */ opts_set(opts.flags, ADJUST_VECTOR_FIELDS, true); opts_set(opts.flags, FTEPP, false); diff --git a/opts.def b/opts.def index 1dc3d5c..3c60deb 100644 --- a/opts.def +++ b/opts.def @@ -80,6 +80,8 @@ GMQCC_DEFINE_FLAG(CPP) GMQCC_DEFINE_FLAG(UNKNOWN_ATTRIBUTE) GMQCC_DEFINE_FLAG(RESERVED_NAMES) + GMQCC_DEFINE_FLAG(UNINITIALIZED_CONSTANT) + GMQCC_DEFINE_FLAG(UNINITIALIZED_GLOBAL) #endif #ifdef GMQCC_TYPE_OPTIMIZATIONS diff --git a/parser.c b/parser.c index a47c6ad..90dc44c 100644 --- a/parser.c +++ b/parser.c @@ -5145,6 +5145,14 @@ bool parser_finish(const char *output) if (!ast_istype(parser->globals[i], ast_value)) continue; asvalue = (ast_value*)(parser->globals[i]); + if (asvalue->cvq == CV_CONST && !asvalue->hasvalue) + (void)!compile_warning(ast_ctx(asvalue), WARN_UNINITIALIZED_CONSTANT, + "uninitialized constant: `%s`", + asvalue->name); + else if ((asvalue->cvq == CV_NONE || asvalue->cvq == CV_CONST) && !asvalue->hasvalue) + (void)!compile_warning(ast_ctx(asvalue), WARN_UNINITIALIZED_GLOBAL, + "uninitialized global: `%s`", + asvalue->name); if (!ast_generate_accessors(asvalue, ir)) { ir_builder_delete(ir); return false; -- 2.39.2