116d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher// RUN: %clang_cc1 -emit-llvm %s -o -
216d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christophernamespace std {
316d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  class exception { };
416d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher
516d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  class type_info {
616d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  public:
716d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher    virtual ~type_info();
816d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  };
916d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher
1016d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher}
1116d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher
1216d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christophernamespace __cxxabiv1 {
1316d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  class __si_class_type_info : public std::type_info {
1416d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher    ~__si_class_type_info();
1516d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  };
1616d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher}
1716d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher
1816d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopherclass recursive_init: public std::exception {
1916d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopherpublic:
2016d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher  virtual ~recursive_init() throw ();
2116d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher};
2216d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopher
2316d482ebe8abb5a8eaf5d3407e90c96e6afa397bEric Christopherrecursive_init::~recursive_init() throw() { }
24