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