Clang Project

clang_source_code/test/CodeGenCXX/trivial-auto-var-init-attribute.cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks %s -emit-llvm -o - | FileCheck %s -check-prefix=UNINIT
2// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks -ftrivial-auto-var-init=pattern %s -emit-llvm -o - | FileCheck %s -check-prefix=PATTERN
3// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks -ftrivial-auto-var-init=zero %s -emit-llvm -o - | FileCheck %s -check-prefix=ZERO
4
5template<typename T> void used(T &) noexcept;
6
7extern "C" {
8
9// UNINIT-LABEL:  test_attribute_uninitialized(
10// UNINIT:      alloca
11// UNINIT-NEXT: call void
12// ZERO-LABEL:    test_attribute_uninitialized(
13// ZERO:      alloca
14// ZERO-NEXT: call void
15// PATTERN-LABEL: test_attribute_uninitialized(
16// PATTERN:      alloca
17// PATTERN-NEXT: call void
18void test_attribute_uninitialized() {
19  [[clang::uninitialized]] int i;
20  used(i);
21}
22
23} // extern "C"
24