xref: /llvm-project/clang/test/Analysis/anonymous-parameter.cpp (revision 8c2574832ed2064996389e4259eaf0bea0fa7951)
1*8c257483SMatheus Izvekov // RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++20 %s 2>&1 | FileCheck %s
2*8c257483SMatheus Izvekov 
3*8c257483SMatheus Izvekov struct A {
4*8c257483SMatheus Izvekov   static A a;
5*8c257483SMatheus Izvekov   char b;
6*8c257483SMatheus Izvekov   friend bool operator==(A, A) = default;
7*8c257483SMatheus Izvekov };
8*8c257483SMatheus Izvekov bool _ = A() == A::a;
9*8c257483SMatheus Izvekov 
10*8c257483SMatheus Izvekov // FIXME: steps 1 and 5 show anonymous function parameters are
11*8c257483SMatheus Izvekov // not handled correctly.
12*8c257483SMatheus Izvekov 
13*8c257483SMatheus Izvekov // CHECK-LABEL: bool operator==(A, A) noexcept = default
14*8c257483SMatheus Izvekov // CHECK-NEXT: [B2 (ENTRY)]
15*8c257483SMatheus Izvekov // CHECK-NEXT:    Succs (1): B1
16*8c257483SMatheus Izvekov // CHECK:      [B1]
17*8c257483SMatheus Izvekov // CHECK-NEXT:    1: function-parameter-0-0
18*8c257483SMatheus Izvekov // CHECK-NEXT:    2: [B1.1].b
19*8c257483SMatheus Izvekov // CHECK-NEXT:    3: [B1.2] (ImplicitCastExpr, LValueToRValue, char)
20*8c257483SMatheus Izvekov // CHECK-NEXT:    4: [B1.3] (ImplicitCastExpr, IntegralCast, int)
21*8c257483SMatheus Izvekov // CHECK-NEXT:    5: function-parameter-0-1
22*8c257483SMatheus Izvekov // CHECK-NEXT:    6: [B1.5].b
23*8c257483SMatheus Izvekov // CHECK-NEXT:    7: [B1.6] (ImplicitCastExpr, LValueToRValue, char)
24*8c257483SMatheus Izvekov // CHECK-NEXT:    8: [B1.7] (ImplicitCastExpr, IntegralCast, int)
25*8c257483SMatheus Izvekov // CHECK-NEXT:    9: [B1.4] == [B1.8]
26*8c257483SMatheus Izvekov // CHECK-NEXT:   10: return [B1.9];
27*8c257483SMatheus Izvekov // CHECK-NEXT:    Preds (1): B2
28*8c257483SMatheus Izvekov // CHECK-NEXT:    Succs (1): B0
29*8c257483SMatheus Izvekov // CHECK:      [B0 (EXIT)]
30*8c257483SMatheus Izvekov // CHECK-NEXT:    Preds (1): B1
31