aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Larsen <blarsen@redhat.com>2023-01-03 15:07:47 +0100
committerBruno Larsen <blarsen@redhat.com>2023-01-06 10:50:43 +0100
commit695e9773786d79f191e9487a88d3b39a57d9c7e7 (patch)
tree5ca0c8986e13c60bb08ec174c03fbde1ae16ea65
parent5fb0e308577143ceb313fde5538dc9ecb038f29f (diff)
downloadgdb-695e9773786d79f191e9487a88d3b39a57d9c7e7.zip
gdb-695e9773786d79f191e9487a88d3b39a57d9c7e7.tar.gz
gdb-695e9773786d79f191e9487a88d3b39a57d9c7e7.tar.bz2
gdb/testsuite: Fix FAILs in gdb.linespec/cpcompletion.exp when using clang
When using clang 16.0.0 to test gdb.linespec/cpcompletion.exp, I get 99 unexpected failures. They all fail to produce a complete list of completion options for a function, either overload2_function, overload3_function or anon_ns_function. This happens because clang is optimizing them away, since they are never used. Fix this by adding __attribute__((used)) to all declarations to the aforementioned functions.
-rw-r--r--gdb/testsuite/gdb.linespec/cpls.cc33
1 files changed, 18 insertions, 15 deletions
diff --git a/gdb/testsuite/gdb.linespec/cpls.cc b/gdb/testsuite/gdb.linespec/cpls.cc
index 037b5c2..d63ed89 100644
--- a/gdb/testsuite/gdb.linespec/cpls.cc
+++ b/gdb/testsuite/gdb.linespec/cpls.cc
@@ -56,16 +56,17 @@ struct overload2_arg9 {};
struct overload2_arga {};
#define GEN_OVERLOAD2_FUNCTIONS(ARG1, ARG2) \
- void \
+ void __attribute__ ((used)) \
overload2_function (ARG1) \
{} \
\
struct struct_overload2_test \
{ \
- void overload2_function (ARG2); \
+ void __attribute__ ((used)) \
+ overload2_function (ARG2); \
}; \
\
- void \
+ void __attribute__ ((used)) \
struct_overload2_test::overload2_function (ARG2) \
{}
@@ -99,23 +100,25 @@ namespace ns_overload2_test
/* Code for the overload-3 test. */
#define GEN_OVERLOAD3_FUNCTIONS(ARG1, ARG2) \
- void \
+ void __attribute__ ((used)) \
overload3_function (ARG1) \
{} \
- void \
+ void __attribute__ ((used)) \
overload3_function (ARG2) \
{} \
\
struct struct_overload3_test \
{ \
- void overload3_function (ARG1); \
- void overload3_function (ARG2); \
+ void __attribute__ ((used)) \
+ overload3_function (ARG1); \
+ void __attribute__ ((used)) \
+ overload3_function (ARG2); \
}; \
\
- void \
+ void __attribute__ ((used)) \
struct_overload3_test::overload3_function (ARG1) \
{} \
- void \
+ void __attribute__ ((used)) \
struct_overload3_test::overload3_function (ARG2) \
{}
@@ -343,15 +346,15 @@ namespace ns2_incomplete_scope_colon_test
namespace
{
- void anon_ns_function ()
+ void __attribute__ ((used)) anon_ns_function ()
{}
struct anon_ns_struct
{
- void anon_ns_function ();
+ void __attribute__ ((used)) anon_ns_function ();
};
- void
+ void __attribute__ ((used))
anon_ns_struct::anon_ns_function ()
{}
}
@@ -361,15 +364,15 @@ namespace the_anon_ns_wrapper_ns
namespace
{
- void anon_ns_function ()
+ void __attribute__ ((used)) anon_ns_function ()
{}
struct anon_ns_struct
{
- void anon_ns_function ();
+ void __attribute__ ((used)) anon_ns_function ();
};
- void
+ void __attribute__ ((used))
anon_ns_struct::anon_ns_function ()
{}
}