| // RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin %s | FileCheck %s |
| // <rdar://problem/11043589> |
| |
| struct Length { |
| Length(double v) { |
| m_floatValue = static_cast<float>(v); |
| } |
| |
| bool operator==(const Length& o) const { |
| return getFloatValue() == o.getFloatValue(); |
| } |
| bool operator!=(const Length& o) const { return !(*this == o); } |
| private: |
| float getFloatValue() const { |
| return m_floatValue; |
| } |
| float m_floatValue; |
| }; |
| |
| |
| struct Foo { |
| static Length inchLength(double inch); |
| static bool getPageSizeFromName(const Length &A) { |
| static const Length legalWidth = inchLength(8.5); |
| if (A != legalWidth) return true; |
| return false; |
| } |
| }; |
| |
| // CHECK: @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth = linkonce_odr global %struct.Length zeroinitializer, align 4 |
| // CHECK: store float %{{.*}}, float* getelementptr inbounds (%struct.Length, %struct.Length* @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth, i32 0, i32 0), align 4 |
| |
| bool bar(Length &b) { |
| Foo f; |
| return f.getPageSizeFromName(b); |
| } |