Skip to content

Conversation

@sbc100
Copy link
Collaborator

@sbc100 sbc100 commented Nov 4, 2025

This paves the way to make --stack-first the default.

See: #151015

@llvmbot
Copy link
Member

llvmbot commented Nov 4, 2025

@llvm/pr-subscribers-lld-wasm

@llvm/pr-subscribers-lld

Author: Sam Clegg (sbc100)

Changes

This paves the way to make --stack-first the default.

See: #151015


Full diff: https://github.com/llvm/llvm-project/pull/166384.diff

2 Files Affected:

  • (modified) lld/test/wasm/stack-first.test (+25)
  • (modified) lld/wasm/Options.td (+3-2)
diff --git a/lld/test/wasm/stack-first.test b/lld/test/wasm/stack-first.test index 72e1a006d5700..33f5e6a14b564 100644 --- a/lld/test/wasm/stack-first.test +++ b/lld/test/wasm/stack-first.test @@ -8,6 +8,15 @@ RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/stack-first. RUN: wasm-ld -z stack-size=512 --stack-first --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o RUN: obj2yaml %t.wasm | FileCheck %s +; Check `--no-stack-first` +RUN: wasm-ld -z stack-size=512 --no-stack-first --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o +RUN: obj2yaml %t.wasm | FileCheck %s --check-prefix=NOT-FIRST + +; Check that the default +RUN: wasm-ld -z stack-size=512 --export=__data_end --export=__heap_base --export=someByte -o %t.wasm %t.o +RUN: obj2yaml %t.wasm | FileCheck %s --check-prefix=NOT-FIRST + + CHECK: - Type: GLOBAL CHECK-NEXT: Globals: CHECK-NEXT: - Index: 0 @@ -51,3 +60,19 @@ CHECK-NEXT: Index: 2 CHECK-NEXT: - Name: __heap_base CHECK-NEXT: Kind: GLOBAL CHECK-NEXT: Index: 3 + +NOT-FIRST: - Type: GLOBAL +NOT-FIRST-NEXT: Globals: +NOT-FIRST-NEXT: - Index: 0 +NOT-FIRST-NEXT: Type: I32 +NOT-FIRST-NEXT: Mutable: true +NOT-FIRST-NEXT: InitExpr: +NOT-FIRST-NEXT: Opcode: I32_CONST +NOT-FIRST-NEXT: Value: 1552 +NOT-FIRST-NEXT: - Index: 1 +NOT-FIRST-NEXT: Type: I32 +NOT-FIRST-NEXT: Mutable: false +NOT-FIRST-NEXT: InitExpr: +NOT-FIRST-NEXT: Opcode: I32_CONST +NOT-FIRST-NEXT: Value: 1024 + diff --git a/lld/wasm/Options.td b/lld/wasm/Options.td index 2f699e2f68350..3c9d29cd2bb6a 100644 --- a/lld/wasm/Options.td +++ b/lld/wasm/Options.td @@ -250,8 +250,9 @@ def no_entry: FF<"no-entry">, def no_shlib_sigcheck: FF<"no-shlib-sigcheck">, HelpText<"Do not check signatures of functions defined in shared libraries.">; -def stack_first: FF<"stack-first">, - HelpText<"Place stack at start of linear memory rather than after data">; +defm stack_first: B<"stack-first", + "Place stack at start of linear memory", + "Place the stack after static data refion (default)">; def table_base: JJ<"table-base=">, HelpText<"Table offset at which to place address taken functions (Defaults to 1)">; 
…first` This paves the way to make `--stack-first` the default. See: llvm#151015
HelpText<"Place stack at start of linear memory rather than after data">;
defm stack_first: B<"stack-first",
"Place stack at start of linear memory",
"Place the stack after static data refion (default)">;
Copy link

@bakkot bakkot Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"Place the stack after static data refion (default)">;
"Place the stack after static data region (default)">;

(I assume)

Co-authored-by: Derek Schuff <dschuff@chromium.org>
@sbc100 sbc100 enabled auto-merge (squash) November 4, 2025 18:34
@sbc100 sbc100 merged commit e29ee27 into llvm:main Nov 4, 2025
8 of 9 checks passed
@sbc100 sbc100 deleted the no_stack_first branch November 4, 2025 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

4 participants