@@ -51,11 +51,7 @@ void _01_empty_structs() {
5151 clang_analyzer_dump_val (Empty2); // expected-warning {{lazyCompoundVal}}
5252 clang_analyzer_dump_val (Empty3); // expected-warning {{lazyCompoundVal}}
5353
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".
5955 clang_analyzer_printState ();
6056 // CHECK: "store": { "pointer": "0x{{[0-9a-f]+}}", "items": [
6157 // CHECK-NEXT: { "cluster": "GlobalInternalSpaceRegion", "pointer": "0x{{[0-9a-f]+}}", "items": [
@@ -66,6 +62,12 @@ void _01_empty_structs() {
6662 // CHECK-NEXT: ]},
6763 // CHECK-NEXT: { "cluster": "Empty", "pointer": "0x{{[0-9a-f]+}}", "items": [
6864 // 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]]" }
6971 // CHECK-NEXT: ]}
7072 // CHECK-NEXT: ]},
7173
0 commit comments