112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala// RUN: %clang_cc1 -fms-extensions -fno-rtti -emit-llvm %s -o - -triple=i386-pc-win32 | FileCheck %s 212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala// CHECK: @"\01??_7D@C@?1??foo@@YAXXZ@6B@" = 412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala// CHECK: @"\01??_7B@?1??foo@A@@QAEXH@Z@6B@" = 512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala// CHECK: define {{.*}} @"\01?baz@E@?3??bar@C@?1??foo@@YAXXZ@QAEXXZ@QAEXXZ"( 612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala// Microsoft Visual C++ ABI examples. 812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastruct A { 912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala void foo (int) { 1012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct B { virtual ~B() {} }; 1112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala B(); 1212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 1312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}; 1412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialainline void foo () { 1512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct C { 1612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct D { virtual ~D() {} }; 1712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala void bar () { 1812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct E { 1912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala void baz() { } 2012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }; 2112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala E().baz(); 2212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 2312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }; 2412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala A().foo(0); 2512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala C::D(); 2612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala C().bar(); 2712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 2812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid call () { 2912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala foo(); 3012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 3112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala