108212631e15a17157368af03180018601b31fb4dBill Wendling// RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin %s | FileCheck %s 208212631e15a17157368af03180018601b31fb4dBill Wendling// <rdar://problem/11043589> 308212631e15a17157368af03180018601b31fb4dBill Wendling 408212631e15a17157368af03180018601b31fb4dBill Wendlingstruct Length { 508212631e15a17157368af03180018601b31fb4dBill Wendling Length(double v) { 608212631e15a17157368af03180018601b31fb4dBill Wendling m_floatValue = static_cast<float>(v); 708212631e15a17157368af03180018601b31fb4dBill Wendling } 808212631e15a17157368af03180018601b31fb4dBill Wendling 908212631e15a17157368af03180018601b31fb4dBill Wendling bool operator==(const Length& o) const { 1008212631e15a17157368af03180018601b31fb4dBill Wendling return getFloatValue() == o.getFloatValue(); 1108212631e15a17157368af03180018601b31fb4dBill Wendling } 1208212631e15a17157368af03180018601b31fb4dBill Wendling bool operator!=(const Length& o) const { return !(*this == o); } 1308212631e15a17157368af03180018601b31fb4dBill Wendlingprivate: 1408212631e15a17157368af03180018601b31fb4dBill Wendling float getFloatValue() const { 1508212631e15a17157368af03180018601b31fb4dBill Wendling return m_floatValue; 1608212631e15a17157368af03180018601b31fb4dBill Wendling } 1708212631e15a17157368af03180018601b31fb4dBill Wendling float m_floatValue; 1808212631e15a17157368af03180018601b31fb4dBill Wendling}; 1908212631e15a17157368af03180018601b31fb4dBill Wendling 2008212631e15a17157368af03180018601b31fb4dBill Wendling 2108212631e15a17157368af03180018601b31fb4dBill Wendlingstruct Foo { 2208212631e15a17157368af03180018601b31fb4dBill Wendling static Length inchLength(double inch); 2308212631e15a17157368af03180018601b31fb4dBill Wendling static bool getPageSizeFromName(const Length &A) { 2408212631e15a17157368af03180018601b31fb4dBill Wendling static const Length legalWidth = inchLength(8.5); 2508212631e15a17157368af03180018601b31fb4dBill Wendling if (A != legalWidth) return true; 2608212631e15a17157368af03180018601b31fb4dBill Wendling return false; 2708212631e15a17157368af03180018601b31fb4dBill Wendling } 2808212631e15a17157368af03180018601b31fb4dBill Wendling}; 2908212631e15a17157368af03180018601b31fb4dBill Wendling 3008212631e15a17157368af03180018601b31fb4dBill Wendling// CHECK: @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth = linkonce_odr global %struct.Length zeroinitializer, align 4 312eb272931070b4294eb623611ed892ba3d828284Bill Wendling// CHECK: store float %{{.*}}, float* getelementptr inbounds (%struct.Length* @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth, i32 0, i32 0), align 1 3208212631e15a17157368af03180018601b31fb4dBill Wendling 3308212631e15a17157368af03180018601b31fb4dBill Wendlingbool bar(Length &b) { 3408212631e15a17157368af03180018601b31fb4dBill Wendling Foo f; 3508212631e15a17157368af03180018601b31fb4dBill Wendling return f.getPageSizeFromName(b); 3608212631e15a17157368af03180018601b31fb4dBill Wendling} 37