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">&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">&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">&s</td> 46*0a77d919SArtem Dergachev // CHECK-SAME: </tr> 47*0a77d919SArtem Dergachev S s = S(); 48*0a77d919SArtem Dergachev } 49