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

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|testsuite                   |ipa

--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> In other words, get_odr_type (t1, true) works on x86 and get_odr_type (t2,
> true) works on ARM/SPARC, so maybe something like:
> 
> Index: ipa-devirt.c
> ===================================================================
> --- ipa-devirt.c        (revision 258068)
> +++ ipa-devirt.c        (working copy)
> @@ -686,7 +686,10 @@ odr_subtypes_equivalent_p (tree t1, tree t2,
>          return false;
>        /* Limit recursion: If subtypes are ODR types and we know
>           that they are same, be happy.  */
> -      if (!odr_type_p (t1) || !get_odr_type (t1, true)->odr_violated)
> +      if (!odr_type_p (t1)
> +         || !odr_type_p (t2)
> +         || (!get_odr_type (t1, true)->odr_violated
> +             && !get_odr_type (t2, true)->odr_violated))
>          return true;
>      }
> 
> is the proper thing to do.

This brings the missing warnings on SPARC (and presumably Aarch64 too) but
gives the same order of warnings as on the HP-PA, so the test still formally
fails.

In other words, the test is not sufficiently robust as currently written.

Reply via email to