diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-01-31 21:56:35 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-02-04 00:35:03 +0100 |
commit | 3b246718ea3341a09fe6f7ecba5a9a882c590452 (patch) | |
tree | d8886d0ed25c394a059d502f3e66fb5b708ff8a7 | |
parent | 2889393c78c586ae63f0f0af1754b2d8edf83dd2 (diff) | |
download | sparse-3b246718ea3341a09fe6f7ecba5a9a882c590452.tar.gz |
target.c: ignore -m64 on archs where int32_t is a long
If the flag '-m64' is used on a 32-bit architecture/machine having
int32_t set to 'long', then these int32_t are forced to 64-bit ...
So, ignore the effect of -m64 on these archs and ignore
'64-bit only' tests on them.
Reported-by: Uwe Kleine-König <uwe@kleine-koenig.org>
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Tested-by: Uwe Kleine-König <uwe@kleine-koenig.org>
-rw-r--r-- | target.c | 1 | ||||
-rw-r--r-- | validation/call-inlined.c | 1 | ||||
-rw-r--r-- | validation/cast-kinds-check.c | 1 | ||||
-rw-r--r-- | validation/cast-weirds.c | 1 | ||||
-rw-r--r-- | validation/compound-assign-type.c | 2 | ||||
-rw-r--r-- | validation/constant-suffix-64.c | 1 | ||||
-rw-r--r-- | validation/enum-bounds.c | 1 | ||||
-rw-r--r-- | validation/enum-sign-gcc.c | 1 | ||||
-rw-r--r-- | validation/expand/builtin-expect.c | 1 | ||||
-rw-r--r-- | validation/linear/bitfield-size.c | 1 | ||||
-rw-r--r-- | validation/linear/bool-cast-lp64.c | 1 | ||||
-rw-r--r-- | validation/linear/bool-cast.c | 1 | ||||
-rw-r--r-- | validation/linear/call-complex-pointer.c | 1 | ||||
-rw-r--r-- | validation/linear/cast-constants.c | 1 | ||||
-rw-r--r-- | validation/linear/degen-array.c | 1 | ||||
-rw-r--r-- | validation/linear/degen-function.c | 1 | ||||
-rw-r--r-- | validation/linear/deref-ptr-ptr.c | 1 | ||||
-rw-r--r-- | validation/linear/logical.c | 1 | ||||
-rw-r--r-- | validation/optim/cast-kinds.c | 1 |
19 files changed, 20 insertions, 0 deletions
@@ -86,6 +86,7 @@ void init_target(void) case MACH_PPC32: case MACH_MIPS32: case MACH_RISCV32: + arch_m64 = ARCH_LP32; int32_ctype = &long_ctype; uint32_ctype = &ulong_ctype; break; diff --git a/validation/call-inlined.c b/validation/call-inlined.c index b907ded6..3612c5c4 100644 --- a/validation/call-inlined.c +++ b/validation/call-inlined.c @@ -20,6 +20,7 @@ const char *qus(void) { return lstrip(messg); } /* * check-name: call-inlined * check-command: test-linearize -Wno-decl -m64 $file + * check-assert: sizeof(void*) == 8 * * check-output-start foo: diff --git a/validation/cast-kinds-check.c b/validation/cast-kinds-check.c index 7eb1ca1c..0c0cd673 100644 --- a/validation/cast-kinds-check.c +++ b/validation/cast-kinds-check.c @@ -3,6 +3,7 @@ /* * check-name: cast-kinds check * check-command: sparse -m64 -v -Wno-pointer-to-int-cast $file + * check-assert: sizeof(long) == 8 * * check-error-start optim/cast-kinds.c:5:45: warning: cast drops bits diff --git a/validation/cast-weirds.c b/validation/cast-weirds.c index 7d028882..a753c298 100644 --- a/validation/cast-weirds.c +++ b/validation/cast-weirds.c @@ -10,6 +10,7 @@ static void * uint_2_vptr(uint a) { return (void *)a; } /* * check-name: cast-weirds * check-command: sparse -m64 $file + * check-assert: sizeof(void *) == 8 * * check-error-start cast-weirds.c:4:48: warning: non size-preserving integer to pointer cast diff --git a/validation/compound-assign-type.c b/validation/compound-assign-type.c index e13dcfcd..2e06eba2 100644 --- a/validation/compound-assign-type.c +++ b/validation/compound-assign-type.c @@ -7,6 +7,8 @@ static unsigned int foo(unsigned int x, long a) /* * check-name: compound-assign-type * check-command: test-linearize -m64 $file + * check-assert: sizeof(long) == 8 + * * check-output-ignore * * check-output-excludes: divu\\.32 diff --git a/validation/constant-suffix-64.c b/validation/constant-suffix-64.c index e65706b0..67226331 100644 --- a/validation/constant-suffix-64.c +++ b/validation/constant-suffix-64.c @@ -7,6 +7,7 @@ static unsigned long b = BIGUL; /* * check-name: constant-suffix * check-command: sparse -m64 -Wconstant-suffix $file + * check-assert: sizeof(long) == 8 * * check-error-start constant-suffix-64.c:4:26: warning: constant 0xfffff00000000000U is so big it is unsigned long diff --git a/validation/enum-bounds.c b/validation/enum-bounds.c index 64ecd8bb..49f7a1ed 100644 --- a/validation/enum-bounds.c +++ b/validation/enum-bounds.c @@ -21,4 +21,5 @@ _Static_assert([typeof(IMM2)] == [long], ""); /* * check-name: enum-bounds * check-command: sparse -m64 $file + * check-assert: sizeof(long) == 8 */ diff --git a/validation/enum-sign-gcc.c b/validation/enum-sign-gcc.c index 5aa7983c..03fa3590 100644 --- a/validation/enum-sign-gcc.c +++ b/validation/enum-sign-gcc.c @@ -60,4 +60,5 @@ _Static_assert(is_unsigned(D) == 1, "enum D"); /* * check-name: enum-sign-gcc * check-command: sparse -m64 $file + * check-assert: sizeof(long) == 8 */ diff --git a/validation/expand/builtin-expect.c b/validation/expand/builtin-expect.c index f4e0664b..1b0c7c18 100644 --- a/validation/expand/builtin-expect.c +++ b/validation/expand/builtin-expect.c @@ -36,6 +36,7 @@ void *fptr(void *a) /* * check-name: builtin-expect * check-command: test-linearize -m64 -Wno-decl $file + * check-assert: sizeof(long) == 8 * * check-output-start flia: diff --git a/validation/linear/bitfield-size.c b/validation/linear/bitfield-size.c index 841bdd0a..dcda930d 100644 --- a/validation/linear/bitfield-size.c +++ b/validation/linear/bitfield-size.c @@ -40,6 +40,7 @@ void scpy(struct s *d, const struct s *s) /* * check-name: bitfield-size * check-command: test-linearize -m64 -Wno-decl -fdump-ir $file + * check-assert: sizeof(void *) == 8 * * check-output-start upostinc: diff --git a/validation/linear/bool-cast-lp64.c b/validation/linear/bool-cast-lp64.c index 9b2a020a..caf0e678 100644 --- a/validation/linear/bool-cast-lp64.c +++ b/validation/linear/bool-cast-lp64.c @@ -12,6 +12,7 @@ static _Bool ffun_e(void) { return (_Bool)ffun; } /* * check-name: bool-cast-pointer * check-command: test-linearize -m64 -fdump-ir $file + * check-assert: sizeof(void *) == 8 * * check-output-ignore * check-output-excludes: ptrtu\\. diff --git a/validation/linear/bool-cast.c b/validation/linear/bool-cast.c index 0438a94f..1716d18b 100644 --- a/validation/linear/bool-cast.c +++ b/validation/linear/bool-cast.c @@ -24,6 +24,7 @@ static _Bool fdbl_e(dbl a) { return (_Bool)a; } /* * check-name: bool-cast * check-command: test-linearize -m64 -fdump-ir=linearize $file + * check-assert: sizeof(void*) == 8 && sizeof(long) == 8 && sizeof(double) == 8 * * check-output-ignore * check-output-excludes: cast\\. diff --git a/validation/linear/call-complex-pointer.c b/validation/linear/call-complex-pointer.c index dc0ab07b..2be35c5b 100644 --- a/validation/linear/call-complex-pointer.c +++ b/validation/linear/call-complex-pointer.c @@ -6,6 +6,7 @@ int foo(int p, int (*f0)(int), int (*f1)(int), int arg) /* * check-name: call-complex-pointer * check-command: test-linearize -m64 -Wno-decl $file + * check-assert: sizeof(void *) == 8 * * check-output-start foo: diff --git a/validation/linear/cast-constants.c b/validation/linear/cast-constants.c index c1fdab41..2aaee2b4 100644 --- a/validation/linear/cast-constants.c +++ b/validation/linear/cast-constants.c @@ -53,6 +53,7 @@ static double float_2_double(void) { return (double)1.123F; } /* * check-name: cast-constants.c * check-command: test-linearize -m64 $file + * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8 * * check-output-start uint_2_int: diff --git a/validation/linear/degen-array.c b/validation/linear/degen-array.c index b8a6f4f6..32230dde 100644 --- a/validation/linear/degen-array.c +++ b/validation/linear/degen-array.c @@ -7,6 +7,7 @@ int *fd(int i) { return a; } /* * check-name: degen-array * check-command: test-linearize -m64 -Wno-decl $file + * check-assert: sizeof(void *) == 8 * * check-output-start fa: diff --git a/validation/linear/degen-function.c b/validation/linear/degen-function.c index a7cff443..e0b05e5f 100644 --- a/validation/linear/degen-function.c +++ b/validation/linear/degen-function.c @@ -9,6 +9,7 @@ fun_t f1(void) { return *fun; } /* * check-name: degen-function * check-command: test-linearize -m64 -Wno-decl -fdump-ir=linearize $file + * check-assert: sizeof(void *) == 8 * * check-output-start fa: diff --git a/validation/linear/deref-ptr-ptr.c b/validation/linear/deref-ptr-ptr.c index 531d3637..1342990c 100644 --- a/validation/linear/deref-ptr-ptr.c +++ b/validation/linear/deref-ptr-ptr.c @@ -6,6 +6,7 @@ char *foo(char **pfmt) /* * check-name: deref-ptr-ptr * check-command: test-linearize -m64 -Wno-decl $file + * check-assert: sizeof(void *) == 8 * * check-output-excludes: load[^.] * check-output-contains: load\\. diff --git a/validation/linear/logical.c b/validation/linear/logical.c index b190f608..81a9ff42 100644 --- a/validation/linear/logical.c +++ b/validation/linear/logical.c @@ -19,6 +19,7 @@ int ad(int i, struct S *b) { return i && b->d; } /* * check-name: logical * check-command: test-linearize -m64 -fdump-ir -Wno-decl $file + * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8 * * check-output-start os: diff --git a/validation/optim/cast-kinds.c b/validation/optim/cast-kinds.c index b144dc7e..0ba8a156 100644 --- a/validation/optim/cast-kinds.c +++ b/validation/optim/cast-kinds.c @@ -56,6 +56,7 @@ static double double_2_double(double a) { return a; } /* * check-name: cast-kinds * check-command: test-linearize -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -m64 $file + * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8 * * check-output-start uint_2_int: |