mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

This patch improves Clang call graph analysis by adding in expressions that are not found in regular function bodies, such as default arguments or member initializers. Patch by Joshua Cranmer! Differential Revision: https://reviews.llvm.org/D65453 llvm-svn: 369321
50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
// FIXME: Figure out how to use %clang_analyze_cc1 with our lit.local.cfg.
|
|
// RUN: %clang_cc1 -analyze -triple x86_64-unknown-linux-gnu \
|
|
// RUN: -analyze-function "test()" \
|
|
// RUN: -analyzer-checker=core \
|
|
// RUN: -analyzer-dump-egraph=%t.dot %s
|
|
// RUN: %exploded_graph_rewriter %t.dot | FileCheck %s
|
|
// REQUIRES: asserts
|
|
|
|
// FIXME: Substitution doesn't seem to work on Windows.
|
|
// UNSUPPORTED: system-windows
|
|
|
|
struct S {
|
|
S() {}
|
|
};
|
|
|
|
void test() {
|
|
// CHECK: Objects Under Construction:
|
|
// CHECK-SAME: <tr>
|
|
// CHECK-SAME: <td align="left"><b>#0 Call</b></td>
|
|
// CHECK-SAME: <td align="left" colspan="2">
|
|
// CHECK-SAME: <font color="gray60">test </font>
|
|
// CHECK-SAME: </td>
|
|
// CHECK-SAME: </tr>
|
|
// CHECK-SAME: <tr>
|
|
// CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td>
|
|
// CHECK-SAME: <td align="left"><font color="darkgreen"><i>
|
|
// CHECK-SAME: (materialize temporary)
|
|
// CHECK-SAME: </i></font></td>
|
|
// CHECK-SAME: <td align="left">S()</td>
|
|
// CHECK-SAME: <td align="left">&s</td>
|
|
// CHECK-SAME: </tr>
|
|
// CHECK-SAME: <tr>
|
|
// CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td>
|
|
// CHECK-SAME: <td align="left"><font color="darkgreen"><i>
|
|
// CHECK-SAME: (elide constructor)
|
|
// CHECK-SAME: </i></font></td>
|
|
// CHECK-SAME: <td align="left">S()</td>
|
|
// CHECK-SAME: <td align="left">&s</td>
|
|
// CHECK-SAME: </tr>
|
|
// CHECK-SAME: <tr>
|
|
// CHECK-SAME: <td align="left"><i>S{{[0-9]*}}</i></td>
|
|
// CHECK-SAME: <td align="left"><font color="darkgreen"><i>
|
|
// CHECK-SAME: (construct into local variable)
|
|
// CHECK-SAME: </i></font></td>
|
|
// CHECK-SAME: <td align="left">S s = S();</td>
|
|
// CHECK-SAME: <td align="left">&s</td>
|
|
// CHECK-SAME: </tr>
|
|
S s = S();
|
|
}
|