1 // RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s 2 3 typedef void (^dispatch_block_t)(void); 4 5 void dispatch_once(dispatch_block_t); 6 7 class Zone { 8 public: 9 Zone(); 10 ~Zone(); 11 }; 12 Zone()13Zone::Zone() { 14 dispatch_once(^{}); 15 dispatch_once(^{}); 16 } 17 ~Zone()18Zone::~Zone() { 19 dispatch_once(^{}); 20 dispatch_once(^{}); 21 } 22 23 class X : public virtual Zone { 24 X(); 25 ~X(); 26 }; 27 X()28X::X() { 29 dispatch_once(^{}); 30 dispatch_once(^{}); 31 }; 32 ~X()33X::~X() { 34 dispatch_once(^{}); 35 dispatch_once(^{}); 36 }; 37 38 39 // CHECK-LABEL: define internal void @___ZN4ZoneC2Ev_block_invoke 40 // CHECK-LABEL: define internal void @___ZN4ZoneC2Ev_block_invoke_ 41 // CHECK-LABEL: define internal void @___ZN4ZoneD2Ev_block_invoke 42 // CHECK-LABEL: define internal void @___ZN4ZoneD2Ev_block_invoke_ 43 // CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke 44 // CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke_ 45 // CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke 46 // CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke_ 47