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