aboutsummaryrefslogtreecommitdiff
path: root/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
diff options
context:
space:
mode:
authorGabor Marton <gabor.marton@ericsson.com>2021-06-23 16:25:49 +0200
committerGabor Marton <gabor.marton@ericsson.com>2021-06-25 11:49:26 +0200
commit0646e3625499b08a3ac9efd48396f3b463a19139 (patch)
tree3ab91decb936745f566f496b1982c476ee856e77 /lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
parentc3549d4d7a04d83ff559d2be77a9e74e798fdef4 (diff)
downloadllvm-0646e3625499b08a3ac9efd48396f3b463a19139.zip
llvm-0646e3625499b08a3ac9efd48396f3b463a19139.tar.gz
llvm-0646e3625499b08a3ac9efd48396f3b463a19139.tar.bz2
[Analyzer][solver] Fix crashes during symbol simplification
Consider the code ``` void f(int a0, int b0, int c) { int a1 = a0 - b0; int b1 = (unsigned)a1 + c; if (c == 0) { int d = 7L / b1; } } ``` At the point of divisiion by `b1` that is considered to be non-zero, which results in a new constraint for `$a0 - $b0 + $c`. The type of this sym is unsigned, however, the simplified sym is `$a0 - $b0` and its type is signed. This is probably the result of the inherent improper handling of casts. Anyway, Range assignment for constraints use this type information. Therefore, we must make sure that first we simplify the symbol and only then we assign the range. Differential Revision: https://reviews.llvm.org/D104844
Diffstat (limited to 'lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp')
0 files changed, 0 insertions, 0 deletions