brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 605407c Raw
81 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s2 3struct T {4  T();5  ~T();6};7 8void f(const T& t = T());9 10class X { // ...11public:12        X();13        X(const X&, const T& t = T());14};15 16// CHECK-LABEL: define{{.*}} void @_Z1gv()17void g() {18  // CHECK:      call void @_ZN1TC1Ev(ptr {{[^,]*}} [[AGG1:%.*]])19  // CHECK-NEXT: call void @_Z1fRK1T(ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) [[AGG1]])20  // CHECK-NEXT: call void @_ZN1TD1Ev(ptr {{[^,]*}} [[AGG1]])21  f();22 23  // CHECK-NEXT: call void @_ZN1TC1Ev(ptr {{[^,]*}} [[AGG2:%.*]])24  // CHECK-NEXT: call void @_Z1fRK1T(ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) [[AGG2]])25  // CHECK-NEXT: call void @_ZN1TD1Ev(ptr {{[^,]*}} [[AGG2]])26  f();27 28  // CHECK-NEXT: call void @_ZN1XC1Ev(29  X a;30 31  // CHECK-NEXT: call void @_ZN1TC1Ev(32  // CHECK-NEXT: call void @_ZN1XC1ERKS_RK1T(33  // CHECK-NEXT: call void @_ZN1TD1Ev(34  X b(a);35 36  // CHECK-NEXT: call void @_ZN1TC1Ev(37  // CHECK-NEXT: call void @_ZN1XC1ERKS_RK1T(38  // CHECK-NEXT: call void @_ZN1TD1Ev(39  X c = a;40}41 42 43class obj{ int a; float b; double d; };44// CHECK-LABEL: define{{.*}} void @_Z1hv()45void h() {46  // CHECK: call void @llvm.memset.p0.i64(47  obj o = obj();48}49 50// PR7028 - mostly this shouldn't crash51namespace test1 {52  struct A { A(); };53  struct B { B(); ~B(); };54 55  struct C {56    C(const B &file = B());57  };58  C::C(const B &file) {}59 60  struct D {61    C c;62    A a;63 64    // CHECK-LABEL: define linkonce_odr void @_ZN5test11DC2Ev(ptr {{[^,]*}} %this) unnamed_addr65    // CHECK:      call void @_ZN5test11BC1Ev(66    // CHECK-NEXT: call void @_ZN5test11CC1ERKNS_1BE(67    // CHECK-NEXT: call void @_ZN5test11BD1Ev(68    // CHECK:      call void @_ZN5test11AC1Ev(69    D() : c(), a() {}70  };71 72  D d;73}74 75namespace test2 {76  // CHECK:  define linkonce_odr void @_ZN5test21AIiED2Ev(77  template <typename T> struct A { A() {} ~A() {} };78  template <typename> void f(const A<int> & = {}) {}79  void g() { f<int>(); }80}81