mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 12:35:47 -04:00

and destructors when the two entities are semantically identical, i.e. when the class has no virtual base classes. We only do this for linkage types for which aliases are supported, i.e. internal and external, i.e. not linkonce. llvm-svn: 96451
55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
|
|
|
|
struct Field {
|
|
Field();
|
|
~Field();
|
|
};
|
|
|
|
struct Base {
|
|
Base();
|
|
~Base();
|
|
};
|
|
|
|
struct A : Base {
|
|
A();
|
|
~A();
|
|
|
|
virtual void f();
|
|
|
|
Field field;
|
|
};
|
|
|
|
// CHECK: define void @_ZN1AC2Ev(
|
|
// CHECK: call void @_ZN4BaseC2Ev(
|
|
// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2)
|
|
// CHECK: call void @_ZN5FieldC1Ev(
|
|
// CHECK: ret void
|
|
A::A() { }
|
|
|
|
// CHECK: define void @_ZN1AD2Ev(
|
|
// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2)
|
|
// CHECK: call void @_ZN5FieldD1Ev(
|
|
// CHECK: call void @_ZN4BaseD2Ev(
|
|
// CHECK: ret void
|
|
A::~A() { }
|
|
|
|
struct B : Base {
|
|
virtual void f();
|
|
|
|
Field field;
|
|
};
|
|
|
|
void f() { B b; }
|
|
|
|
// CHECK: define linkonce_odr void @_ZN1BC1Ev(
|
|
// CHECK: call void @_ZN4BaseC2Ev(
|
|
// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
|
|
// CHECK: call void @_ZN5FieldC1Ev
|
|
// CHECK: ret void
|
|
|
|
// CHECK: define linkonce_odr void @_ZN1BD1Ev(
|
|
// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
|
|
// CHECK: call void @_ZN5FieldD1Ev(
|
|
// CHECK: call void @_ZN4BaseD2Ev(
|
|
// CHECK: ret void
|