<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62285>62285</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang static analysis: Assertion "argument of incompatible type" failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jstengleingithub
      </td>
    </tr>
</table>

<pre>
    See assertion failure with clang static analysis.  Source file and command attached.

Traceback details:
```console
./try3.sh
clang: /nobackup/jstengle/lat2/llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From &) [To = clang::ento::nonloc::ConcreteInt, From = clang::ento::SVal]: Assertion `is\
a<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
Stack dump:
1.      <eof> parser at end of file
2. While analyzing stack:
        #0 Calling __memdbg_malloc_opts
3. foo.c:23:11: Error evaluating statement
4.      foo.c:23:11: Error evaluating statement
 #0 0x00007faef61ad0d7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/nobackup/jstengle/lat2/llvm-project/inst/bin/../lib/libLLVM-17git.so+0xb220d7)
 #1 0x00007faef61aaf9e llvm::sys::RunSignalHandlers() (/nobackup/jstengle/lat2/llvm-project/inst/bin/../lib/libLLVM-17git.so+0xb1ff9e)
 #2 0x00007faef61ad78f SignalHandler(int) Signals.cpp:0:0
 #3 0x00007faf0281ccf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #4 0x00007faef4d79aff raise (/lib64/libc.so.6+0x4eaff)
 #5 0x00007faef4d4cea5 abort (/lib64/libc.so.6+0x21ea5)
 #6 0x00007faef4d4cd79 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d79)
 #7 0x00007faef4d72456 (/lib64/libc.so.6+0x47456)
 #8 0x00007faf0113c00f void clang::ento::check::PreCall::_checkCall<(anonymous namespace)::MmapWriteExecChecker>(void*, clang::ento::CallEvent const&, clang::ento::CheckerContext&) MmapWriteExecChecker.cpp\
:0:0
 #9 0x00007faf00e86cb0 clang::ento::CheckerManager::runCheckersForCallEvent(bool, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet const&, clang::ento::CallEvent const&, clang::ento::ExprEngine&\
