Dan Gohman | fea1dd0 | 2009-08-25 15:38:29 +0000 | [diff] [blame] | 1 | // RUN: %llvmgxx -S %s -o - | llvm-as -o /dev/null |
Tanya Lattner | d13e0ae | 2004-11-06 22:29:57 +0000 | [diff] [blame] | 2 | |
Chris Lattner | 313b84b | 2004-03-09 00:55:58 +0000 | [diff] [blame] | 3 | struct A { |
| 4 | virtual void Method() = 0; |
| 5 | }; |
| 6 | |
| 7 | struct B : public A { |
| 8 | virtual void Method() { } |
| 9 | }; |
| 10 | |
| 11 | typedef void (A::*fn_type_a)(void); |
| 12 | typedef void (B::*fn_type_b)(void); |
| 13 | |
| 14 | int main(int argc, char **argv) |
| 15 | { |
| 16 | fn_type_a f = reinterpret_cast<fn_type_a>(&B::Method); |
| 17 | fn_type_b g = reinterpret_cast<fn_type_b>(f); |
| 18 | B b; |
| 19 | (b.*g)(); |
| 20 | return 0; |
| 21 | } |