[lld] r327508 - [WebAssembly] Add missing implementation for --initial/max-memory args

Galina Kistanova via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 14 13:27:11 PDT 2018


Hello Nicholas,

This commit broke one of our builders:

http://lab.llvm.org:8011/builders/lld-perf-testsuite/builds/793

. . .
FAILED: /usr/bin/c++   -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GNU_SOURCE
-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-Itools/lld/wasm
-I/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/tools/lld/wasm
-I/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/tools/lld/include
-Itools/lld/include -Iinclude
-I/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/include
-fvisibility-inlines-hidden -Werror -Werror=date-time -std=c++11 -Wall -W
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -pedantic -Wno-long-long
-Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment
-ffunction-sections -fdata-sections -O3    -UNDEBUG  -fno-exceptions
-fno-rtti -MMD -MT tools/lld/wasm/CMakeFiles/lldWasm.dir/Writer.cpp.o -MF
tools/lld/wasm/CMakeFiles/lldWasm.dir/Writer.cpp.o.d -o
tools/lld/wasm/CMakeFiles/lldWasm.dir/Writer.cpp.o -c
/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/tools/lld/wasm/Writer.cpp
/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/tools/lld/wasm/Writer.cpp:
In member function ‘void {anonymous}::Writer::createMemorySection()’:
/home/buildslave/slave_as-bldslv8/lld-perf-testsuite/llvm/tools/lld/wasm/Writer.cpp:197:27:
error: enumeral and non-enumeral type in conditional expression
[-Werror=extra]
   writeUleb128(OS, HasMax ? WASM_LIMITS_FLAG_HAS_MAX : 0, "memory limits
flags");
                           ^
cc1plus: all warnings being treated as errors
ninja: build stopped: subcommand failed.

Please have a look?

Thanks

Galina

On Wed, Mar 14, 2018 at 6:53 AM, Nicholas Wilson via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: ncw
> Date: Wed Mar 14 06:53:58 2018
> New Revision: 327508
>
> URL: http://llvm.org/viewvc/llvm-project?rev=327508&view=rev
> Log:
> [WebAssembly] Add missing implementation for --initial/max-memory args
>
> Previously, Config->InitialMemory/MaxMemory were hooked up to some
> commandline args but had no effect at all.
>
> Differential Revision: https://reviews.llvm.org/D44393
>
> Modified:
>     lld/trunk/test/wasm/data-layout.ll
>     lld/trunk/test/wasm/import-memory.test
>     lld/trunk/wasm/Writer.cpp
>
> Modified: lld/trunk/test/wasm/data-layout.ll
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/
> data-layout.ll?rev=327508&r1=327507&r2=327508&view=diff
> ============================================================
> ==================
> --- lld/trunk/test/wasm/data-layout.ll (original)
> +++ lld/trunk/test/wasm/data-layout.ll Wed Mar 14 06:53:58 2018
> @@ -16,7 +16,10 @@ target triple = "wasm32-unknown-unknown-
>  ; RUN: wasm-ld -no-gc-sections --check-signatures --allow-undefined -o
> %t.wasm %t.o %t.hello.o
>  ; RUN: obj2yaml %t.wasm | FileCheck %s
>
> -; CHECK:        - Type:            GLOBAL
> +; CHECK:        - Type:            MEMORY
> +; CHECK-NEXT:     Memories:
> +; CHECK-NEXT:       - Initial:         0x00000002
> +; CHECK-NEXT:   - Type:            GLOBAL
>  ; CHECK-NEXT:     Globals:
>  ; CHECK-NEXT:       - Index:           0
>  ; CHECK-NEXT:         Type:            I32
> @@ -54,6 +57,18 @@ target triple = "wasm32-unknown-unknown-
>  ; CHECK-NEXT:    - Type:            CUSTOM
>
>
> +; RUN: wasm-ld -no-gc-sections --check-signatures --allow-undefined \
> +; RUN:     --initial-memory=131072 --max-memory=131072 -o %t_max.wasm
> %t.o \
> +; RUN:     %t.hello.o
> +; RUN: obj2yaml %t_max.wasm | FileCheck %s -check-prefix=CHECK-MAX
> +
> +; CHECK-MAX:        - Type:            MEMORY
> +; CHECK-MAX-NEXT:     Memories:
> +; CHECK-MAX-NEXT:       - Flags:           [ HAS_MAX ]
> +; CHECK-MAX-NEXT:         Initial:         0x00000002
> +; CHECK-MAX-NEXT:         Maximum:         0x00000002
> +
> +
>  ; RUN: wasm-ld --check-signatures --relocatable -o %t_reloc.wasm %t.o
> %t.hello.o
>  ; RUN: obj2yaml %t_reloc.wasm | FileCheck %s -check-prefix=RELOC
>
>
> Modified: lld/trunk/test/wasm/import-memory.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/
> import-memory.test?rev=327508&r1=327507&r2=327508&view=diff
> ============================================================
> ==================
> --- lld/trunk/test/wasm/import-memory.test (original)
> +++ lld/trunk/test/wasm/import-memory.test Wed Mar 14 06:53:58 2018
> @@ -11,3 +11,23 @@
>  # CHECK-NEXT:        Kind:            MEMORY
>  # CHECK-NEXT:        Memory:
>  # CHECK-NEXT:          Initial:         0x00000002
> +# CHECK-NEXT:  - Type:
> +
> +
> +
> +# RUN: wasm-ld --check-signatures --import-memory --initial-memory=262144
> \
> +# RUN:     --max-memory=327680 -o %t.max.wasm %t.start.o
> +# RUN: obj2yaml %t.max.wasm | FileCheck -check-prefix=CHECK-MAX %s
> +
> +# Verify the --initial-memory and --max-memory arguments work with imports
> +
> +# CHECK-MAX:       - Type:            IMPORT
> +# CHECK-MAX-NEXT:    Imports:
> +# CHECK-MAX-NEXT:      - Module:          env
> +# CHECK-MAX-NEXT:        Field:           memory
> +# CHECK-MAX-NEXT:        Kind:            MEMORY
> +# CHECK-MAX-NEXT:        Memory:
> +# CHECK-MAX-NEXT:          Flags:           [ HAS_MAX ]
> +# CHECK-MAX-NEXT:          Initial:         0x00000004
> +# CHECK-MAX-NEXT:          Maximum:         0x00000005
> +# CHECK-MAX-NEXT:  - Type:
>
> Modified: lld/trunk/wasm/Writer.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/Writer.
> cpp?rev=327508&r1=327507&r2=327508&view=diff
> ============================================================
> ==================
> --- lld/trunk/wasm/Writer.cpp (original)
> +++ lld/trunk/wasm/Writer.cpp Wed Mar 14 06:53:58 2018
> @@ -117,6 +117,7 @@ private:
>
>    uint64_t FileSize = 0;
>    uint32_t NumMemoryPages = 0;
> +  uint32_t MaxMemoryPages = 0;
>
>    std::vector<const WasmSignature *> Types;
>    DenseMap<WasmSignature, int32_t, WasmSignatureDenseMapInfo> TypeIndices;
> @@ -163,6 +164,10 @@ void Writer::createImportSection() {
>      Import.Kind = WASM_EXTERNAL_MEMORY;
>      Import.Memory.Flags = 0;
>      Import.Memory.Initial = NumMemoryPages;
> +    if (MaxMemoryPages != 0) {
> +      Import.Memory.Flags |= WASM_LIMITS_FLAG_HAS_MAX;
> +      Import.Memory.Maximum = MaxMemoryPages;
> +    }
>      writeImport(OS, Import);
>    }
>
> @@ -209,9 +214,12 @@ void Writer::createMemorySection() {
>    SyntheticSection *Section = createSyntheticSection(WASM_SEC_MEMORY);
>    raw_ostream &OS = Section->getStream();
>
> +  bool HasMax = MaxMemoryPages != 0;
>    writeUleb128(OS, 1, "memory count");
> -  writeUleb128(OS, 0, "memory limits flags");
> +  writeUleb128(OS, HasMax ? WASM_LIMITS_FLAG_HAS_MAX : 0, "memory limits
> flags");
>    writeUleb128(OS, NumMemoryPages, "initial pages");
> +  if (HasMax)
> +    writeUleb128(OS, MaxMemoryPages, "max pages");
>  }
>
>  void Writer::createGlobalSection() {
> @@ -599,9 +607,26 @@ void Writer::layoutMemory() {
>      log("mem: heap base   = " + Twine(MemoryPtr));
>    }
>
> +  if (Config->InitialMemory != 0) {
> +    if (Config->InitialMemory != alignTo(Config->InitialMemory,
> WasmPageSize))
> +      error("initial memory must be " + Twine(WasmPageSize) + "-byte
> aligned");
> +    if (MemoryPtr > Config->InitialMemory)
> +      error("initial memory too small, " + Twine(MemoryPtr) + " bytes
> needed");
> +    else
> +      MemoryPtr = Config->InitialMemory;
> +  }
>    uint32_t MemSize = alignTo(MemoryPtr, WasmPageSize);
>    NumMemoryPages = MemSize / WasmPageSize;
>    log("mem: total pages = " + Twine(NumMemoryPages));
> +
> +  if (Config->MaxMemory != 0) {
> +    if (Config->MaxMemory != alignTo(Config->MaxMemory, WasmPageSize))
> +      error("maximum memory must be " + Twine(WasmPageSize) + "-byte
> aligned");
> +    if (MemoryPtr > Config->MaxMemory)
> +      error("maximum memory too small, " + Twine(MemoryPtr) + " bytes
> needed");
> +    MaxMemoryPages = Config->MaxMemory / WasmPageSize;
> +    log("mem: max pages   = " + Twine(MaxMemoryPages));
> +  }
>  }
>
>  SyntheticSection *Writer::createSyntheticSection(uint32_t Type,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180314/37b501ef/attachment.html>


More information about the llvm-commits mailing list