<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in constraint_manager_conditions.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>792be5df - [analyzer][solver] Fix CmpOpTable handling bug</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Analysis/constraint_manager_conditions.cpp#792be5df</link>
        <description>[analyzer][solver] Fix CmpOpTable handling bugThere is an error in the implementation of the logic of reaching the `Unknonw` tristate in CmpOpTable.```void cmp_op_table_unknownX2(int x, int y, int z) {  if (x &gt;= y) {                    // x &gt;= y    [1, 1]    if (x + z &lt; y)      return;                    // x + z &lt; y [0, 0]    if (z != 0)      return;                    // x &lt; y     [0, 0]    clang_analyzer_eval(x &gt; y);  // expected-warning{{TRUE}} expected-warning{{FALSE}}  }}```We miss the `FALSE` warning because the false branch is infeasible.We have to exploit simplification to discover the bug. If we had `x &lt; y`as the second condition then the analyzer would return the parent stateon the false path and the new constraint would not be part of the State.But adding `z` to the condition makes both paths feasible.The root cause of the bug is that we reach the `Unknown` tristatetwice, but in both occasions we reach the same `Op` that is `&gt;=` in thetest case. So, we reached `&gt;=` twice, but we never reached `!=`, thusquerying the `Unknonw2x` column with `getCmpOpStateForUnknownX2` iswrong.The solution is to ensure that we reached both **different** `Op`s once.Differential Revision: https://reviews.llvm.org/D110910

            List of files:
            /llvm-project-15.0.7/clang/test/Analysis/constraint_manager_conditions.cpp</description>
        <pubDate>Thu, 30 Sep 2021 21:26:22 +0000</pubDate>
        <dc:creator>Gabor Marton &lt;gabor.marton@ericsson.com&gt;</dc:creator>
    </item>
<item>
        <title>e1741e34 - [analyzer] Reasoning about comparison expressions in RangeConstraintManager</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Analysis/constraint_manager_conditions.cpp#e1741e34</link>
        <description>[analyzer] Reasoning about comparison expressions in RangeConstraintManagerSummary:Implemented RangeConstraintManager::getRangeForComparisonSymbol which handles comparison operators.RangeConstraintManager::getRangeForComparisonSymbol cares about the sanity of comparison expressions sequences helps reasonably to branch an exploded graph.It can significantly reduce the graph and speed up the analysis. For more details, please, see the differential revision.This fixes https://bugs.llvm.org/show_bug.cgi?id=13426Differential Revision: https://reviews.llvm.org/D78933

            List of files:
            /llvm-project-15.0.7/clang/test/Analysis/constraint_manager_conditions.cpp</description>
        <pubDate>Mon, 15 Jun 2020 12:31:10 +0000</pubDate>
        <dc:creator>Denys Petrov &lt;dpetrov@accesssoftek.com&gt;</dc:creator>
    </item>
</channel>
</rss>
