brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 007b47c Raw
51 lines · cpp
1// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++20 -emit-llvm -O2 -o - | FileCheck %s2 3// p0388 conversions to unbounded array4// dcl.init.list/35 6namespace One {7int ga[1];8 9// CHECK-LABEL: @_ZN3One5frob1Ev10// CHECK-NEXT: entry:11// CHECK-NEXT: ret ptr @_ZN3One2gaE12auto &frob1() {13  int(&r1)[] = ga;14 15  return r1;16}17 18// CHECK-LABEL: @_ZN3One5frob2ERA1_i19// CHECK-NEXT: entry:20// CHECK-NEXT: ret ptr %arp21auto &frob2(int (&arp)[1]) {22  int(&r2)[] = arp;23 24  return r2;25}26 27// CHECK-LABEL: @_ZN3One3fooEi28// CHECK-NEXT: entry:29// CHECK-NEXT: ret void30void foo(int a) {31  auto f = [](int(&&)[]) {};32  f({a});33}34 35constexpr int gh151716() {36  int(&&g)[]{0,1,2};37  return g[2];38}39// CHECK-LABEL: @_ZN3One10gh151716_fEv40// CHECK-NEXT: entry:41// CHECK-NEXT:   %v = alloca i32, align 442// CHECK-NEXT:   call void @llvm.lifetime.start.p0(ptr nonnull %v)43// CHECK-NEXT:   store volatile i32 2, ptr %v, align 444// CHECK-NEXT:   call void @llvm.lifetime.end.p0(ptr nonnull %v)45// CHECK-NEXT:   ret void46void gh151716_f() {47  volatile const int v = gh151716();48}49 50} // namespace One51