xref: /llvm-project/clang/test/CodeGenCXX/derived-cast.cpp (revision 1b9a6e58a8b831193c9e5e733f881aabe0d2d06b)
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{{.*}} ptr @_ZN1B6getAsAEv
23   // CHECK: %[[THIS:.*]] = load ptr, ptr
24   // CHECK-NEXT: getelementptr inbounds i8, ptr %[[THIS]], i64 -4
25 }
26 
27