mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-21 02:40:56 +00:00
-Wall now does not set -Wuninitialized-global
This commit is contained in:
parent
be6942d972
commit
4f7113116d
4 changed files with 47 additions and 10 deletions
25
gmqcc.h
25
gmqcc.h
|
@ -1050,6 +1050,12 @@ void opts_set (uint32_t *, size_t, bool);
|
|||
void opts_setoptimlevel(unsigned int);
|
||||
void opts_ini_init (const char *);
|
||||
|
||||
/* Saner flag handling */
|
||||
void opts_backup_non_Wall();
|
||||
void opts_restore_non_Wall();
|
||||
void opts_backup_non_Werror_all();
|
||||
void opts_restore_non_Werror_all();
|
||||
|
||||
enum {
|
||||
# define GMQCC_TYPE_FLAGS
|
||||
# define GMQCC_DEFINE_FLAG(X) X,
|
||||
|
@ -1120,17 +1126,20 @@ typedef struct {
|
|||
bool pp_only; /* -E */
|
||||
size_t max_array_size; /* --max-array= */
|
||||
|
||||
uint32_t flags [1 + (COUNT_FLAGS / 32)];
|
||||
uint32_t warn [1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t werror [1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t optimization[1 + (COUNT_OPTIMIZATIONS / 32)];
|
||||
uint32_t flags [1 + (COUNT_FLAGS / 32)];
|
||||
uint32_t warn [1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t werror [1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t warn_backup [1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t werror_backup[1 + (COUNT_WARNINGS / 32)];
|
||||
uint32_t optimization [1 + (COUNT_OPTIMIZATIONS / 32)];
|
||||
} opts_cmd_t;
|
||||
|
||||
extern opts_cmd_t opts;
|
||||
|
||||
#define OPTS_FLAG(i) (!! (opts.flags [(i)/32] & (1<< ((i)%32))))
|
||||
#define OPTS_WARN(i) (!! (opts.warn [(i)/32] & (1<< ((i)%32))))
|
||||
#define OPTS_WERROR(i) (!! (opts.werror [(i)/32] & (1<< ((i)%32))))
|
||||
#define OPTS_OPTIMIZATION(i) (!! (opts.optimization[(i)/32] & (1<< ((i)%32))))
|
||||
#define OPTS_GENERIC(f,i) (!! (((f)[(i)/32]) & (1<< ((i)%32))))
|
||||
#define OPTS_FLAG(i) OPTS_GENERIC(opts.flags, (i))
|
||||
#define OPTS_WARN(i) OPTS_GENERIC(opts.warn, (i))
|
||||
#define OPTS_WERROR(i) OPTS_GENERIC(opts.werror, (i))
|
||||
#define OPTS_OPTIMIZATION(i) OPTS_GENERIC(opts.optimization, (i))
|
||||
|
||||
#endif
|
||||
|
|
4
main.c
4
main.c
|
@ -343,8 +343,10 @@ static bool options_parse(int argc, char **argv) {
|
|||
else if (!strcmp(argv[0]+2, "ERROR") ||
|
||||
!strcmp(argv[0]+2, "ERROR_ALL"))
|
||||
{
|
||||
opts_backup_non_Werror_all();
|
||||
for (itr = 0; itr < sizeof(opts.werror)/sizeof(opts.werror[0]); ++itr)
|
||||
opts.werror[itr] = 0xFFFFFFFFL;
|
||||
opts_restore_non_Werror_all();
|
||||
break;
|
||||
}
|
||||
else if (!strcmp(argv[0]+2, "NONE")) {
|
||||
|
@ -353,8 +355,10 @@ static bool options_parse(int argc, char **argv) {
|
|||
break;
|
||||
}
|
||||
else if (!strcmp(argv[0]+2, "ALL")) {
|
||||
opts_backup_non_Wall();
|
||||
for (itr = 0; itr < sizeof(opts.warn)/sizeof(opts.warn[0]); ++itr)
|
||||
opts.warn[itr] = 0xFFFFFFFFL;
|
||||
opts_restore_non_Wall();
|
||||
break;
|
||||
}
|
||||
else if (!strncmp(argv[0]+2, "ERROR_", 6)) {
|
||||
|
|
26
opts.c
26
opts.c
|
@ -68,9 +68,33 @@ static void opts_setdefault() {
|
|||
opts_set(opts.flags, ENHANCED_DIAGNOSTICS, true);
|
||||
}
|
||||
|
||||
void opts_backup_non_Wall() {
|
||||
size_t i;
|
||||
for (i = 0; i <= WARN_DEBUG; ++i)
|
||||
opts_set(opts.warn_backup, i, OPTS_WARN(i));
|
||||
}
|
||||
|
||||
void opts_restore_non_Wall() {
|
||||
size_t i;
|
||||
for (i = 0; i <= WARN_DEBUG; ++i)
|
||||
opts_set(opts.warn, i, OPTS_GENERIC(opts.warn_backup, i));
|
||||
}
|
||||
|
||||
void opts_backup_non_Werror_all() {
|
||||
size_t i;
|
||||
for (i = 0; i <= WARN_DEBUG; ++i)
|
||||
opts_set(opts.werror_backup, i, OPTS_WERROR(i));
|
||||
}
|
||||
|
||||
void opts_restore_non_Werror_all() {
|
||||
size_t i;
|
||||
for (i = 0; i <= WARN_DEBUG; ++i)
|
||||
opts_set(opts.werror, i, OPTS_GENERIC(opts.werror_backup, i));
|
||||
}
|
||||
|
||||
void opts_init(const char *output, int standard, size_t arraysize) {
|
||||
opts_setdefault();
|
||||
|
||||
|
||||
opts.output = output;
|
||||
opts.standard = (opts_std_t)standard; /* C++ ... y u no like me? */
|
||||
opts.max_array_size = arraysize;
|
||||
|
|
2
opts.def
2
opts.def
|
@ -53,6 +53,7 @@
|
|||
|
||||
/* warning flags */
|
||||
#ifdef GMQCC_TYPE_WARNS
|
||||
GMQCC_DEFINE_FLAG(UNINITIALIZED_GLOBAL)
|
||||
GMQCC_DEFINE_FLAG(DEBUG)
|
||||
GMQCC_DEFINE_FLAG(UNUSED_VARIABLE)
|
||||
GMQCC_DEFINE_FLAG(USED_UNINITIALIZED)
|
||||
|
@ -82,7 +83,6 @@
|
|||
GMQCC_DEFINE_FLAG(UNKNOWN_ATTRIBUTE)
|
||||
GMQCC_DEFINE_FLAG(RESERVED_NAMES)
|
||||
GMQCC_DEFINE_FLAG(UNINITIALIZED_CONSTANT)
|
||||
GMQCC_DEFINE_FLAG(UNINITIALIZED_GLOBAL)
|
||||
GMQCC_DEFINE_FLAG(DIFFERENT_QUALIFIERS)
|
||||
GMQCC_DEFINE_FLAG(DIFFERENT_ATTRIBUTES)
|
||||
GMQCC_DEFINE_FLAG(DEPRECATED)
|
||||
|
|
Loading…
Reference in a new issue