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

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 13 Sep 2021, jakub at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102281
> 
> --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> (In reply to rguent...@suse.de from comment #3)
> > > I doubt we support vectors of long double, so it is mainly whether 
> > > returning of
> > > long double or _Complex long double works fine.
> > 
> > for this specific issue it might be enough to not bother initializing
> > padding of is_gimple_reg_type types, I doubt we have any of those
> > that have padding (and if we'd have then the issue would re-surface)
> 
> long double and _Complex long double do have padding and clearing it is
> desirable (for -ftrivial-auto-var-init*) or a requirement (e.g. for atomics,
> whether OpenMP or std::atomic (unfortunately not implemented yet in 
> libstdc++).
> The hw instruction really do store only 10 bytes and leave the rest
> uninitialized...

But then we still cannot do the GIMPLE this way.  It's a case where
it is problematic to mark something as address-taken when some
gimplification already happened, that's usually a bad idea.

So I fear that for those cases we have to use alternate GIMPLE
to do the padding clearing - can we force-"fold" the clear-padding
immediately somehow?

Reply via email to