1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
2
3 class A {
4 int a;
5 };
6
7 class B {
8 int b;
9 public:
10 A *getAsA();
11 };
12
13 class X : public A, public B {
14 int x;
15 };
16
17 // PR35909 - https://bugs.llvm.org/show_bug.cgi?id=35909
18
getAsA()19 A *B::getAsA() {
20 return static_cast<X*>(this);
21
22 // CHECK-LABEL: define{{.*}} %class.A* @_ZN1B6getAsAEv
23 // CHECK: %[[THIS:.*]] = load %class.B*, %class.B**
24 // CHECK-NEXT: %[[BC:.*]] = bitcast %class.B* %[[THIS]] to i8*
25 // CHECK-NEXT: getelementptr inbounds i8, i8* %[[BC]], i64 -4
26 }
27
28