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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-03-13
             Status|UNCONFIRMED                 |NEW
      Known to fail|                            |7.5.0

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
bool      
get_object_alignment_2 (tree exp, unsigned int *alignp,
                        unsigned HOST_WIDE_INT *bitposp, bool addr_p)
{
  unsigned int align = BITS_PER_UNIT;
...
  /* Extract alignment information from the innermost object and
     possibly adjust bitpos and offset.  */
  if (TREE_CODE (exp) == FUNCTION_DECL) 
    {         
      /* Function addresses can encode extra information besides their
         alignment.  However, if TARGET_PTRMEMFUNC_VBIT_LOCATION
         allows the low bit to be used as a virtual bit, we know
         that the address itself must be at least 2-byte aligned.  */
      if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn)
        align = 2 * BITS_PER_UNIT;
    } 

we don't compute anything for functions, but the above can cause the
expression to "diverge" for the integer cast value, like if you want
to test that virtual bit.

Only x86 has it this way.

Reply via email to