1ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cc1 -x c++ -include %s -emit-llvm-only %s
2ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cc1 -x c++ -emit-pch %s -o %t
3ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cc1 -include-pch %t -emit-llvm-only %s
4ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
5ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#ifndef HEADER
6ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#define HEADER
7ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
8ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S00 { virtual void f(); };
9ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S01 { virtual void f(); };
10ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S02 { virtual void f(); };
11ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S03 { virtual void f(); };
12ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S04 { virtual void f(); };
13ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S05 { virtual void f(); };
14ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S06 { virtual void f(); };
15ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S07 { virtual void f(); };
16ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S08 { virtual void f(); };
17ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S09 { virtual void f(); };
18ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S10 { virtual void f(); };
19ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S11 { virtual void f(); };
20ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S12 { virtual void f(); };
21ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S13 { virtual void f(); };
22ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S14 { virtual void f(); };
23ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S15 { virtual void f(); };
24ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S16 { virtual void f(); };
25ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S17 { virtual void f(); };
26ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S18 { virtual void f(); };
27ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S19 { virtual void f(); };
28ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S20 { virtual void f(); };
29ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S21 { virtual void f(); };
30ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S22 { virtual void f(); };
31ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S23 { virtual void f(); };
32ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S24 { virtual void f(); };
33ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S25 { virtual void f(); };
34ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S26 { virtual void f(); };
35ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S27 { virtual void f(); };
36ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S28 { virtual void f(); };
37ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S29 { virtual void f(); };
38ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S30 { virtual void f(); };
39ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S31 { virtual void f(); };
40ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S32 { virtual void f(); };
41ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S33 { virtual void f(); };
42ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S34 { virtual void f(); };
43ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S35 { virtual void f(); };
44ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S36 { virtual void f(); };
45ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S37 { virtual void f(); };
46ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S38 { virtual void f(); };
47ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S39 { virtual void f(); };
48ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S40 { virtual void f(); };
49ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S41 { virtual void f(); };
50ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S42 { virtual void f(); };
51ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S43 { virtual void f(); };
52ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S44 { virtual void f(); };
53ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S45 { virtual void f(); };
54ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S46 { virtual void f(); };
55ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S47 { virtual void f(); };
56ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S48 { virtual void f(); };
57ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S49 { virtual void f(); };
58ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S50 { virtual void f(); };
59ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S51 { virtual void f(); };
60ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S52 { virtual void f(); };
61ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S53 { virtual void f(); };
62ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S54 { virtual void f(); };
63ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S55 { virtual void f(); };
64ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S56 { virtual void f(); };
65ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S57 { virtual void f(); };
66ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S58 { virtual void f(); };
67ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S59 { virtual void f(); };
68ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S60 { virtual void f(); };
69ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S61 { virtual void f(); };
70ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S62 { virtual void f(); };
71ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S63 { virtual void f(); };
72ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S64 { virtual void f(); };
73ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S65 { virtual void f(); };
74ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S66 { virtual void f(); };
75ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S67 { virtual void f(); };
76ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S68 { virtual void f(); };
77ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct S69 { virtual void f(); };
78ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
79ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesstruct Test {
80ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  // Deserializing this key function should cause the key functions
81ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  // table to get resized.
82ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  virtual void f(S00, S01, S02, S03, S04, S05, S06, S07, S08, S09,
83ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S10, S11, S12, S13, S14, S15, S16, S17, S18, S19,
84ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S20, S21, S22, S23, S24, S25, S26, S27, S28, S29,
85ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S30, S31, S32, S33, S34, S35, S36, S37, S38, S39,
86ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S40, S41, S42, S43, S44, S45, S46, S47, S48, S49,
87ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S50, S51, S52, S53, S54, S55, S56, S57, S58, S59,
88ef8225444452a1486bd721f3285301fe84643b00Stephen Hines                 S60, S61, S62, S63, S64, S65, S66, S67, S68, S69);
89ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  virtual void g();
90ef8225444452a1486bd721f3285301fe84643b00Stephen Hines};
91ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
92ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#else
93ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
94ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesvoid Test::g() {}
95ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesvoid h(Test &t) { t.g(); }
96ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
97ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#endif
98