xref: /llvm-project/clang/test/CodeGenCXX/constexpr-late-instantiation.cpp (revision c5de4dd1eab00df76c1a68c5f397304ceacb71f2)
1da6a14b9Sserge-sans-paille // Make sure foo is instantiated and we don't get a link error
2*c5de4dd1SFangrui Song // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o- | FileCheck %s
3da6a14b9Sserge-sans-paille 
4da6a14b9Sserge-sans-paille template <typename T>
5da6a14b9Sserge-sans-paille constexpr T foo(T a);
6da6a14b9Sserge-sans-paille 
7da6a14b9Sserge-sans-paille // CHECK-LABEL: define {{.*}} @main
main()8da6a14b9Sserge-sans-paille int main() {
9da6a14b9Sserge-sans-paille   // CHECK: call {{.*}} @_Z3fooIiET_S0_
10da6a14b9Sserge-sans-paille   int k = foo<int>(5);
11da6a14b9Sserge-sans-paille }
12da6a14b9Sserge-sans-paille // CHECK: }
13da6a14b9Sserge-sans-paille 
14da6a14b9Sserge-sans-paille template <typename T>
foo(T a)15da6a14b9Sserge-sans-paille constexpr T foo(T a) {
16da6a14b9Sserge-sans-paille   return a;
17da6a14b9Sserge-sans-paille }
18