[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