Currently we emit DeferredDeclsToEmit in reverse order. This patch changes that. The advantages of the change are that * The output order is a bit closer to the source order. The change to test/CodeGenCXX/pod-member-memcpys.cpp is a good example. * If we decide to deffer more, it will not cause as large changes in the estcases as it would without this patch. llvm-svn: 226751
31 lines
618 B
C++
31 lines
618 B
C++
// RUN: %clang_cc1 -fms-extensions -fno-rtti -emit-llvm %s -o - -triple=i386-pc-win32 | FileCheck %s
|
|
|
|
// CHECK: @"\01??_7B@?1??foo@A@@QAEXH@Z@6B@" =
|
|
// CHECK: @"\01??_7D@C@?1??foo@@YAXXZ@6B@" =
|
|
// CHECK: define {{.*}} @"\01?baz@E@?3??bar@C@?1??foo@@YAXXZ@QAEXXZ@QAEXXZ"(
|
|
|
|
// Microsoft Visual C++ ABI examples.
|
|
struct A {
|
|
void foo (int) {
|
|
struct B { virtual ~B() {} };
|
|
B();
|
|
}
|
|
};
|
|
inline void foo () {
|
|
struct C {
|
|
struct D { virtual ~D() {} };
|
|
void bar () {
|
|
struct E {
|
|
void baz() { }
|
|
};
|
|
E().baz();
|
|
}
|
|
};
|
|
A().foo(0);
|
|
C::D();
|
|
C().bar();
|
|
}
|
|
void call () {
|
|
foo();
|
|
}
|