xref: /llvm-project/clang/test/Analysis/PR49490.cpp (revision 6dc152350824d0abcf4e1836c2846f8f9256779c)
1 // RUN: %clang_analyze_cc1 -w -analyzer-checker=core -verify %s
2 
3 // expected-no-diagnostics
4 
5 struct toggle {
6   bool value;
7 };
8 
9 toggle global_toggle;
get_global_toggle()10 toggle get_global_toggle() { return global_toggle; }
11 
12 int oob_access();
13 
compare(toggle one,bool other)14 bool compare(toggle one, bool other) {
15   if (one.value != other)
16     return true;
17 
18   if (one.value)
19     oob_access();
20   return true;
21 }
22 
23 bool coin();
24 
bar()25 void bar() {
26   bool left = coin();
27   bool right = coin();
28   for (;;)
29     compare(get_global_toggle(), left) && compare(get_global_toggle(), right);
30 }
31