summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C
blob: 3f0a0e7d0f02c00176f55fed60fdcf3f983c8516 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// { dg-do compile }
// { dg-options "-Wunused -W" }
// Suppress a warning that is irrelevant to the purpose of this test.
// { dg-options "-Wunused -W -Wno-abi" { target arm_eabi } }

#include <stdarg.h>

struct A
{
  long a;
  A () : a (0) { }
  A (long x) : a (x) { }
  operator long () const { return a; }
  long operator- (const A& x) const { return a - x.a; }
};

long
fn1 (A a)
{
  return a - A (0);
}

struct B
{
  bool operator() (const int x, const int y) const throw() { return x < y; }
};

template <typename T>
bool 
fn2 (int x, int y, T z)
{
  return z (x, y);
}

bool
fn3 (void)
{
  return fn2 (1, 2, B ());
}

int
fn4 (va_list ap)
{
  return va_arg (ap, int);
}

template <typename T>
T
fn5 (va_list ap)
{
  return va_arg (ap, T);
}

int
fn6 (va_list ap)
{
  return fn5 <int> (ap);
}

template <typename T>
int
fn7 (T ap)
{
  return va_arg (ap, int);
}

int
fn8 (va_list ap)
{
  return fn7 (ap);
}