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