https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739

--- Comment #40 from rguenther at suse dot de <rguenther at suse dot de> ---
On Wed, 9 Jan 2019, rsandifo at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88739
> 
> rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                  CC|                            |rsandifo at gcc dot gnu.org
> 
> --- Comment #35 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot 
> gnu.org> ---
> Yeah, the expr.c patch makes the original testcase work, but we still fail 
> for:
> 
> #include<stdio.h>
> typedef  unsigned int U32;
> typedef  unsigned short  U16;
> typedef  unsigned char U8;
> 
> typedef struct MEM_HEAD_4DW
> {
>     /* first word */
>     U32 b11               : 1;
>     U32 b12               : 3;
>     U32 b13               : 3;
>     U32 b14               : 1;
>     U32 b15               : 16;
>     U32 b16               : 8;
> 
>     /* second word */
>     U32 b21               : 16;
>     U32 b22               : 1;
>     U32 b23               : 4;
>     U32 b24               : 11;
> 
>     /* third word */
>     U32 b31               : 32;
> 
>     /* fourth word */
>     U32 b30AddrL          : 30;
>     U32 b2AddrType        : 2;
> }MEM_REQ_HEAD_4DW;
> 
> typedef union HEAD_DW4_UNION
> {
>     MEM_REQ_HEAD_4DW strMemHead;
>     U32 aulValue[4];
>     U16 ausValue[8];
>             U8  aucValue[16];
> }HEAD_REQ_DW4_UNION;
> 
> 
> 
> U32 Test_func(U32 ulAddr)
> {
>     HEAD_REQ_DW4_UNION unData;
> 
>     unData.strMemHead.b30AddrL        = ulAddr >> 2;
>     unData.strMemHead.b2AddrType      = 0;
>     printf("unData.ausValue[6]=0x%x\r\n",unData.ausValue[6]);       // why get
> 0x0 instead of 0x1 ?
> 
>     return 0;
> }
> 
> int main()
> 
> {
>   Test_func(0x10224);
>   return 0;
> }
> 
> Like Wilco says, the torture test seems to pass with an unpatched compiler 
> (but
> seems like a good thing to have anyway).

Yeah, the torture test fails to have the "large" store being a bitfield 
one.  I'll see if I can reasonably extend the testcase to covert this 
case.  Or rather add variants of the testcase.

Richard.

Reply via email to