[analyzer] LValueToRValueBitCasts should evaluate to an r-value
Previously `LValueToRValueBitCast`s were modeled in the same way how a regular `BitCast` was. However, this should not produce an l-value. Modeling bitcasts accurately is tricky, so it's probably better to model this expression by binding a fresh conjured value. The following code should not result in a diagnostic: ```lang=C++ __attribute__((always_inline)) static inline constexpr unsigned int_castf32_u32(float __A) { return __builtin_bit_cast(unsigned int, __A); // no-warning } ``` Previously, it reported `Address of stack memory associated with local variable '__A' returned to caller [core.StackAddressEscape]`. Differential Revision: https://reviews.llvm.org/D105017 Reviewed by: NoQ, vsavchenko
Loading
Please sign in to comment