diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-07-25 18:48:32 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-07-25 20:58:09 +0200 |
| commit | d0d63eb6c186fe6c37fb8a1061392512047ebaca (patch) | |
| tree | 044a12a5b3cff17175b795f4d279bd8c10298c52 /validation/linear | |
| parent | 7bd897d350147a040d2f1e88b9042884697676b5 (diff) | |
| parent | bb97ff365b6f0cbcd8ee4057ee45925094d8101d (diff) | |
| download | sparse-dev-d0d63eb6c186fe6c37fb8a1061392512047ebaca.tar.gz | |
Merge branch 'optim-cast' into tip
* several simplifications involving casts and/or bitfields
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/linear')
| -rw-r--r-- | validation/linear/bitfield-inc.c | 17 | ||||
| -rw-r--r-- | validation/linear/bitfield-preinc.c | 18 | ||||
| -rw-r--r-- | validation/linear/bitfield-store.c | 22 |
3 files changed, 57 insertions, 0 deletions
diff --git a/validation/linear/bitfield-inc.c b/validation/linear/bitfield-inc.c new file mode 100644 index 00000000..ed8efe7d --- /dev/null +++ b/validation/linear/bitfield-inc.c @@ -0,0 +1,17 @@ +struct s { + int f:5; +}; + +void inc(struct s *p) +{ + p->f++; +} + +/* + * check-name: bitfield-inc + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-excludes: add\\.5 + */ diff --git a/validation/linear/bitfield-preinc.c b/validation/linear/bitfield-preinc.c new file mode 100644 index 00000000..783327ae --- /dev/null +++ b/validation/linear/bitfield-preinc.c @@ -0,0 +1,18 @@ +struct s { + int f:3; +}; + +int preinc(void) +{ + struct s s = { 7 }; + return ++s.f; +} + +/* + * check-name: bitfield-preinc + * check-description: ++X is equivalent to X+=1 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret.32 *\\$0 + */ diff --git a/validation/linear/bitfield-store.c b/validation/linear/bitfield-store.c new file mode 100644 index 00000000..3d952c8d --- /dev/null +++ b/validation/linear/bitfield-store.c @@ -0,0 +1,22 @@ +int foo(void) +{ + struct { + int a:8; + int b:16; + int c:8; + } s = { 0xff, 0x0000, 0xff }; + + return s.b = 0x56781234; +} + +/* + * check-name: bitfield-store + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret\\..*\\$0x1234 + * + * check-error-start +linear/bitfield-store.c:9:22: warning: cast truncates bits from constant value (56781234 becomes 1234) + * check-error-end + */ |
