From 589c8caef1a6c17c21d6340b1b117364eedb2c7f Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Mon, 10 Jul 2017 18:36:34 +0000 Subject: [PATCH] [WebAssembly] Use the correct size for MCFillFragment Summary: When implementing MCFillFragment, use the size of the fragment, rather than the size of the section. Patch by Dan Gohman Differential Revision: https://reviews.llvm.org/D35090 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307565 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/WasmObjectWriter.cpp | 2 +- test/MC/WebAssembly/array-fill.ll | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/MC/WebAssembly/array-fill.ll diff --git a/lib/MC/WasmObjectWriter.cpp b/lib/MC/WasmObjectWriter.cpp index 769dbb810ed..a38d9339880 100644 --- a/lib/MC/WasmObjectWriter.cpp +++ b/lib/MC/WasmObjectWriter.cpp @@ -1197,7 +1197,7 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm, Align->getMaxBytesToEmit()); DataBytes.resize(Size, Value); } else if (auto *Fill = dyn_cast(&Frag)) { - DataBytes.insert(DataBytes.end(), Size, Fill->getValue()); + DataBytes.insert(DataBytes.end(), Fill->getSize(), Fill->getValue()); } else { const auto &DataFrag = cast(Frag); const SmallVectorImpl &Contents = DataFrag.getContents(); diff --git a/test/MC/WebAssembly/array-fill.ll b/test/MC/WebAssembly/array-fill.ll new file mode 100644 index 00000000000..4feabc0748e --- /dev/null +++ b/test/MC/WebAssembly/array-fill.ll @@ -0,0 +1,14 @@ +; RUN: llc -filetype=obj %s -o - | obj2yaml | FileCheck %s +; PR33624 + +source_filename = "ws.c" +target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" +target triple = "wasm32-unknown-unknown-wasm" + +%struct.bd = type { i8 } + +@gBd = hidden global [2 x %struct.bd] [%struct.bd { i8 1 }, %struct.bd { i8 2 }], align 1 + +; CHECK: - Type: DATA +; CHECK: Content: '0102' +; CHECK: DataSize: 2 -- 2.40.0