From 28473d314a98e89397c804b9ed6d9e4b3f39814c Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Wed, 5 Feb 2020 13:20:51 +0100 Subject: [PATCH] Make implicit truncation a warning --- include/asm/warning.h | 1 + src/asm/asmy.y | 4 ++-- src/asm/warning.c | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/asm/warning.h b/include/asm/warning.h index 5613799f..de854b33 100644 --- a/include/asm/warning.h +++ b/include/asm/warning.h @@ -21,6 +21,7 @@ enum WarningID { WARNING_SHIFT, WARNING_USER, WARNING_SHIFT_AMOUNT, + WARNING_TRUNCATION, NB_WARNINGS, diff --git a/src/asm/asmy.y b/src/asm/asmy.y index d32873bb..71aa2218 100644 --- a/src/asm/asmy.y +++ b/src/asm/asmy.y @@ -1190,7 +1190,7 @@ constlist_32bit_entry : /* empty */ const_8bit : relocconst { if( (!rpn_isReloc(&$1)) && (($1.nVal < -128) || ($1.nVal > 255)) ) - yyerror("Expression must be 8-bit"); + warning(WARNING_TRUNCATION, "Expression must be 8-bit"); $$ = $1; } ; @@ -1198,7 +1198,7 @@ const_8bit : relocconst const_16bit : relocconst { if ((!rpn_isReloc(&$1)) && (($1.nVal < -32768) || ($1.nVal > 65535))) - yyerror("Expression must be 16-bit"); + warning(WARNING_TRUNCATION, "Expression must be 16-bit"); $$ = $1; } ; diff --git a/src/asm/warning.c b/src/asm/warning.c index 80557158..253044a1 100644 --- a/src/asm/warning.c +++ b/src/asm/warning.c @@ -37,6 +37,7 @@ static enum WarningState const defaultWarnings[NB_WARNINGS] = { WARNING_DISABLED, /* Shifting undefined behavior */ WARNING_ENABLED, /* User warnings */ WARNING_DISABLED, /* Strange shift amount */ + WARNING_ENABLED, /* Implicit truncation loses some bits */ }; static enum WarningState warningStates[NB_WARNINGS]; @@ -72,6 +73,7 @@ static char const *warningFlags[NB_WARNINGS_ALL] = { "shift", "user", "shift-amount", + "truncation", /* Meta warnings */ "all",