1*3b9de993SRichard Smith // RUN: %clang_cc1 -triple x86_64-linux -std=c++14 %s -emit-llvm -o - | FileCheck %s 2*3b9de993SRichard Smith // RUN: %clang_cc1 -triple x86_64-linux -std=c++17 %s -emit-llvm -o - | FileCheck %s 3cde8d2fdSRichard Smith 4cde8d2fdSRichard Smith namespace std { 5cde8d2fdSRichard Smith template<typename T> class initializer_list { 6cde8d2fdSRichard Smith const T *data; 7cde8d2fdSRichard Smith __SIZE_TYPE__ size; 8cde8d2fdSRichard Smith 9cde8d2fdSRichard Smith public: 10cde8d2fdSRichard Smith initializer_list(); 11cde8d2fdSRichard Smith }; 12cde8d2fdSRichard Smith } 13cde8d2fdSRichard Smith 14cde8d2fdSRichard Smith namespace ParenBraceInitList { 15cde8d2fdSRichard Smith struct Vector { 16cde8d2fdSRichard Smith Vector(std::initializer_list<int>); 17cde8d2fdSRichard Smith ~Vector(); 18cde8d2fdSRichard Smith }; 19cde8d2fdSRichard Smith BaseParenBraceInitList::Base20cde8d2fdSRichard Smith struct Base { Base(Vector) {} }; 21cde8d2fdSRichard Smith 22cde8d2fdSRichard Smith // CHECK: define {{.*}}18ParenBraceInitList1fILi0EE f()23cde8d2fdSRichard Smith template<int> void f() { 24cde8d2fdSRichard Smith // CHECK: call {{.*}}18ParenBraceInitList6VectorC1 25cde8d2fdSRichard Smith // CHECK: call {{.*}}18ParenBraceInitList6VectorD1 26cde8d2fdSRichard Smith Base({0}); 27cde8d2fdSRichard Smith } 28cde8d2fdSRichard Smith template void f<0>(); 29cde8d2fdSRichard Smith } 30