Re: attributes are not stored at right location for array variables

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

 



Your patch assumes every attribute apply to node instead of type.
Is there any attribute need to apply to type instead?

For your change, apply_modifiers() need to change where it take the
__mode__ attribute as well.

Chris


On 1/31/07, Mitesh Shah <mshah@xxxxxxxx> wrote:

It seems that the attributes are not stored with the variable ctype when the variable is an array. For declaration such as,

char c[100] __attribute__((aligned(64)));

The attribute is stored with the array ctype instead of the variable C ctype.

In function direct_declarator in parse.c at line 920 the ctype gets replaced with the array ctype and in the next iteration it is
passed to handle_attributes. handle_attributes should be passed the original ctype so here is the patch.

Thanks,

-Mitesh

-------------------------------------------------------

index 5077ee6..306b144 100644
--- a/parse.c
+++ b/parse.c
@@ -881,7 +881,7 @@ static struct token *direct_declarator(struct token *token, struct symbol *decl,
        }

        for (;;) {
-               token = handle_attributes(token, ctype);
+               token = handle_attributes(token, &decl->ctype);

                if (token_type(token) != TOKEN_SPECIAL)
                        return token;


-
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

-
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