[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 4/4] dfa: prefer signed integers for internals
From: |
Bruno Haible |
Subject: |
Re: [PATCH 4/4] dfa: prefer signed integers for internals |
Date: |
Thu, 12 Dec 2019 02:21:55 +0100 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-166-generic; KDE/5.18.0; x86_64; ; ) |
Hi Paul,
> Prefer a signed to an unsigned integer when calculating indexes,
In the other mail you ask for objections:
> I'd also like to change dfa.h's API to prefer ptrdiff_t to size_t, for
> the same integer-overflow reason. This would be a (minor) API change so
> I thought I'd ask first. Any objections?
I'd like to remind the objection I voiced in [1][2], and suggest to use a
typedef equivalent to ptrdiff_t, not ptrdiff_t directly, for variables
that SHOULD only take on values >= 0.
Rationale (summarized):
1) Make it easier to understand and review the code in the future.
2) Standards change over time.
3) Help the compiler produce better code or better warnings through
range types.
It's quite possible that clang will have range types, 5 years from now.
(clang already has knowledge about which types are signed [3]
and which pointer types include the NULL value [4].)
4) Help static analysis tools produce better warnings as well.
Last time we were trying to find a good name for this typedef. How about
typedef ptrdiff_t uptrdiff_t;
?
Bruno
[1] http://lists.gnu.org/archive/html/bug-gnulib/2017-06/msg00009.html
[2] https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00039.html
[3] __is_unsigned in
https://clang.llvm.org/docs/LanguageExtensions.html#type-trait-primitives
[4] https://clang-analyzer.llvm.org/annotations.html#attr_nonnull
- [PATCH 1/4] dfa: separate parse and compile phase, Paul Eggert, 2019/12/11
- [PATCH 2/4] dfa: update commentary for previous change, Paul Eggert, 2019/12/11
- [PATCH 3/4] dfa: fix index overflow, Paul Eggert, 2019/12/11
- [PATCH 4/4] dfa: prefer signed integers for internals, Paul Eggert, 2019/12/11
- Re: [PATCH 4/4] dfa: prefer signed integers for internals,
Bruno Haible <=
- Re: [PATCH 4/4] dfa: prefer signed integers for internals, Paul Eggert, 2019/12/11
- Re: range types, ptrdiff_t, signed integers for internals, Bruno Haible, 2019/12/12
- Re: range types, ptrdiff_t, signed integers for internals, Paul Eggert, 2019/12/12
- Re: range types, ptrdiff_t, signed integers for internals, Bruno Haible, 2019/12/12