Re: [PATCH 7/16] Let void have sizeof 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Void type is an incomplete type. It should not have storage size.
Program should not depend on sizeof(void) is 1.

Chris

On Thu, Dec 18, 2008 at 2:32 PM, Alexey Zaytsev
<alexey.zaytsev@xxxxxxxxx> wrote:
> Gcc assumes sizeof(void) being 1.
> Currently sparse would generate wrong code for:
>
> void *test(void *p) {
>       p++;
>       return p;
> }
>
> unsigned long test1(void *p)
> {
>       return sizeof(*p);
> }
>
> .L0x2b48867c1010:
>       <entry-point>
>       add.32      %r2 <- %arg1, $-1
>       ret.32      %r2
>
> test1:
> .L0x2b48867c10b0:
>       <entry-point>
>       ret.32      $-1
>
> And with bit_size set to &bits_in_char, the code looks
> as expected.
>
> Signed-off-by: Alexey Zaytsev <alexey.zaytsev@xxxxxxxxx>
> ---
>  symbol.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/symbol.c b/symbol.c
> index 4da253b..02844cf 100644
> --- a/symbol.c
> +++ b/symbol.c
> @@ -834,7 +834,7 @@ static const struct ctype_declare {
>        struct symbol *base_type;
>  } ctype_declaration[] = {
>        { &bool_ctype,      SYM_BASETYPE, MOD_UNSIGNED,             &bits_in_bool,           &max_int_alignment, &int_type },
> -       { &void_ctype,      SYM_BASETYPE, 0,                        NULL,                    NULL,               NULL },
> +       { &void_ctype,      SYM_BASETYPE, 0,                        &bits_in_char,           NULL,               NULL },
>        { &type_ctype,      SYM_BASETYPE, MOD_TYPE,                 NULL,                    NULL,               NULL },
>        { &incomplete_ctype,SYM_BASETYPE, 0,                        NULL,                    NULL,               NULL },
>        { &bad_ctype,       SYM_BASETYPE, 0,                        NULL,                    NULL,               NULL },
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux