36 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin %s | FileCheck %s2 3struct Length {4 Length(double v) {5 m_floatValue = static_cast<float>(v);6 }7 8 bool operator==(const Length& o) const {9 return getFloatValue() == o.getFloatValue();10 }11 bool operator!=(const Length& o) const { return !(*this == o); }12private:13 float getFloatValue() const {14 return m_floatValue;15 }16 float m_floatValue;17};18 19 20struct Foo {21 static Length inchLength(double inch);22 static bool getPageSizeFromName(const Length &A) {23 static const Length legalWidth = inchLength(8.5);24 if (A != legalWidth) return true;25 return false;26 }27};28 29// CHECK: @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth = linkonce_odr global %struct.Length zeroinitializer, align 430// CHECK: store float %{{.*}}, ptr @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth, align 431 32bool bar(Length &b) {33 Foo f;34 return f.getPageSizeFromName(b);35}36