Date: Sun, 7 Oct 2018 10:57:57 +0200 From: Antoine Brodin <antoine@freebsd.org> To: Dimitry Andric <dim@freebsd.org> Cc: src-committers <src-committers@freebsd.org>, svn-src-projects@freebsd.org Subject: Re: svn commit: r337979 - projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets Message-ID: <CAALwa8mJyFeWwunq-nx=PLOMK=FFae87CHi56JbDgq8X51RFag@mail.gmail.com> In-Reply-To: <201808171626.w7HGQ0Sp020544@repo.freebsd.org> References: <201808171626.w7HGQ0Sp020544@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 17, 2018 at 6:26 PM Dimitry Andric <dim@freebsd.org> wrote: > Author: dim > Date: Fri Aug 17 16:25:59 2018 > New Revision: 337979 > URL: https://svnweb.freebsd.org/changeset/base/337979 > > Log: > For now, revert upstream clang r323281 (by Wei Mi): > > Adjust MaxAtomicInlineWidth for i386/i486 targets. > > This is to fix the bug reported in > https://bugs.llvm.org/show_bug.cgi?id=34347#c6. Currently, all > MaxAtomicInlineWidth of x86-32 targets are set to 64. However, i386 > doesn't support any cmpxchg related instructions. i486 only supports > cmpxchg. So in this patch MaxAtomicInlineWidth is reset as follows: > For i386, the MaxAtomicInlineWidth should be 0 because no cmpxchg is > supported. For i486, the MaxAtomicInlineWidth should be 32 because > it supports cmpxchg. For others 32 bits x86 cpu, the > MaxAtomicInlineWidth should be 64 because of cmpxchg8b. > > Differential Revision: https://reviews.llvm.org/D42154 > > This should fix buildworld on i386, because of our system libraries > missing __atomic_load_8, and possibly other 64 bit atomic functions, for > that architecture. > > We should really fix that at some point, but since we have been actually > using cmpxchg8b for years now, it does not seem to matter much... Hi, Is it possible to backport something similar on stable/11 and maybe do an EN for 11.2? Antoine > Modified: > projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h > > Modified: projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h > ============================================================================== > --- projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h Fri Aug 17 16:19:47 2018 (r337978) > +++ projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h Fri Aug 17 16:25:59 2018 (r337979) > @@ -350,11 +350,9 @@ class LLVM_LIBRARY_VISIBILITY X86_32TargetInfo : publi > (1 << TargetInfo::LongDouble)); > > // x86-32 has atomics up to 8 bytes > - CPUKind Kind = getCPUKind(Opts.CPU); > - if (Kind >= CK_i586 || Kind == CK_Generic) > - MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; > - else if (Kind >= CK_i486) > - MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32; > + // FIXME: Check that we actually have cmpxchg8b before setting > + // MaxAtomicInlineWidth. (cmpxchg8b is an i586 instruction.) > + MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; > } > > BuiltinVaListKind getBuiltinVaListKind() const override { >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAALwa8mJyFeWwunq-nx=PLOMK=FFae87CHi56JbDgq8X51RFag>