1*0a77d919SArtem Dergachev // FIXME: Figure out how to use %clang_analyze_cc1 with our lit.local.cfg.
2*0a77d919SArtem Dergachev // RUN: %clang_cc1 -analyze -triple x86_64-unknown-linux-gnu \
3*0a77d919SArtem Dergachev // RUN:                     -analyzer-checker=core \
4*0a77d919SArtem Dergachev // RUN:                     -analyzer-dump-egraph=%t.dot %s
5*0a77d919SArtem Dergachev // RUN: %exploded_graph_rewriter %t.dot | FileCheck %s
6*0a77d919SArtem Dergachev // REQUIRES: asserts
7*0a77d919SArtem Dergachev 
8*0a77d919SArtem Dergachev // FIXME: Substitution doesn't seem to work on Windows.
9*0a77d919SArtem Dergachev // UNSUPPORTED: system-windows
10*0a77d919SArtem Dergachev 
11*0a77d919SArtem Dergachev struct S {
12*0a77d919SArtem Dergachev   S() {}
13*0a77d919SArtem Dergachev };
14*0a77d919SArtem Dergachev 
15*0a77d919SArtem Dergachev void test() {
16*0a77d919SArtem Dergachev   // CHECK: Objects Under Construction:
17*0a77d919SArtem Dergachev   // CHECK-SAME: <tr>
18*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><b>#0 Call</b></td>
19*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left" colspan="2">
20*0a77d919SArtem Dergachev   // CHECK-SAME:     <font color="grey60">test </font>
21*0a77d919SArtem Dergachev   // CHECK-SAME:   </td>
22*0a77d919SArtem Dergachev   // CHECK-SAME: </tr>
23*0a77d919SArtem Dergachev   // CHECK-SAME: <tr>
24*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
25*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
26*0a77d919SArtem Dergachev   // CHECK-SAME:     (materialize temporary)
27*0a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
28*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S()</td>
29*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
30*0a77d919SArtem Dergachev   // CHECK-SAME: </tr>
31*0a77d919SArtem Dergachev   // CHECK-SAME: <tr>
32*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
33*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
34*0a77d919SArtem Dergachev   // CHECK-SAME:     (elide constructor)
35*0a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
36*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S()</td>
37*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
38*0a77d919SArtem Dergachev   // CHECK-SAME: </tr>
39*0a77d919SArtem Dergachev   // CHECK-SAME: <tr>
40*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><i>S{{[0-9]*}}</i></td>
41*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left"><font color="darkgreen"><i>
42*0a77d919SArtem Dergachev   // CHECK-SAME:     (construct into local variable)
43*0a77d919SArtem Dergachev   // CHECK-SAME:   </i></font></td>
44*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">S s = S();</td>
45*0a77d919SArtem Dergachev   // CHECK-SAME:   <td align="left">&amp;s</td>
46*0a77d919SArtem Dergachev   // CHECK-SAME: </tr>
47*0a77d919SArtem Dergachev   S s = S();
48*0a77d919SArtem Dergachev }
49