The 'torture' section of the coroutine tests is primarily about checking
correct operation of the generated code. It should, ideally, be possible
to run this part of the testsuite with '-Wall' and expect no fails. In
the case that we wish to test for a specific diagnostic (and that it does
not appear over a range of optimisation/debug conditions) then we should
make that explict (as done, for example, in pr109867.C).
The tests amended here have warnings because of unused entities; in many
cases those are relevant to the test, and so we just mark them with
__attribute__((__unused__)).
We amend the debug output in coro.h to avoid similar warnings when print
output is disabled (the default).
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/coro.h: Use a variadic macro for PRINTF to
avoid unused warnings when output is disabled.
* g++.dg/coroutines/torture/co-await-04-control-flow.C: Avoid
unused warnings.
* g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
* g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
* g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
Likewise.
* g++.dg/coroutines/torture/pr109867.C: Likewise.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
#ifndef OUTPUT
# define PRINT(X)
-# define PRINTF (void)
+# define PRINTF(...)
#else
#include <stdio.h>
# define PRINT(X) puts(X)
-# define PRINTF printf
+# define PRINTF(...) printf(__VA_ARGS__)
#endif
// { dg-do run }
+// { dg-additional-options "-Wno-unused-label" }
// Check correct operation of await transform.
f (T y) noexcept
{
PRINT ("coro1: about to return");
- T x = y;
+ __attribute__((__unused__)) T x = y;
co_return 3;
}
struct coro1
n4849_ia_thrower (int k)
{
- int caught = 0;
PRINT ("f: about to return 22");
co_return 22;
}
{
int value = start;
{
- int value = start + 5;
+ __attribute__((__unused__)) int value = start + 5;
{
- int value = start + 20;
+ __attribute__((__unused__)) int value = start + 20;
}
{
int value = start + 1;
int main()
{
- auto t = []() -> task
+ __attribute__((__unused__)) auto t = []() -> task
{
co_return 2;
}();