The NetBSD Project

CVS log for src/tests/usr.bin/xlint/lint1/msg_132.c

[BACK] Up to [cvs.NetBSD.org] / src / tests / usr.bin / xlint / lint1

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.46: download - view: text, markup, annotated - select for diffs
Sat Oct 12 09:45:26 2024 UTC (7 weeks, 4 days ago) by rillig
Branches: MAIN
CVS tags: HEAD
Diff to: previous 1.45: preferred, colored
Changes since revision 1.45: +9 -20 lines
lint: reduce wrong warnings about loss of accuracy in signed '%'

Revision 1.45: download - view: text, markup, annotated - select for diffs
Sat Oct 12 06:48:30 2024 UTC (7 weeks, 4 days ago) by rillig
Branches: MAIN
Diff to: previous 1.44: preferred, colored
Changes since revision 1.44: +135 -102 lines
tests/lint: extend test for integer constraints

Revision 1.44: download - view: text, markup, annotated - select for diffs
Tue Oct 8 19:50:49 2024 UTC (8 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.43: preferred, colored
Changes since revision 1.43: +3 -7 lines
lint: compute integer constraints for unsigned multiplication

This fixes the wrong warning about possible loss of accuracy in
libc/c16rtomb.

Revision 1.43: download - view: text, markup, annotated - select for diffs
Tue Oct 8 19:39:54 2024 UTC (8 weeks, 1 day ago) by rillig
Branches: MAIN
Diff to: previous 1.42: preferred, colored
Changes since revision 1.42: +22 -3 lines
tests/lint: test integer constraint on multiplication

Revision 1.42: download - view: text, markup, annotated - select for diffs
Sun Aug 18 15:21:09 2024 UTC (3 months, 2 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.41: preferred, colored
Changes since revision 1.41: +1 -2 lines
lint: add value propagation for '/' combined with bit operations

Fixes __SHIFTIN/__SHIFTOUT expressions, as in PR toolchain/58617.

Revision 1.41: download - view: text, markup, annotated - select for diffs
Sun Aug 18 15:11:43 2024 UTC (3 months, 2 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.40: preferred, colored
Changes since revision 1.40: +8 -1 lines
tests/lint: demonstrate wrong warning about accuracy loss

Demonstrates PR toolchain/58617.

Revision 1.40: download - view: text, markup, annotated - select for diffs
Wed May 1 05:49:33 2024 UTC (7 months ago) by rillig
Branches: MAIN
CVS tags: perseant-exfatfs-base-20240630, perseant-exfatfs-base, perseant-exfatfs
Diff to: previous 1.39: preferred, colored
Changes since revision 1.39: +5 -4 lines
lint: fix warning about out-of-bounds bit-field value

Revision 1.39: download - view: text, markup, annotated - select for diffs
Wed May 1 05:38:11 2024 UTC (7 months ago) by rillig
Branches: MAIN
Diff to: previous 1.38: preferred, colored
Changes since revision 1.38: +4 -1 lines
lint: demonstrate wrong warning about out-of-range bit-field

Revision 1.38: download - view: text, markup, annotated - select for diffs
Mon Mar 25 23:39:14 2024 UTC (8 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.37: preferred, colored
Changes since revision 1.37: +15 -9 lines
lint: fix warnings about loss of accuracy on bit-field operations

Revision 1.37: download - view: text, markup, annotated - select for diffs
Mon Mar 25 22:46:23 2024 UTC (8 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.36: preferred, colored
Changes since revision 1.36: +18 -1 lines
tests/lint: demonstrate wrong warnings about lossy bit field operations

Revision 1.36: download - view: text, markup, annotated - select for diffs
Tue Mar 12 20:35:29 2024 UTC (8 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.35: preferred, colored
Changes since revision 1.35: +19 -9 lines
tests/lint: extend test for previously wrong warning about bit-fields

Revision 1.35: download - view: text, markup, annotated - select for diffs
Tue Mar 12 07:56:08 2024 UTC (8 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.34: preferred, colored
Changes since revision 1.34: +4 -5 lines
lint: fix warning about loss of conversion for unsigned bit-fields

Since decl.c 1.180 from 2021-05-02.

Revision 1.34: download - view: text, markup, annotated - select for diffs
Tue Mar 12 07:29:39 2024 UTC (8 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.33: preferred, colored
Changes since revision 1.33: +17 -1 lines
tests/lint: demonstrate wrong warning when comparing a bit-field

Since decl.c 1.180 from 2021-05-02, which allowed arbitrary integer
types to be used as the underlying type for bit-fields in GCC mode.

Revision 1.33: download - view: text, markup, annotated - select for diffs
Sun Jan 28 08:17:27 2024 UTC (10 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.32: preferred, colored
Changes since revision 1.32: +3 -3 lines
tests/lint: sort multiple diagnostics per line chronologically

For now, the chronologic order is not enforced but has to be established
manually, for example by removing all 'expect' comment lines and
regenerating them with 'accept.sh -u'.

While here, clean up a few instances that came up when regenerating the
'expect' comments, such as wrong indentation or needless deviation from
the 'expect+1' form.

Revision 1.32: download - view: text, markup, annotated - select for diffs
Sun Aug 6 19:44:50 2023 UTC (15 months, 4 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.31: preferred, colored
Changes since revision 1.31: +2 -2 lines
lint: since C99, a non-void function must return a value

Revision 1.31: download - view: text, markup, annotated - select for diffs
Sat Jun 3 20:28:54 2023 UTC (18 months ago) by rillig
Branches: MAIN
Diff to: previous 1.30: preferred, colored
Changes since revision 1.30: +2 -2 lines
lint: provide more detailed types when operands do not match

Revision 1.30: download - view: text, markup, annotated - select for diffs
Tue May 9 15:51:33 2023 UTC (18 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +9 -6 lines
lint: track integer constraints through conditional expressions

Revision 1.29: download - view: text, markup, annotated - select for diffs
Tue May 9 15:45:06 2023 UTC (18 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +1 -3 lines
lint: preserve integer constraints on cast

Revision 1.28: download - view: text, markup, annotated - select for diffs
Tue May 9 15:37:29 2023 UTC (18 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +10 -1 lines
tests/lint: demonstrate wrong warning about loss of accuracy

Revision 1.27: download - view: text, markup, annotated - select for diffs
Tue May 9 14:46:36 2023 UTC (18 months, 3 weeks ago) by rillig
Branches: MAIN
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +28 -1 lines
tests/lint: demonstrate wrong warning about losing accuracy

Revision 1.26: download - view: text, markup, annotated - select for diffs
Tue Mar 28 14:44:34 2023 UTC (20 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +3 -1 lines
lint: warn about extern declarations outside headers

https://mail-index.netbsd.org/tech-userlevel/2023/03/15/msg013727.html

Revision 1.25: download - view: text, markup, annotated - select for diffs
Sun Jan 29 17:02:09 2023 UTC (22 months ago) by rillig
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +18 -1 lines
tests/lint: merge tests for '>>'

Revision 1.24: download - view: text, markup, annotated - select for diffs
Thu Jul 7 18:11:29 2022 UTC (2 years, 4 months ago) by rillig
Branches: MAIN
CVS tags: netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +18 -1 lines
tests/lint: document why in ic_expr, '&' does not need before_conversion

Revision 1.23: download - view: text, markup, annotated - select for diffs
Wed Jul 6 22:26:31 2022 UTC (2 years, 4 months ago) by rillig
Branches: MAIN
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +21 -6 lines
lint: do not warn about 'may lose accuracy' in safe cases of '%'

The possible values of the expression 'a % b' for unsigned integers lie
between 0 and (b - 1).  For signed integers, it's more complicated, so
ignore them for now.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Wed Jul 6 21:59:06 2022 UTC (2 years, 4 months ago) by rillig
Branches: MAIN
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +61 -13 lines
tests/lint: test 'may lose accuracy' for '%'

For unsigned integers, the possible range of the result can be narrowed
down by looking at the right operand of the '%'.  Right now, lint
doesn't do this though.

Revision 1.21: download - view: text, markup, annotated - select for diffs
Sun Jul 3 14:35:54 2022 UTC (2 years, 5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +3 -3 lines
lint: include the width of bit-fields in the type name

Revision 1.20: download - view: text, markup, annotated - select for diffs
Sat Jul 2 09:48:18 2022 UTC (2 years, 5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +43 -15 lines
tests/lint: test bit shift with large integer types

build_bit_shift converts the right-hand operand to INT or UINT, even
though C11 6.5.7 doesn't say anything about narrowing conversions.

Traditional C says that the operators '<<' and '>>' perform the usual
arithmetic conversions.  This has been dropped in C90.

What lint actually does is something completely different.  In the
operators table in ops.def, the operators '<<' and '>>' are not marked
as performing the usual arithmetic conversions (column 'balance').  This
leaves all conversions to 'build_bit_shift', which converts the
right-hand side to INT or UINT.  There is no obvious reason for this
conversion, as the bounds checks need to be performed no matter whether
the type is INT or UINT128.

Revision 1.19: download - view: text, markup, annotated - select for diffs
Sun Jun 19 12:14:34 2022 UTC (2 years, 5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +2 -2 lines
lint: add quotes around placeholders in 4 messages

Revision 1.18: download - view: text, markup, annotated - select for diffs
Thu Jun 16 16:58:36 2022 UTC (2 years, 5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +49 -25 lines
tests/lint: make expectation lines in the tests more detailed

This commit migrates msg_100 until msg_199.

Revision 1.17: download - view: text, markup, annotated - select for diffs
Fri Jun 10 18:29:01 2022 UTC (2 years, 5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +4 -12 lines
tests/lint: fix test for loss of accuracy on ILP32 platforms

The test had been wrong since msg_132.c 1.14 from 2022-05-30.

Using 'unsigned long' in a test that was intended to behave the same on
ILP32 and LP64 was an accident.  Use 'unsigned long long' instead, which
is 64-bits wide on all platforms supported by lint.

Move the test about conversion from 'long' to 'int' to the
platform-specific test files.

Noticed by martin@ on powerpc.

Revision 1.16: download - view: text, markup, annotated - select for diffs
Mon May 30 07:19:28 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +9 -1 lines
lint: fix assertion failure in '(unsigned long)(ptr) >> 12'

Since tree.c 1.449 from 2022-05-26.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Sun May 29 23:24:09 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +2 -27 lines
lint: fix wrong errors about sizeof of a bit-field (since 2022-05-26)

Revision 1.14: download - view: text, markup, annotated - select for diffs
Sun May 29 23:09:43 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +46 -1 lines
tests/lint: demonstrate wrong errors 'size/alignment of bit-field'

Since tree.c 1.444 from 2022-05-26, which added range and bit checks for
integer expressions, not taking into account that querying for the size
of a bit-field type triggers an error message.

Revision 1.13: download - view: text, markup, annotated - select for diffs
Thu May 26 20:17:40 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +1 -2 lines
lint: do not warn about 'uint32_t = uint64_t >> 32'

If all possible values fit into the destination type, there is no
possibility of losing accuracy.

Enhances PR 36668.

Revision 1.12: download - view: text, markup, annotated - select for diffs
Thu May 26 19:55:57 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +14 -1 lines
tests/lint: demonstrate wrong warnings about loss of accuracy

Revision 1.11: download - view: text, markup, annotated - select for diffs
Thu May 26 09:26:00 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +12 -4 lines
lint: do not warn about loss in accuracy if the actual value fits

The expression 'any & 0xff' can always be assigned to 'uint8_t' without
loss of any value bits.  In the same way, '(any & 0xff) << 8' can always
be assigned to 'uint16_t'.

Previously, lint warned about these cases.  Fix these wrong warnings by
tracking the possible values of integer expressions across a single
expression.

Fixes PR 36668, so that <sys/endian.h> does not need to be cluttered
with useless casts anymore.

Revision 1.10: download - view: text, markup, annotated - select for diffs
Thu May 26 07:03:03 2022 UTC (2 years, 6 months ago) by rillig
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +35 -1 lines
tests/lint: demonstrate wrong 'may lose accuracy' warning

Reported in PR 36668, fixed in sys/sys/endian.h 1.26 from 2007-07-20,
unfixed in sys/sys/endian.h 1.29 from 2014-03-18.

Revision 1.9: download - view: text, markup, annotated - select for diffs
Thu Apr 21 19:48:18 2022 UTC (2 years, 7 months ago) by rillig
Branches: MAIN
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +86 -46 lines
tests/lint: extend test for lossy integer conversion

Revision 1.8: download - view: text, markup, annotated - select for diffs
Wed Apr 20 22:50:56 2022 UTC (2 years, 7 months ago) by rillig
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +3 -3 lines
tests/lint: fix test for message 132 to be platform-independent

On i386, the test failed because the warning in line 101 was not
generated.  This was because size_t on i386 is unsigned int (see
arch/i386/targparam.h, SIZEOF_TSPEC). The result of the multiplication
had type unsigned int, and message 132 does not trigger for a conversion
from unsigned int to signed int because both types have the same size
(see check_integer_conversion, portable_size_in_bits).

Change the involved type from size_t (which the original code used) to
unsigned long long (which is uint64_t on all platforms supported by
lint), so that the warning is generated on all platforms in the same
way.

Revision 1.7: download - view: text, markup, annotated - select for diffs
Tue Apr 19 22:40:13 2022 UTC (2 years, 7 months ago) by rillig
Branches: MAIN
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +16 -1 lines
tests/lint: add test case for integer non-constant expression

Seen in sqlite3.c.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Wed Aug 25 22:04:52 2021 UTC (3 years, 3 months ago) by rillig
Branches: MAIN
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +12 -1 lines
tests/lint: test conversion from long long to intptr_t on ilp32

Seen in usr.bin/make/var.c:1608.

Revision 1.5: download - view: text, markup, annotated - select for diffs
Tue Apr 6 21:17:28 2021 UTC (3 years, 7 months ago) by rillig
Branches: MAIN
CVS tags: cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +7 -2 lines
lint: fix wrong warning about losing accuracy when converting to _Bool

Revision 1.4: download - view: text, markup, annotated - select for diffs
Tue Apr 6 21:10:37 2021 UTC (3 years, 7 months ago) by rillig
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +8 -1 lines
tests/lint: demonstrate wrong warning about losing accuracy

Revision 1.3: download - view: text, markup, annotated - select for diffs
Sun Feb 28 21:39:17 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +60 -3 lines
tests/lint: add test for narrowing conversions

Lint can warn about narrowing conversions, it just doesn't do so by
default.

The option -a (which is included in the default LINTFLAGS in sys.mk)
only reports narrowing conversions from 'long' or larger.  To get
warnings about all possible narrowing conversions, the option -a has to
be given more than once.

PR bin/14531

Revision 1.2: download - view: text, markup, annotated - select for diffs
Sun Feb 21 09:07:58 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +2 -2 lines
lint: force each test to declare the expected diagnostics

By listing the expected diagnostics directly at the code that triggers
the diagnostics, it is easier to cross-check whether the diagnostics
make sense.

No functional change to lint itself.

Revision 1.1: download - view: text, markup, annotated - select for diffs
Sat Jan 2 10:22:43 2021 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
lint: add a test for each message produced by lint1

Having a test for each message ensures that upcoming refactorings don't
break the basic functionality.  Adding the tests will also discover
previously unknown bugs in lint.

The tests ensure that every lint message can actually be triggered, and
they demonstrate how to do so.  Having a separate file for each test
leaves enough space for documenting historical anecdotes, rationale or
edge cases, keeping them away from the source code.

The interesting details of this commit are in Makefile and
t_integration.sh.  All other files are just auto-generated.

When running the tests as part of ATF, they are packed together as a
single test case.  Conceptually, it would have been better to have each
test as a separate test case, but ATF quickly becomes very slow as soon
as a test program defines too many test cases, and 50 is already too
many.  The time complexity is O(n^2), not O(n) as one would expect.
It's the same problem as in tests/usr.bin/make, which has over 300 test
cases as well.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>