reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | // 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) [[NUW:#[0-9]+]] 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) [[NUW]] A *f(B* b) { // CHECK-NOT: br label // CHECK: ret %struct.A* return b; } } // Don't crash on a derived-to-base conversion of an r-value // aggregate. namespace test3 { struct A {}; struct B : A {}; void foo(A a); void test() { foo(B()); } } // CHECK: attributes [[NUW]] = { noinline nounwind{{.*}} } |