[gdb/testsuite] Initialize anonymous union in gdb.cp/koenig.cc
authorKavitha Natarajan <kavitha.natarajan@amd.com>
Thu, 28 Oct 2021 05:21:32 +0000 (10:51 +0530)
committerKavitha Natarajan <kavitha.natarajan@amd.com>
Thu, 28 Oct 2021 05:21:32 +0000 (10:51 +0530)
GDB test fails while running the test case gdb.cp/koenig.exp using
clang compiler:
[...]
p foo (p_union)
No symbol "p_union" in current context.
(gdb) FAIL: gdb.cp/koenig.exp: p foo (p_union)
[...]

In the testcase, "p_union" is an unused/uninitialized variable of
anonymous union type. Clang does not emit symbol for unused anonymous
union/struct variables at any optimization level. Since the compiler
itself is not emitting the symbol for "p_union", debug info is also
not emitted when built with debug option. If the anonymous union is
initialized (or used), then clang emits the symbol "p_union" which
enables emitting debug info for "p_union".
[...]
p foo (p_union)
Cannot resolve function foo to any overloaded instance
(gdb) PASS: gdb.cp/koenig.exp: p foo (p_union)
[...]

gdb/testsuite/gdb.cp/koenig.cc

index 01e2637cfbd7d92896697eb5cecc1fd3ac56034e..f7dd083b044138f6bb422d6c7e71f5474af64af1 100644 (file)
@@ -305,6 +305,8 @@ main ()
   TTOA ttoa;
   foo (ttoa, 'a');
 
+  p_union = {0};
+
   P::Q q;
   q == 5;
   q == 5.0f;