brintos

brintos / llvm-project-archived public Read only

0
0
Text · 574 B · 989c584 Raw
33 lines · cpp
1// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core,debug.ExprInspection -verify %s2 3void clang_analyzer_eval(bool);4 5struct s { int a; };6void foo() {7  auto [a] = s{1};8  clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}9}10 11struct s2 {12  int &x;13};14 15int *foo2(s2 in) {16  auto [a] = in;17  return &a;18}19 20void bar() {21  int i = 1;22  s2 a{i};23 24  auto *x = foo2(a);25 26  clang_analyzer_eval(*x == i); // expected-warning{{TRUE}}27 28  *x = 2;29 30  clang_analyzer_eval(*x == 2); // expected-warning{{TRUE}}31  clang_analyzer_eval(i == 2);  // expected-warning{{TRUE}}32}33