10a77d919SArtem Dergachev // FIXME: Figure out how to use %clang_analyze_cc1 with our lit.local.cfg.
20a77d919SArtem Dergachev // RUN: %clang_cc1 -analyze -triple x86_64-unknown-linux-gnu \
3*8cf3dfeaSArtem Dergachev // RUN:                     -analyze-function "test()" \
40a77d919SArtem Dergachev // RUN:                     -analyzer-checker=core \
50a77d919SArtem Dergachev // RUN:                     -analyzer-dump-egraph=%t.dot %s
60a77d919SArtem Dergachev // RUN: %exploded_graph_rewriter %t.dot | FileCheck %s
70a77d919SArtem Dergachev 
80a77d919SArtem Dergachev struct S {
SS90a77d919SArtem Dergachev   S() {}
100a77d919SArtem Dergachev };
110a77d919SArtem Dergachev 
test()120a77d919SArtem Dergachev void test() {
130a77d919SArtem Dergachev   // CHECK: Objects Under Construction:
140a77d919SArtem Dergachev   // CHECK-SAME: <tr>
150a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><b>#0 Call</b></td>
160a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left" colspan="2">
17ad38e58eSArtem Dergachev   // CHECK-SAME:     <font color="gray60">test </font>
180a77d919SArtem Dergachev   // CHECK-SAME:   </td>
190a77d919SArtem Dergachev   // CHECK-SAME: </tr>
200a77d919SArtem Dergachev   // CHECK-SAME: <tr>
210a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
220a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
230a77d919SArtem Dergachev   // CHECK-SAME:     (materialize temporary)
240a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
250a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S()</td>
260a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
270a77d919SArtem Dergachev   // CHECK-SAME: </tr>
280a77d919SArtem Dergachev   // CHECK-SAME: <tr>
290a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
300a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
310a77d919SArtem Dergachev   // CHECK-SAME:     (elide constructor)
320a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
330a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S()</td>
340a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
350a77d919SArtem Dergachev   // CHECK-SAME: </tr>
360a77d919SArtem Dergachev   // CHECK-SAME: <tr>
370a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
380a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
390a77d919SArtem Dergachev   // CHECK-SAME:     (construct into local variable)
400a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
410a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S s = S();</td>
420a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
430a77d919SArtem Dergachev   // CHECK-SAME: </tr>
440a77d919SArtem Dergachev   S s = S();
450a77d919SArtem Dergachev }
46