https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103427
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aldyh at gcc dot gnu.org,
| |amacleod at redhat dot com,
| |jakub at gcc dot gnu.org,
| |rguenth at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I guess we'd need to use min_align_of_type, because say ia32 long long &
can bind to a long long member inside of struct S { int a; long long b; }
and then it is only 4 byte aligned. The question is how/where to do this
though,
as POINTER_TYPE_P conversions are considered useless and therefore what has
been a reference or pointer and to what exactly can blur pretty fast.
But at least whether a PARM_DECL has reference type or pointer type and what
the pointed type is shouldn't change arbitrarily.
I'm not sure if we can rely on this for non-C++ FEs though, so perhaps a
langhook that we use during evrp on (D) SSA_NAME of PARM_DECLs and ask the FE
whether it guarantees some alignment for those (aka pretend there is a virtual
__builtin_assume_aligned for those)?