22 lines · c
1// RUN: %clang_cc1 -emit-llvm -o - -std=c2x %s | FileCheck %s2 3// C2x 6.7.2.5 EXAMPLE 54unsigned long long vla_size(int n) {5// CHECK: vla_size6 7 return sizeof(8 typeof_unqual(char[n + 3])9 ); // execution-time sizeof, translation-time typeof operation10// CHECK: [[N_ADDR:%.*]] = alloca i3211// CHECK: store i32 {{%.*}} ptr [[N_ADDR]]12// CHECK: [[N:%.*]] = load i32, ptr [[N_ADDR]]13// CHECK: [[TEMP:%.*]] = add nsw i32 [[N]], 314// CHECK: [[RET:%.*]] = zext i32 [[TEMP]] to i6415// CHECK: ret i64 [[RET]]16}17 18int main() {19 return (int)vla_size(10); // vla_size returns 1320}21 22