104520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
204520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian
346a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanianstruct S {
446a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian  S(const char *);
546a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian  ~S();
646a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian};
746a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian
804520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanianstruct TestObject
904520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian{
1046a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian	TestObject(const TestObject& inObj, int def = 100,  const S &Silly = "silly");
1104520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian	TestObject();
126dda7a24ef0e8a5a89128bba338bbfb9d8e6e7b1Fariborz Jahanian	~TestObject();
1304520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian	TestObject& operator=(const TestObject& inObj);
1404520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian	int version() const;
1504520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian
1604520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian};
1704520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian
1804520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanianvoid testRoutine() {
1904520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian    TestObject one;
2004520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian    int (^V)() = ^{ return one.version(); };
2104520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian}
2204520839ece1d6292b1cac3732a3d04b985b1fc9Fariborz Jahanian
2346a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian// CHECK: call void @_ZN10TestObjectC1Ev
2446a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian// CHECK: call void @_ZN1SC1EPKc
2546a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian// CHECK: call void @_ZN10TestObjectC1ERKS_iRK1S
2646a5c5aed460675fd2b5741a40b9883fee7f71f8Fariborz Jahanian// CHECK: call void @_ZN1SD1Ev
276dda7a24ef0e8a5a89128bba338bbfb9d8e6e7b1Fariborz Jahanian// CHECK: call void @_ZN10TestObjectD1Ev
286dda7a24ef0e8a5a89128bba338bbfb9d8e6e7b1Fariborz Jahanian// CHECK: call void @_ZN10TestObjectD1Ev
29