| // RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-pch -o %t.pch | 
 | // RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -include-pch %t.pch -o - | FileCheck %s | 
 |  | 
 | #ifndef HEADER | 
 | #define HEADER | 
 |  | 
 | class OOArray{ | 
 | public: | 
 |   ~OOArray(); | 
 | }; | 
 |  | 
 | class OOString { | 
 | public: | 
 |     OOString(); | 
 |     OOString(char *); | 
 | }; | 
 |  | 
 | class OOPattern { | 
 | public: | 
 |     OOArray matchAll(const OOString &)const { | 
 |         __attribute__((__blocks__(byref))) OOArray out; | 
 |     } | 
 | }; | 
 |  | 
 | OOArray operator & (const OOPattern & pattern) { | 
 |     pattern.matchAll(0); | 
 | } | 
 | OOArray operator & (OOString, OOString); | 
 |  | 
 | #else | 
 |  | 
 | // We just make sure there is no crash on IRGen (rdar://13114142) | 
 | // CHECK: _Z3foov() | 
 | void foo() { | 
 |   OOString str; | 
 |   str & "o"; | 
 | } | 
 |  | 
 | #endif |