// This file is distributed under the University of Illinois Open Source License.
// See LICENSE.TXT for details.
// RUN: cxx_compiler -c cxx_rtti cxx_exceptions %s -o %t.o
// RUN: linker %t.o -o %t%exeext
// RUN: bindump %t.o| FileCheck %s

struct foo { };
struct bar : virtual foo { };

// Section 2.9.2
// Check that the type-info was generated and a v-table was generated

// CHECK-DAG: _ZTV3bar
// CHECK-DAG: _ZTI3bar

int main(int argc, char *argv[]) {
  throw bar();
}
