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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-11-23
            Summary|Missed optimization: Using  |[10/11/12/13 Regression]
                   |memcpy to load a struct     |Missed optimization: Using
                   |unnecessary uses stack      |memcpy to load a struct
                   |space                       |unnecessary uses stack
                   |                            |space
           Keywords|                            |needs-bisection
      Known to work|                            |4.5.3, 4.7.3, 5.1.0, 7.5.0
   Target Milestone|---                         |10.5
      Known to fail|                            |8.1.0
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, GCC 7 did the right thing ...
Even on the gimple level:

  x$v$0_8 = MEM[(char * {ref-all})src_6(D)];
  x$v$1_9 = MEM[(char * {ref-all})src_6(D) + 8B];
  x$v$2_10 = MEM[(char * {ref-all})src_6(D) + 16B];
  x$v$3_11 = MEM[(char * {ref-all})src_6(D) + 24B];
  _1 = __builtin_bswap64 (x$v$3_11);
  _2 = __builtin_bswap64 (x$v$2_10);
  _3 = __builtin_bswap64 (x$v$1_9);
  _4 = __builtin_bswap64 (x$v$0_8);
  MEM[(struct uint256 *)o_7(D)] = _1;
  MEM[(struct uint256 *)o_7(D) + 8B] = _2;
  MEM[(struct uint256 *)o_7(D) + 16B] = _3;
  MEM[(struct uint256 *)o_7(D) + 24B] = _4;

Reply via email to