// 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

// Test run-time library includes support for builtin type "short"

short global_var = 10;
short const *global_ptr;

// CHECK-DAG: _ZTIs
void foo1() { throw global_var; }
// CHECK-DAG: _ZTIPs
void foo2() { throw &global_var; }
// CHECK-DAG: _ZTIPKs
void foo3() { throw global_ptr; }

int main(int argc, char *argv[]) {
  return 0;
}
