| // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s | |
| struct A { | |
| void f(); | |
| int a; | |
| }; | |
| struct B : A { | |
| double b; | |
| }; | |
| void f() { | |
| B b; | |
| b.f(); | |
| } | |
| // CHECK: define %struct.B* @_Z1fP1A(%struct.A* %a) nounwind | |
| B *f(A *a) { | |
| // CHECK-NOT: br label | |
| // CHECK: ret %struct.B* | |
| return static_cast<B*>(a); | |
| } | |
| // PR5965 | |
| namespace PR5965 { | |
| // CHECK: define %struct.A* @_ZN6PR59651fEP1B(%struct.B* %b) nounwind | |
| A *f(B* b) { | |
| // CHECK-NOT: br label | |
| // CHECK: ret %struct.A* | |
| return b; | |
| } | |
| } | |