[PATCH] Skip tests requiring "alignof (void)" when compiling using clang

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


Hi,

On 6/30/20 12:03 PM, Gary Benson via Gdb-patches wrote:
> Hi all,
> 
> Clang fails to compile the generated output of gdb.cp/align.exp with
> the following error: invalid application of 'alignof' to an incomplete
> type 'void'.  This patch adds preprocessor conditionals to the
> generated output, to avoid the offending code, and causes the tests
> that require it to be skipped.
> 
> Checked on Fedora 31 x86_64, GCC and clang.  Ok to commit?
> 
> Cheers,
> Gary
> 
> --
> gdb/testsuite/ChangeLog:
> 
> 	* gdb.cp/align.exp: Skip tests requiring "alignof (void)"
> 	when compiling using clang.
> ---
>   gdb/testsuite/ChangeLog        | 5 +++++
>   gdb/testsuite/gdb.cp/align.exp | 9 +++++++--
>   2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.cp/align.exp b/gdb/testsuite/gdb.cp/align.exp
> index 0905a27..65ffb3b 100644
> --- a/gdb/testsuite/gdb.cp/align.exp
> +++ b/gdb/testsuite/gdb.cp/align.exp
> @@ -80,7 +80,9 @@ puts $outfile {
>   
>       unsigned a_int3 = alignof (int[3]);
>   
> +#if !defined(__clang__)
>       unsigned a_void = alignof (void);
> +#endif
>   
>       struct base { char c; };
>       struct derived : public virtual base { int i; };
> @@ -170,5 +172,8 @@ foreach type $typelist {
>   
>   set expected [get_integer_valueof a_int3 0]
>   gdb_test "print alignof(int\[3\])" " = $expected"
> -set expected [get_integer_valueof a_void 0]
> -gdb_test "print alignof(void)" " = $expected"
> +
> +if ![test_compiler_info clang*] {
> +    set expected [get_integer_valueof a_void 0]
> +    gdb_test "print alignof(void)" " = $expected"
> +}
> 

Instead of adding such pre-processing blocks, should we fix the code 
instead, to be more portable across compilers?


More information about the Gdb-patches mailing list