================ @@ -0,0 +1,110 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -o - | FileCheck %s -check-prefix=UNINIT +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ftrivial-auto-var-init=pattern %s -emit-llvm -o - | FileCheck %s -check-prefix=PATTERN +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ftrivial-auto-var-init=zero %s -emit-llvm -o - | FileCheck %s -check-prefix=ZERO + +template<typename T> void used(T &) noexcept; + +extern "C" { + +extern int get_int(int) noexcept; +struct C { + int x; + int y; +}; +extern C make_c() noexcept; + +// Scalar with a self-reference: does need auto-init. +// UNINIT-LABEL: test_selfinit_call( +// ZERO-LABEL: test_selfinit_call( +// ZERO: store i32 0, ptr %self, align 4, !annotation [[AUTO_INIT:!.+]] +// PATTERN-LABEL: test_selfinit_call( +// PATTERN: store i32 -1431655766, ptr %self, align 4, !annotation [[AUTO_INIT:!.+]] +void test_selfinit_call() { + int self = get_int(self); + used(self); +} + +// Scalar without a self-reference: no auto-init needed. +// UNINIT-LABEL: test_nonself_call( +// ZERO-LABEL: test_nonself_call( +// ZERO-NOT: !annotation [[AUTO_INIT:!.+]] +// PATTERN-LABEL: test_nonself_call( +// PATTERN-NOT: !annotation [[AUTO_INIT:!.+]] +void test_nonself_call() { + int x = get_int(2); + used(x); +} + +// Scalar with a self-reference: does need auto-init. +// UNINIT-LABEL: test_selfinit_lambda_call( +// ZERO-LABEL: test_selfinit_lambda_call( ---------------- jvoung wrote:
I'm not sure if a common "CHECK-LABEL:" would have the same semantics and help split the stream for matching when there is a different prefix like "ZERO: " (or "PATTERN:") that follows, or if the CHECK and the ZERO end up as a independent scans. If it's an independent scan, then "CHECK-LABEL" wouldn't have the same semantics as "ZERO-LABEL:" (which helps split the stream for the "ZERO:" checks that follow -- e.g., in case there a multiple places that could match something generic like "store i32 0, ", the preceding ZERO-LABEL help disambiguate which to match). I'd prefer to keep the redundancy just to be safe and more clear that the X-LABEL are for the X that it's associated with, unless you're pretty sure it can cross over different check prefixes. https://github.com/llvm/llvm-project/pull/94642 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits