llvm-project/clang/test/CodeGenCXX/mangle-abi-examples.cpp
Rafael Espindola e5df59ff78 Emit DeferredDeclsToEmit in a DFS order.
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
2015-01-22 00:24:57 +00:00

28 lines
505 B
C++

// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
// CHECK: @_ZTVZN1A3fooEiE1B =
// CHECK: @_ZTVZ3foovEN1C1DE =
// CHECK: define {{.*}} @_ZZZ3foovEN1C3barEvEN1E3bazEv(
// Itanium C++ ABI examples.
struct A {
void foo (int) {
struct B { virtual ~B() {} };
B();
}
};
void foo () {
struct C {
struct D { virtual ~D() {} };
void bar () {
struct E {
void baz() { }
};
E().baz();
}
};
A().foo(0);
C::D();
C().bar();
}