Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaCXX/warn-range-loop-analysis-trivially-copyable.cpp @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wloop-analysis -verify %s // RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wrange-loop-analysis -verify %s void test_POD_64_bytes() { struct Record { char a[64]; }; Record records[8]; for (const auto r : records) (void)r; } void test_POD_65_bytes() { struct Record { char a[65]; }; // expected-warning@+3 {{loop variable 'r' creates a copy from type 'const Record'}} // expected-note@+2 {{use reference type 'const Record &' to prevent copying}} Record records[8]; for (const auto r : records) (void)r; } void test_TriviallyCopyable_64_bytes() { struct Record { Record() {} char a[64]; }; Record records[8]; for (const auto r : records) (void)r; } void test_TriviallyCopyable_65_bytes() { struct Record { Record() {} char a[65]; }; // expected-warning@+3 {{loop variable 'r' creates a copy from type 'const Record'}} // expected-note@+2 {{use reference type 'const Record &' to prevent copying}} Record records[8]; for (const auto r : records) (void)r; } void test_NonTriviallyCopyable() { struct Record { Record() {} ~Record() {} volatile int a; int b; }; // expected-warning@+3 {{loop variable 'r' creates a copy from type 'const Record'}} // expected-note@+2 {{use reference type 'const Record &' to prevent copying}} Record records[8]; for (const auto r : records) (void)r; } void test_TrivialABI_64_bytes() { struct [[clang::trivial_abi]] Record { Record() {} ~Record() {} char a[64]; }; Record records[8]; for (const auto r : records) (void)r; } void test_TrivialABI_65_bytes() { struct [[clang::trivial_abi]] Record { Record() {} ~Record() {} char a[65]; }; // expected-warning@+3 {{loop variable 'r' creates a copy from type 'const Record'}} // expected-note@+2 {{use reference type 'const Record &' to prevent copying}} Record records[8]; for (const auto r : records) (void)r; }