brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 4b9b1c6 Raw
42 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks %s -emit-llvm -o - | FileCheck %s -check-prefix=UNINIT2// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks -ftrivial-auto-var-init=pattern %s -emit-llvm -o - | FileCheck %s -check-prefix=PATTERN3// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fblocks -ftrivial-auto-var-init=zero %s -emit-llvm -o - | FileCheck %s -check-prefix=ZERO4 5template<typename T> void used(T &) noexcept;6 7extern "C" {8 9// UNINIT-LABEL:  test_attribute_uninitialized(10// UNINIT:      alloca11// UNINIT-NEXT: call void12// ZERO-LABEL:    test_attribute_uninitialized(13// ZERO:      alloca14// ZERO-NOT:  !annotation15// ZERO-NEXT: call void16// PATTERN-LABEL: test_attribute_uninitialized(17// PATTERN:      alloca18// PATTERN-NOT:  !annotation19// PATTERN-NEXT: call void20void test_attribute_uninitialized() {21  [[clang::uninitialized]] int i;22  used(i);23}24 25#pragma clang attribute push([[clang::uninitialized]], apply_to = variable(is_local))26// UNINIT-LABEL:  test_pragma_attribute_uninitialized(27// UNINIT:      alloca28// UNINIT-NEXT: call void29// ZERO-LABEL:    test_pragma_attribute_uninitialized(30// ZERO:      alloca31// ZERO-NEXT: call void32// PATTERN-LABEL: test_pragma_attribute_uninitialized(33// PATTERN:      alloca34// PATTERN-NEXT: call void35void test_pragma_attribute_uninitialized() {36  int i;37  used(i);38}39#pragma clang attribute pop40 41} // extern "C"42