]> granicus.if.org Git - clang/commitdiff
[analyzer] exploded-graph-rewriter: Fix escaping for bitwise-or.
authorArtem Dergachev <artem.dergachev@gmail.com>
Tue, 25 Jun 2019 02:16:56 +0000 (02:16 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Tue, 25 Jun 2019 02:16:56 +0000 (02:16 +0000)
'|' is a special character in graphviz, so it needs to be properly
escaped and unescaped.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@364269 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/exploded-graph-rewriter/escapes.c
utils/analyzer/exploded-graph-rewriter.py

index bdf308513ea1dd0d7f2a7e4366907d97b8b21fe6..32a7713561f879c384d9e716e3e4ed56df27f23b 100644 (file)
@@ -8,7 +8,7 @@
 // FIXME: Substitution doesn't seem to work on Windows.
 // UNSUPPORTED: system-windows
 
-void string_region_escapes() {
+void escapes() {
   // CHECK: <td align="left"><b>Store: </b></td>
   // CHECK-SAME: <td align="left">foo</td><td align="left">0</td>
   // CHECK-SAME: <td align="left">&amp;Element\{"foo",0 S64b,char\}</td>
@@ -16,4 +16,9 @@ void string_region_escapes() {
   // CHECK-SAME: <td align="left">"foo"</td>
   // CHECK-SAME: <td align="left">&amp;Element\{"foo",0 S64b,char\}</td>
   const char *const foo = "foo";
+
+  // CHECK: <font color="cyan3">BinaryOperator</font>
+  // CHECK-SAME: <td align="left">1 \| 2</td>
+  // CHECK-SAME: <td align="left">3 S32b</td>
+  int x = 1 | 2;
 }
index 4aae72c0da6edf7f9f980e20177e12afdc9d4755..668b12110b4c3c9a477737aee3b1fe9e6ea8967f 100755 (executable)
@@ -300,6 +300,7 @@ class ExplodedGraph(object):
                                         .replace('\\{', '{') \
                                         .replace('\\}', '}') \
                                         .replace('\\\\', '\\') \
+                                        .replace('\\|', '|') \
                                         .replace('\\<', '\\\\<') \
                                         .replace('\\>', '\\\\>') \
                                         .rstrip(',')
@@ -329,7 +330,7 @@ class DotDumpVisitor(object):
                .replace('\\<', '&lt;')
                .replace('\\>', '&gt;')
                .replace('\\l', '<br />')
-               .replace('|', ''), end='')
+               .replace('|', '\\|'), end='')
 
     @staticmethod
     def _diff_plus_minus(is_added):