, bool) (/nobackup/jstengle/lat2/llvm-project/inst/bin/../lib/libclang-cpp.so.17git+0x30eecb0)
#10 0x00007faf00edb51e clang::ento::ExprEngine::evalCall(clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNode*, clang::ento::CallEvent const&) (/nobackup/jstengle/lat2/llvm-project/inst/bin/../lib/libc\
lang-cpp.so.17git+0x314351e)
#11 0x00007faf00edb354 clang::ento::ExprEngine::VisitCallExpr(clang::CallExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/nobackup/jstengle/lat2/llvm-project/inst/bin/../lib/libcla\
ng-cpp.so.17git+0x3143354)
```
```console
clang "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-analyze" "-analyzer-checker=core" "-analyzer-checker=apiModeling" "-analyzer-checker=unix" "-analyzer-checker=deadcode" "-analyzer-checker=security.insecureAPI.UncheckedReturn" "-analyzer-checker=security.insecureAPI.getpw" "-analyzer-checker=security.insecureAPI.gets" "-analyzer-checker=security.insecureAPI.mktemp" "-analyzer-checker=security.insecureAPI.mkstemp" "-analyzer-checker=security.insecureAPI.vfork" "-analyzer-checker=nullability.NullPassedToNonnull" "-analyzer-checker=nullability.NullReturnedFromNonnull" "-analyzer-output" "plist" "-w" "-setup-static-analyzer" "-analyzer-config-compatibility-mode=true"  "-target-cpu" "x86-64" "-tune-cpu" "generic"    "-analyzer-opt-analyze-headers" "-analyzer-output=plist-multi-file" "-analyzer-config" "expand-macros=true" "-analyzer-checker=alpha.core.BoolAssignment,alpha.core.CastSize,alpha.core.Conversion,alpha.core.DynamicTypeChecker,alpha.core.SizeofPtr,alpha.core.TestAfterDivZero,alpha.cplusplus.DeleteWithNonVirtualDtor,alpha.cplusplus.EnumCastOutOfRange,alpha.cplusplus.InvalidatedIterator,alpha.cplusplus.IteratorRange,alpha.cplusplus.MismatchedIterator,alpha.cplusplus.STLAlgorithmModeling,alpha.cplusplus.SmartPtr,alpha.security.MmapWriteExec,alpha.security.ReturnPtrRange,alpha.security.cert.env.InvalidPtr,alpha.security.cert.pos.34c,alpha.security.taint.TaintPropagation,alpha.unix.BlockInCriticalSection,alpha.unix.Chroot,alpha.unix.Errno,alpha.unix.PthreadLock,alpha.unix.Stream,alpha.unix.cstring.NotNullTerminated,alpha.unix.cstring.OutOfBounds,core.CallAndMessage,core.DivideZero,core.NonNullParamChecker,core.NullDereference,core.StackAddressEscape,core.UndefinedBinaryOperatorResult,core.VLASize,core.uninitialized.ArraySubscript,core.uninitialized.Assign,core.uninitialized.Branch,core.uninitialized.CapturedBlockVariable,core.uninitialized.NewArraySize,core.uninitialized.UndefReturn,cplusplus.InnerPointer,cplusplus.Move,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,cplusplus.PlacementNew,cplusplus.PureVirtualCall,cplusplus.StringChecker,deadcode.DeadStores,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,nullability.NullableDereferenced,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,optin.cplusplus.UninitializedObject,optin.cplusplus.VirtualCall,optin.mpi.MPI-Checker,optin.portability.UnixAPI,security.FloatLoopCounter,security.insecureAPI.UncheckedReturn,security.insecureAPI.getpw,security.insecureAPI.gets,security.insecureAPI.mkstemp,security.insecureAPI.mktemp,security.insecureAPI.rand,security.insecureAPI.vfork,unix.API,unix.Malloc,unix.MallocSizeof,unix.MismatchedDeallocator,unix.Vfork,unix.cstring.BadSizeArg,unix.cstring.NullArg,valist.CopyToSelf,valist.Uninitialized,valist.Unterminated" "-x" "c" "foo.c"
```
```console
clang --version
clang version 17.0.0 (https://github.com/llvm/llvm-project be17209052aa49f43df69e1b8d55bae16f341ee0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```

```c
typedef long int __off_t;
typedef long int __off64_t;
typedef long int __ssize_t;
typedef __ssize_t ssize_t;
typedef long unsigned int size_t;
typedef __off_t off_t;
typedef __off64_t off64_t;
typedef struct malloc_mmap_2 {
    int prot;
} malloc_mmap_st_2;
[repro.zip](https://github.com/llvm/llvm-project/files/11297768/repro.zip)



extern void *mmap (void *__addr, size_t __len, int __prot,
                     int __flags, int __fd, __off64_t __offset);

int __memdbg_malloc_opts(int cmd, void *arg2);

int __memdbg_malloc_opts (int cmd, void *arg2)
{
 malloc_mmap_st_2* args2 = arg2;
    void *buf = ((void*)0);
    buf = mmap((void*)0, 1, args2->prot, 1, 1, 1);
    return 0;
}
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0GV1v46ry19AXFMvG-XzoQ5o0uiu13eqk2yPdl4jAOOEUgwW4TfbXXwF2Plqnuz3au9o69swwzLdnMLVWbBTANRrcoMH8itZuq831P9aB2kgQaiPctl5frTXfXy8BMLUWjBNa4YIKWRvAb8JtMZNUbbB11AmGqaJyb4VNMF7q2jDAhZCAqeKY6bL0v9Q5yrbAE5TOUTqN1ydDGawpe8EcHBXSorzBoGEa_zOtrJYQoQkiC2f2eWK3ERCkQPkUI7JQ2nOqK0QWrTaILCR1xP_I17JXGf0PMNc8IrIQismawxGwrKtKG08xo9YJtUm2KJ8OhkO_Bwcm3b4CRMa0dhqRCQ7L8inKp4xah8jYi-vwwugSIzL0JGhw86Qxyue4FRblU1BOxzulldQs3s-0YgYcfFMOkVnD5dLC5TOVaDD3gk0PLkLDVFg0mEXrUJTPnjTKbxEZe2ovjRdqiBEhQeB89rSPeI-kZlOXoBzWBRaK6bKiTqwl4Kh1hghBZBTi4ODIpQvuq8vq4LssweEfymegC5Tf4ooaCwZTh0Fxz92HRyQmCf57G4OFyv1PEYOKvRy44eYfInmKZ1RKT7JalVDy9WZVUik1W-nK2UieJ7jQOvEWJTnKp1nmLXRrjDYYXqmsqWv2cOB1jav6jcj_YmkULN2laZqOCgrFMKM85aOT2LB7G28ejVAuWCxEPiLjI5GhbyttnQFaBifNsPBh4F02_mJ0C-VjcbEWCpFF4pNGinW83t093_ey0Ua4xGpEbtLdmpCUjxCZHNXJ3qlDiwl0qfNXrZZio6j8D1VcgrFNHP2_Jc6KYgJnEpP3DhiNC3wmGyLjxp4RbBNW-ZBNw9-BUX5kVKRknDFWpHi1MmCdNrAyrlFOivWwH38rtzVAeWJ1kgb5MsKK9Ey8_ql4fT6a0KLAhgoLH9kxz2gYGPWBFsUZo8E5oz4DOsB0rbvkOmFEMqCDM0bD94z4aIJXSq6kpnzFdUmFSpiWPEl_wZmPJmecR-90Jf3B8HMtR_3B8IzF-NQJWZazNC3wqxa8uxKyLcR64RMMfImID6uAiM8zX7SVVvtS1xYrWoKtQgZOIu19Sau_jXBwuwM28-vAxMLo90Vk6hOyc3fP__bVV81Q-5vc7SaNfGdaOdi55v3QtXOIzbaKfwzSyal9UhgP2Tr9dMd7qujGKxQKTa0asF1ocxAfkfFaa3lR-NtdJTUH_qA5LOFTPd-R_oZhft-Gt7vK3KqNUOCpDjYiMxyl_8PVJ8jQY1Xl4zVUoRCzeQrA1sck90UzPfcKXw8y-KUOEfNKZQhTMv6Tpv9q1P5p0x28c8GGWT8fZHBmw-y9DfNB__ds-CyscEGrXWXODdlCW1UvW-V3rdflkD8feAf7XbJePugfrdc2zJ_1z7FpR4T0GPPdXLh1RlRexvC0Gw9Xw36vVi9Kv6meFKre9TaqboljlwbvHk2PtSVzzrT5DE0rca85-C7uE6paid0naA6Us-CjiyQWWG2E2ydChVuYPn5LfqhIwP8CVxv11eUbcNXbv1hkv7qmfHFQVl9fZf_NstdCm5dPFqlaSroW0q97qKV89BMhf9IPWnnUF1ZGqwP3g82l1bp2Ve0acCWFbe97B8tbcHXVi6PnYeFHMbQqxKbXTjFBil7pgyafO1OH2InxT80GXI9V9TEHer5PadKjVnCC3IACI1hYjd-JXrn2obcFykND3K1ePg-q9cpaOtEL01C3_A0YdhVVvFdSZrQ9UeBSkslqSxOficmN1nIaZv4wspDZCc7PuEvhs_kMqtUrGCu0OofP94qWgj3tK2gbpDO856SLR_cO_ATWTQsHZi5e_wtGH7GVrK3_S-YgwcHfwm0ftHoWxtVUzp02HaS3qi692N9r9734i6oNdBB9U69UCk4d8G8ODO1m1aIucbkXtqSObT9lsny6m8qNNsJty2Nd-0hWUuNOTXPIxLP27yM6psyjeyflAc_AuATUa6tz5x6BqNI2yfsdWzgqlEue_PXR6IpuqDv1vS_FyY3U7OWbmhnhBKNyCewjzWxrtHbnsFtjlD4HPcZx6U6zl3PEspl9T2HMOiPUJnnQzheQJzClUN6v3WQhKm50rbhFZNbEuJRTxe_BWhoMGGNZvAoOTTgGyINWsbgZWh7DO6JqKedgoAADih14hDl-yrkBa28to9UB80NxKIQCfiMUNfvvVRNoYGvpWqLnu2mTe-GxVkIJJ6gUP4EnU2PoflmvLTOichdoQlZ3424MVWzbjZvRytUGePDpMzWCruUFMR7gLUpyUdCgavs2nZ2moALzqIVy0Y7HrNKvcAZ4gLeY_93QO6Av9gz1KCkL5y8P8HaOqA001SN20ye4ZQiQo2PbDiKZA-VLP9v7TX75qvtA0flK-0DlLXwSQfwCya-381TdW-rK-Yn9oPCPUzd9X8eG8wPVubkitqxEcv_4rXc0VoRX2rhWlh9K7KaP3xCZHcrIQmrq7rSuZrpuvP57PVg3WdNrXUTaS7hDF3QJ_RnWUMUv4Zo-aRYqTlQ-3N6HI8jzp_guPMAOb5I5BHTzMgnI51O2bSG7odyzmJrNe4yPggj29d66ZKar_ZNegiyOsDPnn4LdSQGN3UPbZrPmN56AEvLlqaLXa7uGE2ADwtkoSeNJ0ta5KhwfkgUii_ixIWG6PJ7Bn85IeA3ZiKSTdEAo7U-Kfs6L4QSy9ZgPBmsK2bDI-xnAcRJ_Ct0cyqf44igT6cJbCPuGUHrqSlux61b6nerx2e0r4FBgqdUGC-XwaqWLYuVQfvMZwbD_OYm14id0kBww-BJFYFKr8HWHB24XWQVBcbe4BynxJWmtMzVzuDl5L0tarQhGo5vjcb3fvDL6uBSN5mf01q3IETm4MVAZnfwUFRrMvxwjiCx8A20RWWQZmYxGQz-GH1keJuQPV9g5MCqeLCIy9aLh5sTPP69WlHOfp40l8WolQTUn83i1CiqS9gQqnaB0glv1V6tC0o09Ehc-D0-sG-4suHACeXMqVaTv-L4RTrAxKwOnVkhqNuT3eeDPmTTOal35wWVkiqnZWBK-SoVF-YnbW27ruggE4TzkeH46SU_l9AtaQr9BB_EMZ_4Sduyh_Laxd4S2l3OOJrxTcHoaeZ1JfcWvcz7JJ_QKrrPhmKSTUUrI1fZ6zfoZFAMYDfusyOk4HQ5IXvDxmg2GBaPkSlyTlORpn2TZKE1JlvSLfkZHEz6CdLAej1LUT6GkQiY-SBNtNlfC2hquh4SMB1eSrkHa8PWVEAVvOCB9wR3Mr8x1COx1vbGon_qabY9cnHASrmdd313ffQQk5Bdf8kj7De-qNvL6y-kWRPb5FlT6XwAAAP__V0PXXw">