2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / pr84943-2.C
blobd1ef012b91559086abc7712efd41e6660fc5aa64
1 // { dg-do run }
3 // Avoid -pedantic-error default
4 // { dg-options "" }
6 // Make sure the functions referenced by various forms of
7 // address-taking are marked as used and compiled in.
9 static void ac() {}
10 void a() {
11   ac[0](); // { dg-warning "arithmetic" }
14 static void bc() {}
15 void b() {
16   (&*&*&*&bc)();
19 template <typename U> U cc() {}
20 void (*c())() {
21   return cc;
24 template <typename T>
25 struct x {
26   void a(int);
27   template <typename U> static U a(x*) {}
28   static void a(long) {}
29   static void a(void *) {}
30   static void a() {
31     void (*p0)(void*) = x().a;
32     p0(0);
33     void (*p1)(long) = a;
34     p1(0);
35     void (*p2)() = a;
36     p2();
37     void (*p3)(x*) = a;
38     p3(0);
39   }
42 struct z {
43   void a(int);
44   template <typename U> static U a(z*) {}
45   static void a(long) {}
46   static void a(void *) {}
47   static void a() {
48     void (*p0)(void*) = z().a;
49     p0(0);
50     void (*p1)(long) = a;
51     p1(0);
52     void (*p2)() = a;
53     p2();
54     void (*p3)(z*) = a;
55     p3(0);
56   }
59 int main(int argc, char *argv[]) {
60   if (argc > 1) {
61     x<void>().a();
62     z().a();
63   }