http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55026



Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:



           What    |Removed                     |Added

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

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2012-10-22

                 CC|                            |ebotcazou at gcc dot

                   |                            |gnu.org

            Summary|[Multiple targets]          |Useless stores generated

                   |Inefficient code with       |for structures passed by

                   |structs passed by value     |value

     Ever Confirmed|0                           |1

           Severity|normal                      |enhancement



--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-10-22 
19:08:10 UTC ---

This depends on the internal argument passing mechanism (BLKmode registers vs

PARALLEL) and on the strict-alignment requirements of the architecture.  Try:



struct __attribute__((aligned (8))) foo {

    int a;

    int b;

};



int f(struct foo x)

{

  return x.a + x.b;

}



to watch the effects of the latter.

Reply via email to