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 // REQUIRES: asserts 80a77d919SArtem Dergachev 90a77d919SArtem Dergachev // FIXME: Substitution doesn't seem to work on Windows. 100a77d919SArtem Dergachev // UNSUPPORTED: system-windows 110a77d919SArtem Dergachev 120a77d919SArtem Dergachev struct S { 130a77d919SArtem Dergachev S() {} 140a77d919SArtem Dergachev }; 150a77d919SArtem Dergachev 160a77d919SArtem Dergachev void test() { 170a77d919SArtem Dergachev // CHECK: Objects Under Construction: 180a77d919SArtem Dergachev // CHECK-SAME: <tr> 190a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><b>#0 Call</b></td> 200a77d919SArtem Dergachev // CHECK-SAME: <td align="left" colspan="2"> 21ad38e58eSArtem Dergachev // CHECK-SAME: <font color="gray60">test </font> 220a77d919SArtem Dergachev // CHECK-SAME: </td> 230a77d919SArtem Dergachev // CHECK-SAME: </tr> 240a77d919SArtem Dergachev // CHECK-SAME: <tr> 250a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td> 260a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><font color="darkgreen"><i> 270a77d919SArtem Dergachev // CHECK-SAME: (materialize temporary) 280a77d919SArtem Dergachev // CHECK-SAME: </i></font></td> 290a77d919SArtem Dergachev // CHECK-SAME: <td align="left">S()</td> 300a77d919SArtem Dergachev // CHECK-SAME: <td align="left">&s</td> 310a77d919SArtem Dergachev // CHECK-SAME: </tr> 320a77d919SArtem Dergachev // CHECK-SAME: <tr> 330a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td> 340a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><font color="darkgreen"><i> 350a77d919SArtem Dergachev // CHECK-SAME: (elide constructor) 360a77d919SArtem Dergachev // CHECK-SAME: </i></font></td> 370a77d919SArtem Dergachev // CHECK-SAME: <td align="left">S()</td> 380a77d919SArtem Dergachev // CHECK-SAME: <td align="left">&s</td> 390a77d919SArtem Dergachev // CHECK-SAME: </tr> 400a77d919SArtem Dergachev // CHECK-SAME: <tr> 410a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td> 420a77d919SArtem Dergachev // CHECK-SAME: <td align="left"><font color="darkgreen"><i> 430a77d919SArtem Dergachev // CHECK-SAME: (construct into local variable) 440a77d919SArtem Dergachev // CHECK-SAME: </i></font></td> 450a77d919SArtem Dergachev // CHECK-SAME: <td align="left">S s = S();</td> 460a77d919SArtem Dergachev // CHECK-SAME: <td align="left">&s</td> 470a77d919SArtem Dergachev // CHECK-SAME: </tr> 480a77d919SArtem Dergachev S s = S(); 490a77d919SArtem Dergachev } 50