Since now we just ignore all (implicit) integral casts, treating the
resulting value as the same as the underlying value, it could cause
inconsistency between values after Join if in some paths the type
doesn't strictly match. This could cause intermittent crashes.
std::optional<bool> o; int x; if (o.has_value()) { x = o.value(); }
Fixes: https://github.com/llvm/llvm-project/issues/59728
Signed-off-by: Jun Zhang <jun@junz.org>