[Bug c++/102281] -ftrivial-auto-var-init=zero causes ice

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Sep 13 10:23:12 GMT 2021


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2021-09-13
             Status|UNCONFIRMED                 |NEW
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |qing.zhao at oracle dot com,
                   |                            |rguenth at gcc dot gnu.org

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed, works with the C frontend.  The issue is that we do

_mm_set_epi64x___q0.0_1 = _mm_set_epi64x___q0;
D.2371 = {_mm_set_epi64x___q0.0_1};
__builtin_clear_padding (&D.2371, 0B, 1);
return D.2371;

so __builtin_clear_padding marks the object addressable which in turn makes
it no longer a is_gimple_val and thus it cannot be returned directly.

I wonder if we can have a more friendly __builtin_clear_padding as
internal-function doing sth like

  val = .IFN_CLEAR_PADDING (val, 0B, 1);

thus embedding a RMW cycle on an actual value?


More information about the Gcc-bugs mailing list