Duncan Sands | 1e7f4ce | 2007-08-27 16:47:32 +0000 | [diff] [blame] | 1 | // RUN: %llvmgxx %s -S -O2 -o - | \ |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 2 | // RUN: ignore grep {eh\.selector.*One.*Two.*Three.*Four.*Five.*Six.*null} | \ |
Duncan Sands | 1e7f4ce | 2007-08-27 16:47:32 +0000 | [diff] [blame] | 3 | // RUN: wc -l | grep {\[01\]} |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 4 | |
| 5 | extern void X(void); |
| 6 | |
| 7 | struct One {}; |
| 8 | struct Two {}; |
| 9 | struct Three {}; |
| 10 | struct Four {}; |
| 11 | struct Five {}; |
| 12 | struct Six {}; |
| 13 | |
| 14 | static void A(void) throw () |
| 15 | { |
| 16 | X(); |
| 17 | } |
| 18 | |
| 19 | static void B(void) throw (Two) |
| 20 | { |
| 21 | try { A(); } catch (One) {} |
| 22 | } |
| 23 | |
| 24 | static void C(void) throw (Six, Five) |
| 25 | { |
| 26 | try { B(); } catch (Three) {} catch (Four) {} |
| 27 | } |
| 28 | |
| 29 | int main () |
| 30 | { |
| 31 | try { C(); } catch (...) {} |
| 32 | } |