Open kumarak opened 11 months ago
We patched the clang for handling the Callee that are of Builtin Type. In the case of Builtin, we get the direct callee and get the return type for it. For handling this case we may need to add further patch in clang and probably return the constructor type for the temporary object.
This is how the source code looks like:
template <class _Tp, class _Up, __enable_if_t<__is_less_than_comparable<const _Tp*, const _Up*>::value, int> = 0>
constexpr __attribute__((__visibility__("hidden"))) __attribute__((__exclude_from_explicit_instantiation__)) __attribute__((__abi_tag__("ue170004"))) __attribute__((__no_sanitize__("address"))) bool __is_pointer_in_range(
const _Tp* __begin, const _Tp* __end, const _Up* __ptr) {
if (__libcpp_is_constant_evaluated()) {
((void)0);
if (!__builtin_constant_p(__begin <= __ptr && __ptr < __end))
return false;
}
return !__less<>()(__ptr, __begin) && __less<>()(__ptr, __end);
}
where __less<>
is the class template specialization.
The serialization of the CallExpr fails while getting the
CallReturnType
. This is because the callee type is an elaborate type for Class template specialization and can't be cast toFunctionType
CallExpr node: