1337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG -cfg-add-implicit-dtors %s > %t 2>&1 2337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// RUN: FileCheck --input-file=%t %s 3fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski// XPASS: * 4fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 5fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskiclass A { 6fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskipublic: 7fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A() {} 8fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski ~A() {} 9fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski operator int() const { return 1; } 10fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski}; 11fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 12fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskiextern const bool UV; 13fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 14fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskivoid test_const_ref() { 15fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A a; 16fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski const A& b = a; 17fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski const A& c = A(); 18fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski} 19fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 20b1c52870b8c2feaa7cd112295368bec53af490a0Marcin Swiderskivoid test_array() { 21b1c52870b8c2feaa7cd112295368bec53af490a0Marcin Swiderski A a[2]; 22b1c52870b8c2feaa7cd112295368bec53af490a0Marcin Swiderski A b[0]; 23b1c52870b8c2feaa7cd112295368bec53af490a0Marcin Swiderski} 24b1c52870b8c2feaa7cd112295368bec53af490a0Marcin Swiderski 25fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskivoid test_scope() { 26fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A a; 27fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski { A c; 28fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A d; 29fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski } 30fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A b; 31fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski} 32fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 33fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskivoid test_return() { 34fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A a; 35fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A b; 36fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski if (UV) return; 37fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A c; 38fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski} 39fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 40fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskivoid test_goto() { 41fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A a; 42fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskil0: 43fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A b; 44fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski { A a; 45fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski if (UV) goto l0; 46fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski if (UV) goto l1; 47fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A b; 48fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski } 49fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderskil1: 50fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski A c; 51fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski} 52fcb72ac985c26372315fabc08d43d6f66ff906b4Marcin Swiderski 5304e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderskivoid test_if_implicit_scope() { 5404e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A a; 5504e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski if (A b = a) 5604e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A c; 5704e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski else A c; 5804e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski} 5904e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski 6004e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderskivoid test_if_jumps() { 6104e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A a; 6204e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski if (A b = a) { 6304e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A c; 6404e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski if (UV) return; 6504e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A d; 6604e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski } else { 6704e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A c; 6804e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski if (UV) return; 6904e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A d; 7004e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski } 7104e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski A e; 7204e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski} 7304e046cbf7153fc261d730d460f081322d5c42f6Marcin Swiderski 7405adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderskivoid test_while_implicit_scope() { 7505adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A a; 7605adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski while (A b = a) 7705adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A c; 7805adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski} 7905adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski 8005adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderskivoid test_while_jumps() { 8105adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A a; 8205adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski while (A b = a) { 8305adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A c; 8405adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) break; 8505adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) continue; 8605adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) return; 8705adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A d; 8805adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski } 8905adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A e; 9005adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski} 9105adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski 9205adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderskivoid test_do_implicit_scope() { 9305adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski do A a; 9405adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski while (UV); 9505adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski} 9605adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski 9705adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderskivoid test_do_jumps() { 9805adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A a; 9905adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski do { 10005adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A b; 10105adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) break; 10205adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) continue; 10305adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski if (UV) return; 10405adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A c; 10505adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski } while (UV); 10605adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski A d; 10705adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski} 10805adedcb5e199e377e35f576288caf5ceed40136Marcin Swiderski 1098ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderskivoid test_switch_implicit_scope() { 1108ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A a; 1118ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski switch (A b = a) 1128ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A c; 1138ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski} 1148ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski 1158ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderskivoid test_switch_jumps() { 1168ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A a; 1178ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski switch (A b = a) { 1188ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski case 0: { 1198ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A c; 1208ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski if (UV) break; 1218ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski if (UV) return; 1228ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A f; 1238ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski } 1248ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski case 1: 1258ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski break; 1268ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski } 1278ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski A g; 1288ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski} 1298ae6058cecba902c0069c24bdc9c26d475559291Marcin Swiderski 13047575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderskivoid test_for_implicit_scope() { 13147575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski for (A a; A b = a; ) 13247575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski A c; 13347575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski} 13447575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski 13547575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderskivoid test_for_jumps() { 13647575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski A a; 13747575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski for (A b; A c = b; ) { 13847575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski A d; 13947575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski if (UV) break; 14047575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski if (UV) continue; 14147575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski if (UV) return; 14247575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski A e; 14347575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski } 14447575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski A f; 14547575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski} 14647575f1f775f5f250be4f395fa694a7274a65f33Marcin Swiderski 1470e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderskivoid test_catch_const_ref() { 1480e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski try { 1490e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski } catch (const A& e) { 1500e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski } 1510e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski} 1520e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski 1530e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderskivoid test_catch_copy() { 1540e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski try { 1550e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski } catch (A e) { 1560e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski } 1570e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski} 1580e97bcbee9d5f7735edecbccfb5031a2f065f286Marcin Swiderski 159aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B1 (ENTRY)] 160aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Succs (1): B0 161aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B0 (EXIT)] 162aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Preds (1): B1 163aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B1 (ENTRY)] 164aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Succs (1): B0 165aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B0 (EXIT)] 166aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Preds (1): B1 167aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B2 (ENTRY)] 168aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Succs (1): B1 169aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B1] 170aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: 1: 1 171aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: 2: return [B1.1]; 172aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Preds (1): B2 173aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Succs (1): B0 174aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: [B0 (EXIT)] 175aa5609891df937291bf962dd2fc7deb2ceae292fAnna Zaks// CHECK: Preds (1): B1 176682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2 (ENTRY)] 177682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 178682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 179682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 180682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 181682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: a 182682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B1.3] (ImplicitCastExpr, NoOp, const class A) 183682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: const A &b = a; 184682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A() (CXXConstructExpr, class A) 185682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B1.6] (BindTemporary) 186682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B1.7] (ImplicitCastExpr, NoOp, const class A) 187682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B1.8] 188682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: const A &c = A(); 189682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B1.10].~A() (Implicit destructor) 190682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 12: [B1.2].~A() (Implicit destructor) 191682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 192682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 193682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 194682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 195682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2 (ENTRY)] 196682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 197682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 198682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A [2]) 199682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a[2]; 200682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A [0]) 201682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b[0]; 202682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B1.2].~A() (Implicit destructor) 203682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 204682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 205682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 206682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 207682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2 (ENTRY)] 208682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 209682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 210682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 211682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 212682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A) 213682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A c; 214682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: (CXXConstructExpr, class A) 215682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A d; 216682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B1.6].~A() (Implicit destructor) 217682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B1.4].~A() (Implicit destructor) 218682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: (CXXConstructExpr, class A) 219682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: A b; 220682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B1.10].~A() (Implicit destructor) 221682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 12: [B1.2].~A() (Implicit destructor) 222682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 223682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 224682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 225682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 226682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4 (ENTRY)] 227682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 228682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 229682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 230682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 231682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B1.2].~A() (Implicit destructor) 232682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B3.4].~A() (Implicit destructor) 233682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B3.2].~A() (Implicit destructor) 234682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B3 235682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 236682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 237682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 238682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B3.4].~A() (Implicit destructor) 239682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B3.2].~A() (Implicit destructor) 240682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B3 241682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 242682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 243682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 244682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 245682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A) 246682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b; 247682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: UV 248682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B3.5] (ImplicitCastExpr, LValueToRValue, _Bool) 249682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B3.6] 250682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 251682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B2 B1 252682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 253682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B1 B2 254682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8 (ENTRY)] 255682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B7 256682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 257682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: l1: 258682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 259682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 260682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B1.2].~A() (Implicit destructor) 261682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B6.2].~A() (Implicit destructor) 262682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B7.2].~A() (Implicit destructor) 263682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B2 B3 264682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 265682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 266682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 267682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A b; 268682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2].~A() (Implicit destructor) 269682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B6.4].~A() (Implicit destructor) 270682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 271682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 272682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 273682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B6.4].~A() (Implicit destructor) 274682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: goto l1; 275682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 276682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 277682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 278682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 279682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool) 280682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B4.2] 281682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 282682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B3 B2 283682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 284682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B6.4].~A() (Implicit destructor) 285682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B6.2].~A() (Implicit destructor) 286682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: goto l0; 287682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 288682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B6 289682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 290682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: l0: 291682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 292682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A b; 293682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A) 294682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A a; 295682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: UV 296682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B6.5] (ImplicitCastExpr, LValueToRValue, _Bool) 297682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B6.6] 298682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B7 B5 299682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B5 B4 300682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 301682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 302682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 303682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 304682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B6 305682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 306682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 307682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5 (ENTRY)] 308682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B4 309682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 310682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B4.6].~A() (Implicit destructor) 311682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B4.2].~A() (Implicit destructor) 312682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B2 B3 313682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 314682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 315682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 316682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 317682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2].~A() (Implicit destructor) 318682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 319682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 320682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 321682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 322682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 323682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B3.2].~A() (Implicit destructor) 324682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 325682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 326682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 327682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 328682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 329682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: a 330682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B4.3] (ImplicitCastExpr, NoOp, const class A) 331682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B4.4] (CXXConstructExpr, class A) 332682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A b = a; 333682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: b 334682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B4.7] (ImplicitCastExpr, NoOp, const class A) 335682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B4.8].operator int 336682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B4.9]() 337682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, int) 338682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 12: [B4.11] (ImplicitCastExpr, IntegralToBoolean, _Bool) 339682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B4.12] 340682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B5 341682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B3 B2 342682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 343682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 344682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B9 (ENTRY)] 345682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B8 346682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 347682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B8.6].~A() (Implicit destructor) 348682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: (CXXConstructExpr, class A) 349682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: A e; 350682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B1.3].~A() (Implicit destructor) 351682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B8.2].~A() (Implicit destructor) 352682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B2 B5 353682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 354682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 355682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 356682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A d; 357682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2].~A() (Implicit destructor) 358682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B4.2].~A() (Implicit destructor) 359682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 360682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 361682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 362682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 363682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B4.2].~A() (Implicit destructor) 364682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B8.6].~A() (Implicit destructor) 365682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B8.2].~A() (Implicit destructor) 366682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 367682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 368682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 369682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 370682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 371682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 372682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool) 373682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B4.4] 374682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 375682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B3 B2 376682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 377682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 378682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A d; 379682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B5.2].~A() (Implicit destructor) 380682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B7.2].~A() (Implicit destructor) 381682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B7 382682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 383682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 384682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 385682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B7.2].~A() (Implicit destructor) 386682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B8.6].~A() (Implicit destructor) 387682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B8.2].~A() (Implicit destructor) 388682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B7 389682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 390682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 391682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 392682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 393682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 394682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B7.3] (ImplicitCastExpr, LValueToRValue, _Bool) 395682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B7.4] 396682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 397682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B6 B5 398682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8] 399682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 400682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 401682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: a 402682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B8.3] (ImplicitCastExpr, NoOp, const class A) 403682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B8.4] (CXXConstructExpr, class A) 404682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A b = a; 405682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: b 406682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B8.7] (ImplicitCastExpr, NoOp, const class A) 407682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B8.8].operator int 408682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B8.9]() 409682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B8.10] (ImplicitCastExpr, UserDefinedConversion, int) 410682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 12: [B8.11] (ImplicitCastExpr, IntegralToBoolean, _Bool) 411682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B8.12] 412682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B9 413682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B7 B4 414682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 415682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (3): B1 B3 B6 416682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6 (ENTRY)] 417682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B5 418682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 419682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 420682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B5.2].~A() (Implicit destructor) 421682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 422682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 423682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 424682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: a 425682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.1] (ImplicitCastExpr, NoOp, const class A) 426682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2] (CXXConstructExpr, class A) 427682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b = a; 428682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: b 429682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B2.5] (ImplicitCastExpr, NoOp, const class A) 430682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B2.6].operator int 431682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7]() 432682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, int) 433682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) 434682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: while [B2.10] 435682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B5 436682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B4 B1 437682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 438682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 439682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 440682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 441682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 442682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 443682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B4.2].~A() (Implicit destructor) 444682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B2.4].~A() (Implicit destructor) 445682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 446682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 447682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 448682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 449682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 450682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 451682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 452682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 453682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 454682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B12 (ENTRY)] 455682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B11 456682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 457682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 458682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: (CXXConstructExpr, class A) 459682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: A e; 460682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B1.3].~A() (Implicit destructor) 461682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B11.2].~A() (Implicit destructor) 462682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B9 B2 463682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 464682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 465682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: a 466682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.1] (ImplicitCastExpr, NoOp, const class A) 467682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2] (CXXConstructExpr, class A) 468682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b = a; 469682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: b 470682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B2.5] (ImplicitCastExpr, NoOp, const class A) 471682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B2.6].operator int 472682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7]() 473682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, int) 474682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) 475682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: while [B2.10] 476682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B11 477682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B10 B1 478682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 479682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B4 B7 480682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 481682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 482682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 483682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A d; 484682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B4.2].~A() (Implicit destructor) 485682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B10.2].~A() (Implicit destructor) 486682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B2.4].~A() (Implicit destructor) 487682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 488682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 489682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 490682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 491682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B10.2].~A() (Implicit destructor) 492682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.4].~A() (Implicit destructor) 493682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B11.2].~A() (Implicit destructor) 494682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 495682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 496682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 497682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 498682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B6.1] (ImplicitCastExpr, LValueToRValue, _Bool) 499682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B6.2] 500682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 501682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B5 B4 502682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 503682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B10.2].~A() (Implicit destructor) 504682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.4].~A() (Implicit destructor) 505682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: continue; 506682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 507682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 508682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8] 509682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 510682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool) 511682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B8.2] 512682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B10 513682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B7 B6 514682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B9] 515682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B10.2].~A() (Implicit destructor) 516682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: break; 517682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B10 518682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 519682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B10] 520682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 521682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 522682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 523682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B10.3] (ImplicitCastExpr, LValueToRValue, _Bool) 524682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B10.4] 525682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 526682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B9 B8 527682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B11] 528682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 529682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 530682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B12 531682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 532682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 533682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B1 B5 534682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4 (ENTRY)] 535682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 536682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 537682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 538682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, _Bool) 539682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: do ... while [B1.2] 540682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 541682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B3 B0 542682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 543682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 544682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 545682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2].~A() (Implicit destructor) 546682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B4 547682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 548682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 549682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 550682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 551682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 552682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 553682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B12 (ENTRY)] 554682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B11 555682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 556682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 557682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A d; 558682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B1.2].~A() (Implicit destructor) 559682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B11.2].~A() (Implicit destructor) 560682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B8 B2 561682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 562682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 563682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 564682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool) 565682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: do ... while [B2.2] 566682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B6 567682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B10 B1 568682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 569682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 570682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 571682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B3.2].~A() (Implicit destructor) 572682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B9.2].~A() (Implicit destructor) 573682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B5 574682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 575682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 576682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 577682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B9.2].~A() (Implicit destructor) 578682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B11.2].~A() (Implicit destructor) 579682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B5 580682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 581682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 582682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 583682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool) 584682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B5.2] 585682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B7 586682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B4 B3 587682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 588682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B9.2].~A() (Implicit destructor) 589682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: continue; 590682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B7 591682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 592682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 593682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 594682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool) 595682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B7.2] 596682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B9 597682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B6 B5 598682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8] 599682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B9.2].~A() (Implicit destructor) 600682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: break; 601682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B9 602682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 603682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B9] 604682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 605682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A b; 606682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 607682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool) 608682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B9.4] 609682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B10 B11 610682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B8 B7 611682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B10] 612682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 613682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B9 614682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B11] 615682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 616682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 617682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B12 618682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B9 619682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 620682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B1 B4 621682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4 (ENTRY)] 622682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 623682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 624682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.6].~A() (Implicit destructor) 625682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.2].~A() (Implicit destructor) 626682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B2 627682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 628682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 629682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 630682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 631682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: a 632682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B2.3] (ImplicitCastExpr, NoOp, const class A) 633682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B2.4] (CXXConstructExpr, class A) 634682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A b = a; 635682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: b 636682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A) 637682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8].operator int 638682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9]() 639682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int) 640682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: switch [B2.11] 641682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 642682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 643682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 644682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 645682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 646682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B3.2].~A() (Implicit destructor) 647682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 648682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 649682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 650682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B9 (ENTRY)] 651682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 652682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 653682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.6].~A() (Implicit destructor) 654682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: (CXXConstructExpr, class A) 655682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: A g; 656682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B1.3].~A() (Implicit destructor) 657682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B2.2].~A() (Implicit destructor) 658682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (3): B3 B7 B2 659682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 660682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 661682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 662682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 663682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: a 664682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B2.3] (ImplicitCastExpr, NoOp, const class A) 665682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B2.4] (CXXConstructExpr, class A) 666682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: A b = a; 667682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: b 668682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A) 669682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8].operator int 670682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9]() 671682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int) 672682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: switch [B2.11] 673682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B9 674682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (3): B3 B8 675882998923889a2fcce9b49696506c499e22cf38fTed Kremenek// CHECK: B1 676682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 677682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: case 1: 678682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: break; 679682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B2 B4 680682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 681682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 682682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 683682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A f; 684682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B4.2].~A() (Implicit destructor) 685682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B8.2].~A() (Implicit destructor) 686682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 687682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 688682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 689682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 690682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B8.2].~A() (Implicit destructor) 691682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.6].~A() (Implicit destructor) 692682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B2.2].~A() (Implicit destructor) 693682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 694682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 695682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 696682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 697682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B6.1] (ImplicitCastExpr, LValueToRValue, _Bool) 698682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B6.2] 699682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 700682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B5 B4 701682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 702682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B8.2].~A() (Implicit destructor) 703682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: break; 704682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 705682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 706682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8] 707682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: case 0: 708682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 709682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 710682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 711682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B8.3] (ImplicitCastExpr, LValueToRValue, _Bool) 712682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B8.4] 713682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 714682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B7 B6 715682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 716682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B1 B5 717682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6 (ENTRY)] 718682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B5 719682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 720682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 721682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B5.2].~A() (Implicit destructor) 722682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 723682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 724682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 725682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: a 726682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.1] (ImplicitCastExpr, NoOp, const class A) 727682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2] (CXXConstructExpr, class A) 728682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b = a; 729682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: b 730682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B2.5] (ImplicitCastExpr, NoOp, const class A) 731682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B2.6].operator int 732682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7]() 733682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, int) 734682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) 735682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: for (...; [B2.10]; ) 736682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B5 737682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B4 B1 738682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 739682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 740682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B4 741682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 742682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 743682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 744682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A c; 745682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B4.2].~A() (Implicit destructor) 746682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 747682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 748682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 749682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 750682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 751682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 752682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 753682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 754682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 755682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B12 (ENTRY)] 756682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B11 757682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 758682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 759682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B11.4].~A() (Implicit destructor) 760682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A) 761682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A f; 762682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B1.4].~A() (Implicit destructor) 763682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B11.2].~A() (Implicit destructor) 764682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B9 B2 765682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 766682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 767682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: b 768682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B2.1] (ImplicitCastExpr, NoOp, const class A) 769682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.2] (CXXConstructExpr, class A) 770682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A c = b; 771682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: c 772682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 6: [B2.5] (ImplicitCastExpr, NoOp, const class A) 773682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 7: [B2.6].operator int 774682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 8: [B2.7]() 775682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, int) 776682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 10: [B2.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) 777682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: for (...; [B2.10]; ) 778682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B3 B11 779682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B10 B1 780682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3] 781682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B2.4].~A() (Implicit destructor) 782682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B4 B7 783682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 784682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B4] 785682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 786682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A e; 787682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B4.2].~A() (Implicit destructor) 788682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B10.2].~A() (Implicit destructor) 789682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 790682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 791682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B5] 792682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: return; 793682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B10.2].~A() (Implicit destructor) 794682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: [B2.4].~A() (Implicit destructor) 795682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B11.4].~A() (Implicit destructor) 796682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 5: [B11.2].~A() (Implicit destructor) 797682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B6 798682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 799682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B6] 800682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 801682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B6.1] (ImplicitCastExpr, LValueToRValue, _Bool) 802682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B6.2] 803682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 804682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B5 B4 805682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B7] 806682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B10.2].~A() (Implicit destructor) 807682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: continue; 808682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B8 809682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B3 810682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B8] 811682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: UV 812682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool) 813682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B8.2] 814682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B10 815682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B7 B6 816682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B9] 817682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: [B10.2].~A() (Implicit destructor) 818682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: break; 819682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B10 820682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B1 821682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B10] 822682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 823682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A d; 824682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: UV 825682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: [B10.3] (ImplicitCastExpr, LValueToRValue, _Bool) 826682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: if [B10.4] 827682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B2 828682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B9 B8 829682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B11] 830682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 1: (CXXConstructExpr, class A) 831682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 2: A a; 832682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 3: (CXXConstructExpr, class A) 833682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: 4: A b; 834682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B12 835682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B2 836682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 837682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (2): B1 B5 838682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3 (ENTRY)] 839682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 840682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 841682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: try ... 842682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B2 B0 843682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 844682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: catch (const A &e): 845337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// CHECK: 1: catch (const A &e) { 846337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// CHECK: } 847682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 848682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 849682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 850682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (3): B2 B1 B3 851682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B3 (ENTRY)] 852682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 853682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B1] 854682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: T: try ... 855682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (2): B2 B0 856682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B2] 857682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: catch (A e): 858337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// CHECK: 1: catch (A e) { 859337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// CHECK: } 860337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek// CHECK: 2: [B2.1].~A() (Implicit destructor) 861682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (1): B1 862682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Succs (1): B0 863682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: [B0 (EXIT)] 864682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek// CHECK: Preds (3): B2 B1 B3 865