|  | // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s 2>&1 | FileCheck %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | void clang_analyzer_printState(); | 
|  |  | 
|  | struct Member { | 
|  | int large[10]; | 
|  | }; | 
|  | Member getMember(); | 
|  |  | 
|  | struct Class { | 
|  | Member m; | 
|  | int first; | 
|  | int second; | 
|  | int third; | 
|  | }; | 
|  |  | 
|  |  | 
|  | void test_output(int n) { | 
|  | Class objsecond; | 
|  | objsecond.m.large[n] = 20; | 
|  |  | 
|  | Class objfirst; | 
|  |  | 
|  | objfirst.m = getMember(); | 
|  | objfirst.second = 2; | 
|  | objfirst.third = 3; | 
|  | objfirst.first = 1; | 
|  |  | 
|  | clang_analyzer_printState(); | 
|  | // Default binding is before any direct bindings. | 
|  | // Direct bindings are increasing by offset. | 
|  | // Global memory space clusters come before any other clusters. | 
|  | // Otherwise, Clusters are in alphabetical order. | 
|  |  | 
|  | // CHECK:       "store": { "pointer": "0x{{[0-9a-f]+}}", "items": [ | 
|  | // CHECK-NEXT:    { "cluster": "GlobalInternalSpaceRegion", "pointer": "0x{{[0-9a-f]+}}", "items": [ | 
|  | // CHECK-NEXT:      { "kind": "Default", "offset": 0, "value": "conj_$ | 
|  | // CHECK-NEXT:    ]}, | 
|  | // CHECK-NEXT:    { "cluster": "GlobalSystemSpaceRegion", "pointer": "0x{{[0-9a-f]+}}", "items": [ | 
|  | // CHECK-NEXT:      { "kind": "Default", "offset": 0, "value": "conj_$ | 
|  | // CHECK-NEXT:    ]}, | 
|  | // CHECK-NEXT:    { "cluster": "objfirst", "pointer": "0x{{[0-9a-f]+}}", "items": [ | 
|  | // CHECK-NEXT:      { "kind": "Default", "offset": 0, "value": "conj_$ | 
|  | // CHECK-NEXT:      { "kind": "Direct", "offset": 320, "value": "1 S32b" }, | 
|  | // CHECK-NEXT:      { "kind": "Direct", "offset": 352, "value": "2 S32b" }, | 
|  | // CHECK-NEXT:      { "kind": "Direct", "offset": 384, "value": "3 S32b" } | 
|  | // CHECK-NEXT:    ]}, | 
|  | // CHECK-NEXT:    { "cluster": "objsecond", "pointer": "0x{{[0-9a-f]+}}", "items": [ | 
|  | // CHECK-NEXT:      { "kind": "Default", "offset": 0, "value": "Unknown" }, | 
|  | // CHECK-NEXT:      { "kind": "Direct", "offset": null, "value": "20 S32b" } | 
|  | // CHECK-NEXT:    ]} | 
|  | // CHECK-NEXT:  ]}, | 
|  |  | 
|  | (void)objfirst; | 
|  | (void)objsecond; | 
|  | } |