google-research/dex-lang
Ver no GitHubDo unsigned remainder on unsigned types
Open
#1.211 aberto em 5 de fev. de 2023
buggood first issue
Métricas do repositório
- Stars
- (1.681 stars)
- Métricas de merge de PR
- (Nenhuma PRs mesclada em 30d)
Description
Manifestation:
big = 2147483647
rem (big + 1) big
> 4294967295
Expected the answer to be 1.
(Note that big + 1 doesn't overflow the underlying Word32 -- it's just the rem operation messing up).
The cause is https://github.com/google-research/dex-lang/blob/c996e988d07f4bec0495136c9d4ca51bcb0c431c/src/lib/ImpToLLVM.hs#L614, which unconditionally emits a signed remainder instruction, regardless of whether the Dex type is meant to be signed or unsigned.