Tanya Lattner | d13e0ae | 2004-11-06 22:29:57 +0000 | [diff] [blame] | 1 | // RUN: %llvmgxx -S %s -o - | llvm-as -f -o /dev/null |
| 2 | |
Chris Lattner | 4e44c0e | 2003-09-29 21:53:04 +0000 | [diff] [blame] | 3 | // Non-POD classes cannot be passed into a function by component, because their |
| 4 | // dtors must be run. Instead, pass them in by reference. The C++ front-end |
| 5 | // was mistakenly "thinking" that 'foo' took a structure by component. |
| 6 | |
Chris Lattner | 0f44ad3 | 2003-09-29 21:18:36 +0000 | [diff] [blame] | 7 | struct C { |
Jeff Cohen | b02fbfc | 2005-04-23 21:26:11 +0000 | [diff] [blame] | 8 | int A, B; |
| 9 | ~C() {} |
Chris Lattner | 0f44ad3 | 2003-09-29 21:18:36 +0000 | [diff] [blame] | 10 | }; |
| 11 | |
Chris Lattner | 4e44c0e | 2003-09-29 21:53:04 +0000 | [diff] [blame] | 12 | void foo(C b); |
| 13 | |
Chris Lattner | 0f44ad3 | 2003-09-29 21:18:36 +0000 | [diff] [blame] | 14 | void test(C *P) { |
Jeff Cohen | b02fbfc | 2005-04-23 21:26:11 +0000 | [diff] [blame] | 15 | foo(*P); |
Chris Lattner | 0f44ad3 | 2003-09-29 21:18:36 +0000 | [diff] [blame] | 16 | } |
| 17 | |