[PATCH] Make out of range type conversions explicit

Luis Machado luis.machado@linaro.org
Tue Jun 30 17:52:08 GMT 2020


If the approach is acceptable, we should at least make it clear, through 
comments, that this is being done for clang. Having these casts in the 
code, without an explanation, is a bit cryptic.

On 6/30/20 10:58 AM, Gary Benson via Gdb-patches wrote:
> HI all,
> 
> Clang fails to compile two testcases with the following warning:
> implicit conversion from 'X' to 'Y' changes value from x to y
> [-Wconstant-conversion].  This patch adds casts that make the
> value-changing conversions explicit.
> 
> Checked on Fedora 31 x86_64, GCC and clang.  Ok to commit?
> 
> Cheers,
> Gary
> 
> --
> gdb/testsuite/ChangeLog:
> 
> 	* gdb.base/charset.c (main): Explicitly cast values which are
> 	out of range of their destination types.
> 	* gdb.base/structs2.c (main): Likewise.
> ---
>   gdb/testsuite/ChangeLog           | 6 ++++++
>   gdb/testsuite/gdb.base/charset.c  | 6 +++---
>   gdb/testsuite/gdb.base/structs2.c | 2 +-
>   3 files changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.base/charset.c b/gdb/testsuite/gdb.base/charset.c
> index ec4927d..54bd2dd 100644
> --- a/gdb/testsuite/gdb.base/charset.c
> +++ b/gdb/testsuite/gdb.base/charset.c
> @@ -141,14 +141,14 @@ int main ()
>                  120,
>                  7, 8, 12,
>                  10, 13, 9,
> -               11, 162, 17);
> +               11, (char) 162, 17);
>     fill_run (iso_8859_1_string, 7, 26, 65);
>     fill_run (iso_8859_1_string, 33, 26, 97);
>     fill_run (iso_8859_1_string, 59, 10, 48);
>   
>     /* Initialize ebcdic_us_string.  */
>     init_string (ebcdic_us_string,
> -               167,
> +               (char) 167,
>                  47, 22, 12,
>                  37, 13, 5,
>                  11, 74, 17);
> @@ -165,7 +165,7 @@ int main ()
>   
>     /* Initialize ibm1047_string.  */
>     init_string (ibm1047_string,
> -               167,
> +               (char) 167,
>                  47, 22, 12,
>                  37, 13, 5,
>                  11, 74, 17);
> diff --git a/gdb/testsuite/gdb.base/structs2.c b/gdb/testsuite/gdb.base/structs2.c
> index 7c8be03..2847cd6 100644
> --- a/gdb/testsuite/gdb.base/structs2.c
> +++ b/gdb/testsuite/gdb.base/structs2.c
> @@ -13,7 +13,7 @@ static void param_reg (register signed char pr_char,
>   
>     bkpt = 0;
>     param_reg (120, 130, 32000, 33000);
> -  param_reg (130, 120, 33000, 32000);
> +  param_reg ((signed char) 130, 120, (short) 33000, 32000);
>   
>     return 0;
>   }
> 


More information about the Gdb-patches mailing list