brintos

brintos / llvm-project-archived public Read only

0
0
Text · 809 B · 76d03b4 Raw
35 lines · cpp
1// RUN: %clang_cc1 -std=c++14 -triple x86_64-unknown-unknown-gnu -emit-llvm -O1 -o - %s | FileCheck %s2 3template <class T> T test() {4  return T();5}6 7struct A {8  A();9  A(A &);10  A(int);11  operator int();12};13 14// FIXME: There should be copy elision here.15// CHECK-LABEL: define{{.*}} void @_Z4testI1AET_v16// CHECK:       call void @_ZN1AC1Ev17// CHECK-NEXT:  call noundef i32 @_ZN1AcviEv18// CHECK-NEXT:  call void @_ZN1AC1Ei19// CHECK-NEXT:  call void @llvm.lifetime.end20template A test<A>();21 22struct BSub {};23struct B : BSub {24  B();25  B(B &);26  B(const BSub &);27};28 29// FIXME: There should be copy elision here.30// CHECK-LABEL: define{{.*}} void @_Z4testI1BET_v31// CHECK:       call void @_ZN1BC1Ev32// CHECK:       call void @_ZN1BC1ERK4BSub33// CHECK-NEXT:  call void @llvm.lifetime.end34template B test<B>();35