f4a2713ac8
Change-Id: Ia40e9ffdf29b5dab2f122f673ff6802a58bc690f
32 lines
712 B
C++
32 lines
712 B
C++
// RUN: %clang_cc1 -std=c++1y -triple x86_64-linux-gnu -emit-llvm %s -o - | FileCheck %s
|
|
|
|
// CHECK: @x = global {{.*}} zeroinitializer
|
|
|
|
// CHECK: define {{.*}} @_Z1fv
|
|
inline auto f() {
|
|
int n = 0;
|
|
// CHECK: load i32
|
|
// CHECK: store i32
|
|
// CHECK: ret
|
|
return [=] () mutable { return ++n; };
|
|
}
|
|
|
|
auto x = f();
|
|
|
|
template<typename T> auto *g(T t) { return t; }
|
|
template<typename T> decltype(auto) h(T t) { return t; }
|
|
|
|
// CHECK: define {{.*}} @_Z1zv
|
|
void z() {
|
|
// CHECK: call {{.*}} @_Z1gIPZ1fvEUlvE_EPDaT_(
|
|
// CHECK: call {{.*}} @_Z1hIPZ1fvEUlvE_EDcT_(
|
|
g(&x);
|
|
h(&x);
|
|
}
|
|
|
|
auto i() { return [] {}; }
|
|
// CHECK: define {{.*}} @_Z1jv
|
|
auto j() {
|
|
// CHECK: call {{.*}} @"_Z1hIZ1ivE3$_0EDcT_"()
|
|
h(i());
|
|
}
|