OSDN Git Service

a7bb374f7f9e3a32017d978ad76fe0e79a8373f2
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / ipa / iinline-1.C
1 /* Verify that simple indirect calls are inlined even without early
2    inlining..  */
3 /* { dg-do compile } */
4 /* { dg-options "-O3 -c -fdump-ipa-inline -fno-early-inlining"  } */
5
6 extern void non_existent (const char *, int);
7
8 class String
9 {
10 private:
11   const char *data;
12
13 public:
14   String (const char *d) : data(d)
15   {}
16
17   int funcOne (int delim) const;
18   int printStuffTwice (int delim) const;
19 };
20
21
22 int String::funcOne (int delim) const
23 {
24   int i;
25   for (i = 0; i < delim; i++)
26     non_existent(data, i);
27
28   return 1;
29 }
30
31 int docalling (int (String::* f)(int delim) const)
32 {
33   String S ("muhehehe");
34
35   return (S.*f)(4);
36 }
37
38 int main (int argc, char *argv[])
39 {
40   int i;
41   i = docalling (&String::funcOne);
42   non_existent ("done", i);
43   return 0;
44 }
45
46 /* { dg-final { scan-ipa-dump "String::funcOne\[^\\n\]*inline copy in int main"  "inline"  } } */
47 /* { dg-final { cleanup-ipa-dump "inline" } } */