From owner-svn-src-projects@freebsd.org Fri Aug 17 16:26:01 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE01A10747F0 for ; Fri, 17 Aug 2018 16:26:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A41D687001; Fri, 17 Aug 2018 16:26:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 674C92D6E; Fri, 17 Aug 2018 16:26:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w7HGQ0sf020545; Fri, 17 Aug 2018 16:26:00 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w7HGQ0Sp020544; Fri, 17 Aug 2018 16:26:00 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201808171626.w7HGQ0Sp020544@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 17 Aug 2018 16:26:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r337979 - projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: projects/clang700-import/contrib/llvm/tools/clang/lib/Basic/Targets X-SVN-Commit-Revision: 337979 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Aug 2018 16:26:01 -0000 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... 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 {