// RUN: %clang_cc1 %s -emit-pch -o %t.pch
// RUN: %clang_cc1 %s -emit-llvm %s -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
