@@ -51,11 +51,7 @@ void _01_empty_structs() {
51
51
clang_analyzer_dump_val (Empty2); // expected-warning {{lazyCompoundVal}}
52
52
clang_analyzer_dump_val (Empty3); // expected-warning {{lazyCompoundVal}}
53
53
54
- // Notice that we don't have entries for the copies, only for the original "Empty" object.
55
- // That binding was added by the opaque "conjure" call, directly constructing to the variable "Empty" by copy-elision.
56
- // The copies are not present because the ExprEngine skips the evalBind of empty structs.
57
- // And even if such binds would reach the Store, the Store copies small structs by copying the individual fields,
58
- // and there are no fields within "Empty", thus we wouldn't have any entries anyways.
54
+ // We should have the same Conjured symbol for "Empty", "Empty2" and "Empty3".
59
55
clang_analyzer_printState ();
60
56
// CHECK: "store": { "pointer": "0x{{[0-9a-f]+}}", "items": [
61
57
// CHECK-NEXT: { "cluster": "GlobalInternalSpaceRegion", "pointer": "0x{{[0-9a-f]+}}", "items": [
@@ -66,6 +62,12 @@ void _01_empty_structs() {
66
62
// CHECK-NEXT: ]},
67
63
// CHECK-NEXT: { "cluster": "Empty", "pointer": "0x{{[0-9a-f]+}}", "items": [
68
64
// CHECK-NEXT: { "kind": "Default", "offset": 0, "value": "[[EMPTY_CONJ:conj_\$[0-9]+{int, LC[0-9]+, S[0-9]+, #[0-9]+}]]" }
65
+ // CHECK-NEXT: ]},
66
+ // CHECK-NEXT: { "cluster": "Empty2", "pointer": "0x{{[0-9a-f]+}}", "items": [
67
+ // CHECK-NEXT: { "kind": "Default", "offset": 0, "value": "[[EMPTY_CONJ]]" }
68
+ // CHECK-NEXT: ]},
69
+ // CHECK-NEXT: { "cluster": "Empty3", "pointer": "0x{{[0-9a-f]+}}", "items": [
70
+ // CHECK-NEXT: { "kind": "Default", "offset": 0, "value": "[[EMPTY_CONJ]]" }
69
71
// CHECK-NEXT: ]}
70
72
// CHECK-NEXT: ]},
71
73
0 commit comments