// RUN: %clang_cc1 -emit-llvm %s -o - -triple i686-pc-linux-gnu | FileCheck %s
// RUN: %clang_cc1 -emit-llvm %s -o - -triple i686-pc-win32 | FileCheck -check-prefix MSVC %s

struct A { int a; virtual int aa(); };
struct B { int b; virtual int bb(); };
struct C : virtual A, virtual B { int c; virtual int aa(); virtual int bb(); };
struct AA { int a; virtual int aa(); };
struct BB { int b; virtual int bb(); };
struct CC : AA, BB { virtual int aa(); virtual int bb(); virtual int cc(); };
struct D : virtual C, virtual CC { int e; };

D* x;

A* a() { return x; }
// CHECK: @_Z1av() [[NUW:#[0-9]+]]
// CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -16
// CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
// CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
// CHECK: }

// MSVC: @"\01?a@@YAPAUA@@XZ"() [[NUW:#[0-9]+]] {
// MSVC:   %[[vbptr_off:.*]] = getelementptr inbounds i8* {{.*}}, i32 0
// MSVC:   %[[vbptr:.*]] = bitcast i8* %[[vbptr_off]] to i8**
// MSVC:   %[[vbtable:.*]] = load i8** %[[vbptr]]
// MSVC:   %[[entry:.*]] = getelementptr inbounds i8* {{.*}}, i32 4
// MSVC:   %[[entry_i32:.*]] = bitcast i8* %[[entry]] to i32*
// MSVC:   %[[offset:.*]] = load i32* %[[entry_i32]]
// MSVC:   add nsw i32 0, %[[offset]]
// MSVC: }

B* b() { return x; }
// CHECK: @_Z1bv() [[NUW]]
// CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -20
// CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
// CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
// CHECK: }

// Same as 'a' except we use a different vbtable offset.
// MSVC: @"\01?b@@YAPAUB@@XZ"() [[NUW:#[0-9]+]] {
// MSVC:   %[[vbptr_off:.*]] = getelementptr inbounds i8* {{.*}}, i32 0
// MSVC:   %[[vbptr:.*]] = bitcast i8* %[[vbptr_off]] to i8**
// MSVC:   %[[vbtable:.*]] = load i8** %[[vbptr]]
// MSVC:   %[[entry:.*]] = getelementptr inbounds i8* {{.*}}, i32 8
// MSVC:   %[[entry_i32:.*]] = bitcast i8* %[[entry]] to i32*
// MSVC:   %[[offset:.*]] = load i32* %[[entry_i32]]
// MSVC:   add nsw i32 0, %[[offset]]
// MSVC: }


BB* c() { return x; }
// CHECK: @_Z1cv() [[NUW]]
// CHECK: [[VBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -24
// CHECK: [[CASTVBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRC]] to i32*
// CHECK: [[VBASEOFFSETC:%[a-zA-Z0-9\.]+]] = load i32* [[CASTVBASEOFFSETPTRC]]
// CHECK: add i32 [[VBASEOFFSETC]], 8
// CHECK: }

// Same as 'a' except we use a different vbtable offset.
// MSVC: @"\01?c@@YAPAUBB@@XZ"() [[NUW:#[0-9]+]] {
// MSVC:   %[[vbptr_off:.*]] = getelementptr inbounds i8* {{.*}}, i32 0
// MSVC:   %[[vbptr:.*]] = bitcast i8* %[[vbptr_off]] to i8**
// MSVC:   %[[vbtable:.*]] = load i8** %[[vbptr]]
// MSVC:   %[[entry:.*]] = getelementptr inbounds i8* {{.*}}, i32 16
// MSVC:   %[[entry_i32:.*]] = bitcast i8* %[[entry]] to i32*
// MSVC:   %[[offset:.*]] = load i32* %[[entry_i32]]
// MSVC:   add nsw i32 0, %[[offset]]
// MSVC: }

// Put the vbptr at a non-zero offset inside a non-virtual base.
struct E { int e; };
struct F : E, D { int f; };

F* y;

BB* d() { return y; }

// Same as 'c' except the vbptr offset is 4, changing the initial GEP and the
// final add.
// MSVC: @"\01?d@@YAPAUBB@@XZ"() [[NUW:#[0-9]+]] {
// MSVC:   %[[vbptr_off:.*]] = getelementptr inbounds i8* {{.*}}, i32 4
// MSVC:   %[[vbptr:.*]] = bitcast i8* %[[vbptr_off]] to i8**
// MSVC:   %[[vbtable:.*]] = load i8** %[[vbptr]]
// MSVC:   %[[entry:.*]] = getelementptr inbounds i8* {{.*}}, i32 16
// MSVC:   %[[entry_i32:.*]] = bitcast i8* %[[entry]] to i32*
// MSVC:   %[[offset:.*]] = load i32* %[[entry_i32]]
// MSVC:   add nsw i32 4, %[[offset]]
// MSVC: }

// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
