#35 Fix a crash bug when lowering unordered loads to cmpxchg (rhbz1797127)
Merged 4 years ago by jistone. Opened 4 years ago by jistone.
rpms/ jistone/llvm f30-rhbz1797127  into  f30

@@ -0,0 +1,28 @@ 

+ From 2153c4b8281c1e5f25887ef9183947198c50a9d2 Mon Sep 17 00:00:00 2001

+ From: Philip Reames <listmail@philipreames.com>

+ Date: Tue, 19 Mar 2019 17:20:49 +0000

+ Subject: [PATCH] [AtomicExpand] Fix a crash bug when lowering unordered loads

+  to cmpxchg

+ 

+ Add tests for wider atomic loads and stores.  In the process, fix a crasher where we appearently handled unorder stores, but not loads, when lowering to cmpxchg idioms.

+ 

+ llvm-svn: 356482

+ ---

+  lib/CodeGen/AtomicExpandPass.cpp     |   3 +

+  test/CodeGen/X86/atomic-unordered.ll | 234 +++++++++++++++++++---

+  2 files changed, 213 insertions(+), 24 deletions(-)

+ 

+ diff --git a/lib/CodeGen/AtomicExpandPass.cpp b/lib/CodeGen/AtomicExpandPass.cpp

+ index 10dd21d1ef9d..7a8013abccfb 100644

+ --- a/lib/CodeGen/AtomicExpandPass.cpp

+ +++ b/lib/CodeGen/AtomicExpandPass.cpp

+ @@ -430,6 +430,9 @@ bool AtomicExpand::expandAtomicLoadToLL(LoadInst *LI) {

+  bool AtomicExpand::expandAtomicLoadToCmpXchg(LoadInst *LI) {

+    IRBuilder<> Builder(LI);

+    AtomicOrdering Order = LI->getOrdering();

+ +  if (Order == AtomicOrdering::Unordered)

+ +    Order = AtomicOrdering::Monotonic;

+ +

+    Value *Addr = LI->getPointerOperand();

+    Type *Ty = cast<PointerType>(Addr->getType())->getElementType();

+    Constant *DummyVal = Constant::getNullValue(Ty);

file modified
+5 -1
@@ -40,7 +40,7 @@ 

  

  Name:		%{pkg_name}

  Version:	%{maj_ver}.%{min_ver}.%{patch_ver}

- Release:	6%{?rc_ver:.rc%{rc_ver}}%{?dist}

+ Release:	7%{?rc_ver:.rc%{rc_ver}}%{?dist}

  Summary:	The Low Level Virtual Machine

  

  License:	NCSA
@@ -52,6 +52,7 @@ 

  Patch5:		0001-PATCH-llvm-config.patch

  Patch7:		0001-PATCH-Filter-out-cxxflags-not-supported-by-clang.patch

  Patch8:		0001-Fix-the-buildbot-issue-introduced-by-r351421.patch

+ Patch9:		0001-AtomicExpand-Fix-a-crash-bug-when-lowering-unordered.patch

  

  BuildRequires:	gcc

  BuildRequires:	gcc-c++
@@ -462,6 +463,9 @@ 

  %endif

  

  %changelog

+ * Sat Feb 01 2020 Josh Stone <jistone@redhat.com> - 8.0.0-7

+ - Fix a crash bug when lowering unordered loads to cmpxchg (rhbz1797127)

+ 

  * Wed Apr 24 2019 Tom Stellard <tstellar@redhat.com> - 8.0.0-6

  - Make sure we aren't passing -g on s390x

  

no initial comment

Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1797127

The full upstream patch is here:
https://github.com/llvm/llvm-project/commit/2153c4b8281c1e5f25887ef9183947198c50a9d2

I only included the lib/ fix in this patch, because that test file didn't exist in 8.x.
I have locally confirmed that this fixes the Rust 1.41 build on i686.

Pull-Request has been merged by jistone

4 years ago