Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WebAssembly] Fix feature coalescing #110647

Merged
merged 1 commit into from
Oct 15, 2024
Merged

[WebAssembly] Fix feature coalescing #110647

merged 1 commit into from
Oct 15, 2024

Conversation

nikic
Copy link
Contributor

@nikic nikic commented Oct 1, 2024

This fixes a problem introduced in #80094. That PR copied negative features from the TargetMachine to the end of the feature string. This is not correct, because even if we have a baseline TM of say -simd128, but a function with +simd128, the coalesced feature string should have +simd128, not -simd128.

To address the original motivation of that PR, we should instead explicitly materialize the negative features in the target feature string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this using llc, because -mattr appends the specified features to the end of the "target-features" attribute. I've tested this locally by making it prepend the features instead.

This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string.
This is not correct, because even if we have a baseline TM of
say `-simd128`, but a function with `+simd128`, the coalesced
feature string must have `+simd128`, not `-sidm128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test
this using llc, because `-mattr` appends the specified features
to the end of the `"target-features"` attribute. I've tested this
locally by making it prepend the features instead.
@nikic
Copy link
Contributor Author

nikic commented Oct 14, 2024

Ping

Copy link
Collaborator

@tlively tlively left a comment

Choose a reason for hiding this comment

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

LGTM, thanks!

@nikic nikic merged commit 5a7b79c into llvm:main Oct 15, 2024
9 checks passed
@nikic nikic deleted the wasm-feature-fix branch October 15, 2024 07:34
@nikic nikic added this to the LLVM 19.X Release milestone Oct 15, 2024
@nikic
Copy link
Contributor Author

nikic commented Oct 15, 2024

/cherry-pick 5a7b79c

llvmbot pushed a commit to llvmbot/llvm-project that referenced this pull request Oct 15, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.

(cherry picked from commit 5a7b79c)
@llvmbot
Copy link
Member

llvmbot commented Oct 15, 2024

/pull-request #112431

DanielCChen pushed a commit to DanielCChen/llvm-project that referenced this pull request Oct 16, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.
bricknerb pushed a commit to bricknerb/llvm-project that referenced this pull request Oct 17, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.
EricWF pushed a commit to efcs/llvm-project that referenced this pull request Oct 22, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.
tru pushed a commit to llvmbot/llvm-project that referenced this pull request Oct 29, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.

(cherry picked from commit 5a7b79c)
tru pushed a commit to llvmbot/llvm-project that referenced this pull request Oct 29, 2024
This fixes a problem introduced in llvm#80094. That PR copied negative
features from the TargetMachine to the end of the feature string. This
is not correct, because even if we have a baseline TM of say `-simd128`,
but a function with `+simd128`, the coalesced feature string should have
`+simd128`, not `-simd128`.

To address the original motivation of that PR, we should instead
explicitly materialize the negative features in the target feature
string, so that explicitly disabled default features are honored.

Unfortunately, there doesn't seem to be any way to actually test this
using llc, because `-mattr` appends the specified features to the end of
the `"target-features"` attribute. I've tested this locally by making it
prepend the features instead.

(cherry picked from commit 5a7b79c)
sunfishcode added a commit to WebAssembly/wasi-sdk that referenced this pull request Dec 11, 2024
Update to LLVM 19.1.5, and wasi-libc 574b88da. This notably picks up:
 - [WebAssembly] Fix rethrow's index calculation (llvm/llvm-project#114693)
 - [WebAssembly] Fix feature coalescing (llvm/llvm-project#110647)
sunfishcode added a commit to WebAssembly/wasi-sdk that referenced this pull request Dec 12, 2024
Update to LLVM 19.1.5, and wasi-libc 574b88da. This notably picks up:
 - [WebAssembly] Fix rethrow's index calculation (llvm/llvm-project#114693)
 - [WebAssembly] Fix feature coalescing (llvm/llvm-project#110647)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

3 participants