On 03/29/2018 08:00 AM, Florian Weimer wrote:
> This patch performs lazy initialization of the relevant CPUID feature
> register value.  It will needlessly invoke the CPUID determination code
> on architectures which lack CPUID support or support for the feature
> register, but I think it's not worth to avoid the complexity for that.
> 
> I verified manually that the CMPXCHG16B implementation is still selected
> for a 128-bit load after the change.  I don't know how to write an
> automated test for that.
> 
> Thanks,
> Florian
> 
> pr60790.patch
> 
> 
> Index: libatomic/ChangeLog
> ===================================================================
> --- libatomic/ChangeLog       (revision 258952)
> +++ libatomic/ChangeLog       (working copy)
> @@ -1,3 +1,18 @@
> +2018-03-29  Florian Weimer  <fwei...@tor.usersys.redhat.com>
> +
> +     PR libgcc/60790
> +     x86: Do not assume ELF constructors run before IFUNC resolvers.
> +     * config/x86/host-config.h (libat_feat1_ecx, libat_feat1_edx):
> +     Remove declarations.
> +     (__libat_feat1, __libat_feat1_init): Declare.
> +     (FEAT1_REGISTER): Define.
> +     (load_feat1): New function.
> +     (IFUNC_COND_1): Adjust.
> +     * config/x86/init.c (libat_feat1_ecx, libat_feat1_edx)
> +     (init_cpuid): Remove definitions.
> +     (__libat_feat1): New variable.
> +     (__libat_feat1_init): New function.
OK.

Do you have write access to the GCC repository?  If not I can commit for
you.

jeff

Reply via email to