21 lines
577 B
C
21 lines
577 B
C
// RUN: %clang_cc1 -emit-llvm -o - -std=c2x %s | FileCheck %s
|
|
|
|
// C2x 6.7.2.5 EXAMPLE 5
|
|
unsigned long long vla_size(int n) {
|
|
// CHECK: vla_size
|
|
|
|
return sizeof(
|
|
typeof_unqual(char[n + 3])
|
|
); // execution-time sizeof, translation-time typeof operation
|
|
// CHECK: [[N_ADDR:%.*]] = alloca i32
|
|
// CHECK: store i32 {{%.*}} ptr [[N_ADDR]]
|
|
// CHECK: [[N:%.*]] = load i32, ptr [[N_ADDR]]
|
|
// CHECK: [[TEMP:%.*]] = add nsw i32 [[N]], 3
|
|
// CHECK: [[RET:%.*]] = zext i32 [[TEMP]] to i64
|
|
// CHECK: ret i64 [[RET]]
|
|
}
|
|
|
|
int main() {
|
|
return (int)vla_size(10); // vla_size returns 13
|
|
}
|
|
|