summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2019-07-02 02:17:50 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2019-07-02 02:17:50 +0000
commit0a77d9192ab75b8fcf218747d6bcd213dce1f4ce (patch)
treed647ff4bb47a6787fc715bee3bb07b880e10b78b /clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp
parent745379a0af74a37465f616b99c10a09b4f0d2add (diff)
downloadbcm5719-llvm-0a77d9192ab75b8fcf218747d6bcd213dce1f4ce.tar.gz
bcm5719-llvm-0a77d9192ab75b8fcf218747d6bcd213dce1f4ce.zip
[analyzer] exploded-graph-rewriter: Add support for objects under construction.
This trait is Environment-like, so there was a chance to re-use a lot of code. Differential Revision: https://reviews.llvm.org/D64047 llvm-svn: 364880
Diffstat (limited to 'clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp')
-rw-r--r--clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp b/clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp
new file mode 100644
index 00000000000..c2a805f099c
--- /dev/null
+++ b/clang/test/Analysis/exploded-graph-rewriter/objects_under_construction.cpp
@@ -0,0 +1,48 @@
+// 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: -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="grey60">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">&amp;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">&amp;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">&amp;s</td>
+ // CHECK-SAME: </tr>
+ S s = S();
+}
OpenPOWER on IntegriCloud