// RUN: %clang_cc1 -verify -emit-llvm -o - %s // Test reference binding. typedef struct { int f0; int f1; } T; @interface A @property (assign) T p0; @property (assign) T& p1; @end int f0(const T& t) { return t.f0; } int f1(A *a) { return f0(a.p0); } int f2(A *a) { return f0(a.p1); } // PR7740 @class NSString; void f3(id); void f4(NSString &tmpstr) { f3(&tmpstr); } // PR7741 @protocol P1 @end @protocol P2 @end @protocol P3 @end @interface foo {} @end @interface bar : foo {} @end typedef bar baz; struct ToBar { operator bar&() const; }; void f5(foo&); void f5b(foo&); void f5c(foo&); void f5d(foo&); void f6(baz* x) { f5(*x); f5b(*x); f5c(*x); f5d(*x); (void)((foo&)*x); f5(ToBar()); f5b(ToBar()); f5c(ToBar()); f5d(ToBar()); (void)((foo&)ToBar()); }