xref: /llvm-project/clang/test/CodeGenCXX/cxx20-p0388-unbound-ary.cpp (revision d89d3a6a0eb3e5f9ad35cd8b64a7237ed227f10b)
1 // RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++20 -emit-llvm -O2 -o - | FileCheck %s
2 
3 // p0388 conversions to unbounded array
4 // dcl.init.list/3
5 
6 namespace One {
7 int ga[1];
8 
9 // CHECK-LABEL: @_ZN3One5frob1Ev
10 // CHECK-NEXT: entry:
11 // CHECK-NEXT: ret ptr @_ZN3One2gaE
frob1()12 auto &frob1() {
13   int(&r1)[] = ga;
14 
15   return r1;
16 }
17 
18 // CHECK-LABEL: @_ZN3One5frob2ERA1_i
19 // CHECK-NEXT: entry:
20 // CHECK-NEXT: ret ptr %arp
frob2(int (& arp)[1])21 auto &frob2(int (&arp)[1]) {
22   int(&r2)[] = arp;
23 
24   return r2;
25 }
26 
27 // CHECK-LABEL: @_ZN3One3fooEi
28 // CHECK-NEXT: entry:
29 // CHECK-NEXT: ret void
foo(int a)30 void foo(int a) {
31   auto f = [](int(&&)[]) {};
32   f({a});
33 }
34 
35 } // namespace One
36