<?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 solver-sym-simplification-ptr-bool.cl</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>918bda12 - [analyzer] Do not assume that all pointers have the same bitwidth as void*</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Analysis/solver-sym-simplification-ptr-bool.cl#918bda12</link>
        <description>[analyzer] Do not assume that all pointers have the same bitwidth as void*This change addresses this assertion that occurs in a downstreamcompiler with a custom target.```APInt.h:1151: bool llvm::APInt::operator==(const llvm::APInt &amp;) const: Assertion `BitWidth == RHS.BitWidth &amp;&amp; &quot;Comparison requires equal bit widths&quot;&apos;```No covering test case is susbmitted with this change since this crashcannot be reproduced using any upstream supported target. The test casethat exposes this issue is as simple as:```lang=c++  void test(int * p) {    int * q = p-1;    if (q) {}    if (q) {} // crash    (void)q;  }```The custom target that exposes this problem supports two address spaces,16-bit `char`s, and a `_Bool` type that maps to 16-bits. There are no upstreamsupported targets with similar attributes.The assertion appears to be happening as a result of evaluating the`SymIntExpr` `(reg_$0&lt;int * p&gt;) != 0U` in `VisitSymIntExpr` located in`SimpleSValBuilder.cpp`. The `LHS` is evaluated to `32b` and the `RHS` isevaluated to `16b`. This eventually leads to the assertion in `APInt.h`.While this change addresses the crash and passes LITs, two follow-upsare required:  1) The remainder of `getZeroWithPtrWidth()` and `getIntWithPtrWidth()`     should be cleaned up following this model to prevent future     confusion.  2) We&apos;re not sure why references are found along with the modified     code path, that should not be the case. A more principled     fix may be found after some further comprehension of why this     is the case.Acks: Thanks to @steakhal and @martong for the discussions leading to thisfix.Reviewed By: NoQDifferential Revision: https://reviews.llvm.org/D105974

            List of files:
            /llvm-project-15.0.7/clang/test/Analysis/solver-sym-simplification-ptr-bool.cl</description>
        <pubDate>Wed, 14 Jul 2021 12:00:14 +0000</pubDate>
        <dc:creator>Vince Bridgers &lt;vince.a.bridgers@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
