| // RUN: %clang_cc1 -std=c++14 %s -triple=x86_64-linux -emit-llvm -o - | FileCheck %s |
| |
| struct f { |
| void operator()() const {} |
| }; |
| |
| template <typename T> auto vtemplate = f{}; |
| |
| int main() { vtemplate<int>(); } |
| |
| // CHECK: @_Z9vtemplateIiE = linkonce_odr global %struct.f undef, comdat |
| |
| // CHECK: define{{.*}} i32 @main() |
| // CHECK: call void @_ZNK1fclEv(%struct.f* {{[^,]*}} @_Z9vtemplateIiE) |
| |
| template <typename> |
| struct pack { |
| template <typename T> |
| constexpr static auto some_boolean_cx_value = true; |
| }; |
| |
| auto usage() { |
| return pack<char>::some_boolean_cx_value<int>; |
| } |
| |
| // CHECK: define{{.*}} i1 @_Z5usagev() |
| |
| auto otherusage() { |
| return pack<char>{}.some_boolean_cx_value<int>; |
| } |
| |
| // CHECK: define{{.*}} i1 @_Z10otherusagev() |