[mlir][Parser] Fix attribute parser errors for ui64
Summary: The attribute parser fails to correctly parse unsigned 64 bit attributes as the check `isNegative ? (int64_t)-val.getValue() >= 0 : (int64_t)val.getValue() < 0` will falsely detect an overflow for unsigned values larger than 2^63-1. This patch reworks the overflow logic to instead of doing arithmetic on int64_t use APInt::isSignBitSet() and knowledge of the attribute type. Test-cases which verify the de-facto behavior of the parser and triggered the previous faulty handing of unsigned 64 bit attrbutes are also added. Differential Revision: https://reviews.llvm.org/D76493
Loading
Please sign in to comment