[WebAssembly] Set threadmodel during LTO

Subscribers: dschuff, mehdi_amini, inglorion, jgravelle-google, aheejin, sunfish, steven_wu, llvm-commits

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

llvm-svn: 336118
This commit is contained in:
Sam Clegg 2018-07-02 16:27:50 +00:00
parent 198f3b16dc
commit 92c10492de
2 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1,14 @@
; RUN: llvm-as %s -o %t.o
; RUN: wasm-ld %t.o -o %t.wasm -lto-O0
; Atomic operations with fail to compile if the ThreadModel is not
; correctly set to Single (i.e. if atomics are not lowered to regular ops).
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown-wasm"
@foo = hidden global i32 1
define void @_start() {
%1 = load atomic i32, i32* @foo unordered, align 4
ret void
}

View File

@ -45,10 +45,13 @@ static std::unique_ptr<lto::LTO> createLTO() {
lto::Config C;
C.Options = InitTargetOptionsFromCodeGenFlags();
// Always emit a section per function/datum with LTO.
// Always emit a section per function/data with LTO.
C.Options.FunctionSections = true;
C.Options.DataSections = true;
// Wasm currently only supports ThreadModel::Single
C.Options.ThreadModel = ThreadModel::Single;
C.DisableVerify = Config->DisableVerify;
C.DiagHandler = diagnosticHandler;
C.OptLevel = Config->LTOO;