mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
Skip tests requiring "alignof (void)" when compiling using clang
As an extension, GCC allows void pointer arithmetic, with sizeof(void) and alignof(void) both 1. GDB supports this extension, but clang does not, and fails to compile the generated output of gdb.cp/align.exp with the following error: gdb compile failed, /gdbtest/build/gdb/testsuite/outputs/gdb.cp/align/align.cc:28:23: error: invalid application of 'alignof' to an incomplete type 'void' unsigned a_void = alignof (void); ^ ~~~~~~ 1 error generated. This commit adds preprocessor conditionals to the generated output, to omit the unsupported code when using clang, and supplies the expected value so the test can complete. gdb/testsuite/ChangeLog: * gdb.cp/align.exp: Fix "alignof (void)" tests when compiling with clang.
This commit is contained in:
parent
39326c35dd
commit
c14b491355
@ -1,3 +1,8 @@
|
||||
2020-07-20 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* gdb.cp/align.exp: Fix "alignof (void)" tests when compiling
|
||||
with clang.
|
||||
|
||||
2020-07-20 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* gdb.threads/omp-par-scope.c (lock, lock2): New variable.
|
||||
|
@ -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,14 @@ 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]
|
||||
|
||||
# As an extension, GCC allows void pointer arithmetic, with
|
||||
# sizeof(void) and alignof(void) both 1. This test checks
|
||||
# GDB's support of GCC's extension.
|
||||
if [test_compiler_info clang*] {
|
||||
# Clang doesn't support GCC's extension.
|
||||
set expected 1
|
||||
} else {
|
||||
set expected [get_integer_valueof a_void 0]
|
||||
}
|
||||
gdb_test "print alignof(void)" " = $expected"
|
||||
|
Loading…
Reference in New Issue
Block a user