1*67e74705SXin Li// RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-pch -o %t.pch 2*67e74705SXin Li// RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -include-pch %t.pch -o - | FileCheck %s 3*67e74705SXin Li 4*67e74705SXin Li#ifndef HEADER 5*67e74705SXin Li#define HEADER 6*67e74705SXin Li 7*67e74705SXin Liclass OOArray{ 8*67e74705SXin Lipublic: 9*67e74705SXin Li ~OOArray(); 10*67e74705SXin Li}; 11*67e74705SXin Li 12*67e74705SXin Liclass OOString { 13*67e74705SXin Lipublic: 14*67e74705SXin Li OOString(); 15*67e74705SXin Li OOString(char *); 16*67e74705SXin Li}; 17*67e74705SXin Li 18*67e74705SXin Liclass OOPattern { 19*67e74705SXin Lipublic: 20*67e74705SXin Li OOArray matchAll(const OOString &)const { 21*67e74705SXin Li __attribute__((__blocks__(byref))) OOArray out; 22*67e74705SXin Li } 23*67e74705SXin Li}; 24*67e74705SXin Li 25*67e74705SXin LiOOArray operator & (const OOPattern & pattern) { 26*67e74705SXin Li pattern.matchAll(0); 27*67e74705SXin Li} 28*67e74705SXin LiOOArray operator & (OOString, OOString); 29*67e74705SXin Li 30*67e74705SXin Li#else 31*67e74705SXin Li 32*67e74705SXin Li// We just make sure there is no crash on IRGen (rdar://13114142) 33*67e74705SXin Li// CHECK: _Z3foov() 34*67e74705SXin Livoid foo() { 35*67e74705SXin Li OOString str; 36*67e74705SXin Li str & "o"; 37*67e74705SXin Li} 38*67e74705SXin Li 39*67e74705SXin Li#endif 40