[Bug middle-end/22141] [4.8/4.9/5 Regression] Missing optimization when storing structures

2015-02-02 Thread hariharan.gcc at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22141

hariharan.gcc at gmail dot com changed:

   What|Removed |Added

 CC||hariharan.gcc at gmail dot com

--- Comment #30 from hariharan.gcc at gmail dot com ---
I saw a related problem, this time with bitfields

$more bitfieldtest.c

typedef union {
  struct {
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b4:1;
unsigned int b5:1;
  }fields;
  unsigned int word;
} _t_bitfields;


void _const_populate_bits(_t_bitfields * data)
{
  data->fields.b1 = 1;
  data->fields.b2 = 0;
  data->fields.b3 = 1;
  data->fields.b4 = 1;
  data->fields.b5 = 0;
}

At the end of tree stages, it looks like this

$more bitfieldtest.c.165t.optimized

;; Function _const_populate_bits (_const_populate_bits, funcdef_no=0,
decl_uid=1339, cgraph_uid=0)

_const_populate_bits (union _t_bitfields * data)
{
  :
  data_2(D)->fields.b1 = 1;
  data_2(D)->fields.b2 = 0;
  data_2(D)->fields.b3 = 1;
  data_2(D)->fields.b4 = 1;
  data_2(D)->fields.b5 = 0;
  return;

}

Expand expands each one of the assignments in turn and some get combined later
on into ok-ish code. It would be nice to be able to combine all 5 assignments
into one.

Its kind of related to this PR, but is it sufficiently different to warrant a
separate PR for it?


[Bug middle-end/22141] [4.8/4.9/5 Regression] Missing optimization when storing structures

2014-12-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22141

Jakub Jelinek  changed:

   What|Removed |Added

   Target Milestone|4.8.4   |4.8.5

--- Comment #29 from Jakub Jelinek  ---
GCC 4.8.4 has been released.