class-layout.cpp revision 4b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2696798febaf1f69020cdf7474b91e71736c5aa69Anders Carlsson 3696798febaf1f69020cdf7474b91e71736c5aa69Anders Carlsson// An extra byte shoudl be allocated for an empty class. 4c2456824a106455bae5d738fe65d80b14a6804c4Anders Carlsson// CHECK: %struct.A = type { i8 } 5696798febaf1f69020cdf7474b91e71736c5aa69Anders Carlssonstruct A { } a; 6c2456824a106455bae5d738fe65d80b14a6804c4Anders Carlsson 7c2456824a106455bae5d738fe65d80b14a6804c4Anders Carlsson// No need to add tail padding here. 8c2456824a106455bae5d738fe65d80b14a6804c4Anders Carlsson// CHECK: %struct.B = type { i8*, i32 } 9c2456824a106455bae5d738fe65d80b14a6804c4Anders Carlssonstruct B { void *a; int b; } b; 104b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5Anders Carlsson 114b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5Anders Carlsson// C should have a vtable pointer. 124b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5Anders Carlsson// CHECK: %struct.C = type { i8**, i32 } 134b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5Anders Carlssonstruct C { virtual void f(); int a; } *c; 14