[lld] 15a5e86 - [lld][WebAssembly] Allow `atomics` feature with unshared memory

Thomas Lively via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 20:35:36 PDT 2020


Author: Thomas Lively
Date: 2020-09-24T20:35:29-07:00
New Revision: 15a5e86fb387359f736e919eeb5cc2b9f4477d48

URL: https://github.com/llvm/llvm-project/commit/15a5e86fb387359f736e919eeb5cc2b9f4477d48
DIFF: https://github.com/llvm/llvm-project/commit/15a5e86fb387359f736e919eeb5cc2b9f4477d48.diff

LOG: [lld][WebAssembly] Allow `atomics` feature with unshared memory

 https://github.com/WebAssembly/threads/issues/144 updated the
WebAssembly threads proposal to make atomic operations on unshared memories
valid. This change updates the feature checking in the linker accordingly.
Production WebAssembly engines have recently been updated to allow this
behvaior, but after this change users who accidentally use atomics with unshared
memories on older versions of the engines will get validation errors at runtime
rather than link errors.

Differential Revision: https://reviews.llvm.org/D79530

Added: 
    

Modified: 
    lld/test/wasm/shared-memory.yaml
    lld/wasm/Writer.cpp

Removed: 
    


################################################################################
diff  --git a/lld/test/wasm/shared-memory.yaml b/lld/test/wasm/shared-memory.yaml
index 8a03e0e776da..1c238a52357d 100644
--- a/lld/test/wasm/shared-memory.yaml
+++ b/lld/test/wasm/shared-memory.yaml
@@ -8,8 +8,6 @@
 
 # RUN: not wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-NO-BULK-MEM
 
-# RUN: not wasm-ld --no-entry --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix ATOMICS-NO-SHARED
-
 # RUN: wasm-ld --relocatable --features=atomics %t1.o -o - | obj2yaml | FileCheck %s --check-prefix ATOMICS-RELOCATABLE
 
 # RUN: wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics,bulk-memory %t1.o -o - | obj2yaml | FileCheck %s --check-prefix SHARED
@@ -65,8 +63,6 @@ Sections:
 
 # SHARED-NO-BULK-MEM: 'bulk-memory' feature must be used in order to use shared memory
 
-# ATOMICS-NO-SHARED: 'atomics' feature is used, so --shared-memory must be used{{$}}
-
 # ATOMICS-RELOCATABLE:        - Type:            MEMORY
 # ATOMICS-RELOCATABLE-NEXT:     Memories:
 # ATOMICS-RELOCATABLE-NEXT:         Initial:         0x00000001

diff  --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp
index b7adec7ffea0..3d4941747bbc 100644
--- a/lld/wasm/Writer.cpp
+++ b/lld/wasm/Writer.cpp
@@ -450,15 +450,6 @@ void Writer::populateTargetFeatures() {
     for (const auto &key : used.keys())
       allowed.insert(std::string(key));
 
-  if (!config->relocatable && allowed.count("atomics") &&
-      !config->sharedMemory) {
-    if (inferFeatures)
-      error(Twine("'atomics' feature is used by ") + used["atomics"] +
-            ", so --shared-memory must be used");
-    else
-      error("'atomics' feature is used, so --shared-memory must be used");
-  }
-
   if (!config->checkFeatures)
     return;
 


        


More information about the llvm-commits mailing list