[cfe-dev] question about initializing multiple members of unions

Matthew Curtis mcurtis at codeaurora.org
Fri Sep 13 13:47:35 PDT 2013


On 9/13/2013 2:23 PM, Gao, Yunzhong wrote:
> Hi Matthew,
> Hmm I am inclined towards treating a.zero and b[1] as two different sub-objects.

Do you think that GCC's behavior is incorrect?

> Which svn revision of clang did you use? When I used r190021 on your test case, I got an assertion:

The assertion is what I'm trying to fix.

>
> $ clang -S -o - init.c
> lib/Sema/SemaInit.cpp:2449: clang::InitializedEntity::InitializedEntity(clang::ASTContext&, unsigned int, const clang::InitializedEntity&): Assertion `CT && "Unexpected type"' failed.
>
> I have some local patches for related initialization problems, but I cannot verify whether they fix the particular problem you have here.
>
> - Gao.
>
>
> ________________________________________
> From: cfe-dev-bounces at cs.uiuc.edu [cfe-dev-bounces at cs.uiuc.edu] on behalf of Matthew Curtis [mcurtis at codeaurora.org]
> Sent: Thursday, September 12, 2013 2:04 PM
> To: Eli Friedman
> Cc: clang-dev Developers
> Subject: Re: [cfe-dev] question about initializing multiple members of unions
>
> On 9/11/2013 2:30 PM, Eli Friedman wrote:
> On Wed, Sep 11, 2013 at 6:10 AM, Matthew Curtis <mcurtis at codeaurora.org<mailto:mcurtis at codeaurora.org>> wrote:
> I'm investigating an assert in clang compiling the following code:
>
>    typedef union {
>      struct {
>        int zero;
>        int one;
>        int two;
>        int three;
>      } a;
>      int b[4];
>    } my_agg_t;
>
>    my_agg_t agg_instance =
>    {
>      .b[0] = 0,
>      .a.one = 1,
>      .b[2] = 2,
>      .a.three = 3,
>    };
>
> I'm a little uncertain as to what this *should* do.
>
> This is also http://llvm.org/bugs/show_bug.cgi?id=16644 .
>
> I would say we should either use gcc's interpretation or reject it.
>
> -Eli
>
> Sounds reasonable. Unless someone has a dissenting opinion, I'll look at fixing this by making clang consistent with gcc.
>
> Thanks,
> Matthew Curtis
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
>
>


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation




More information about the cfe-dev mailing list