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

[wasm] Add optimization flags to bitcode compilation #101538

Merged
merged 5 commits into from
Apr 26, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/mono/browser/build/BrowserWasmApp.targets
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,8 @@
<EmccCompileOptimizationFlag Condition="'$(EmccCompileOptimizationFlag)' == ''">$(_EmccOptimizationFlagDefault)</EmccCompileOptimizationFlag>
<!-- FIXME: which one should take precedence? -->
<WasmCompileOptimizationFlag>$(EmccCompileOptimizationFlag)</WasmCompileOptimizationFlag>
<WasmBitcodeCompileOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == '' and '$(Configuration)' == 'Release'">-O2</WasmBitcodeCompileOptimizationFlag>
<WasmBitcodeCompileOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == '' ">WasmCompileOptimizationFlag</WasmBitcodeCompileOptimizationFlag>
radekdoulik marked this conversation as resolved.
Show resolved Hide resolved
<EmccLinkOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == '' and '$(Configuration)' == 'Release'">-O2</EmccLinkOptimizationFlag>
<EmccLinkOptimizationFlag Condition="'$(EmccLinkOptimizationFlag)' == ''" >$(WasmCompileOptimizationFlag)</EmccLinkOptimizationFlag>
<WasmLinkOptimizationFlag>$(EmccLinkOptimizationFlag)</WasmLinkOptimizationFlag>
Expand Down Expand Up @@ -406,6 +408,7 @@

<Target Name="_BrowserWasmBeforeWriteCompileBitcodeRsp" BeforeTargets="_WasmWriteRspForCompilingBitcode">
<ItemGroup>
<_BitcodeCompileFlags Include="$(WasmBitcodeCompileOptimizationFlag)" />
<_BitcodeCompileFlags Include="@(_EmccCommonFlags)" />
<_BitcodeCompileFlags Include="$(EmccExtraBitcodeCompilationFlags)" />
</ItemGroup>
Expand Down
3 changes: 3 additions & 0 deletions src/mono/wasi/build/WasiApp.targets
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@

<WasiClangCompileOptimizationFlag Condition="'$(WasiClangCompileOptimizationFlag)' == ''">$(_WasiClangOptimizationFlagDefault)</WasiClangCompileOptimizationFlag>
<WasmCompileOptimizationFlag>$(WasiClangCompileOptimizationFlag)</WasmCompileOptimizationFlag>
<WasiBitcodeCompileOptimizationFlag Condition="'$(WasiBitcodeCompileOptimizationFlag)' == '' and '$(Configuration)' == 'Release'">-O2</WasiBitcodeCompileOptimizationFlag>
Copy link
Member

Choose a reason for hiding this comment

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

Do we want a separate property for WASI?

Copy link
Member Author

Choose a reason for hiding this comment

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

We have other wasi specific flags here too, like WasiClangLinkOptimizationFlag, so I kept it separate as well.

Copy link
Member

Choose a reason for hiding this comment

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

I think WasiClangLinkOptimizationFlag is specific thing for WASI. This one is a shared concept from my POV

<WasiBitcodeCompileOptimizationFlag Condition="'$(WasiBitcodeCompileOptimizationFlag)' == ''" >$(WasiClangCompileOptimizationFlag)</WasiBitcodeCompileOptimizationFlag>
<WasiClangLinkOptimizationFlag Condition="'$(WasiClangLinkOptimizationFlag)' == '' and '$(Configuration)' == 'Release'">-O2</WasiClangLinkOptimizationFlag>
<WasiClangLinkOptimizationFlag Condition="'$(WasiClangLinkOptimizationFlag)' == ''" >$(WasiClangCompileOptimizationFlag)</WasiClangLinkOptimizationFlag>
<WasmLinkOptimizationFlag>$(WasiClangLinkOptimizationFlag)</WasmLinkOptimizationFlag>
Expand Down Expand Up @@ -265,6 +267,7 @@
<!-- FIXME: merge with some other target -->
<Target Name="_WasiBeforeWriteRspForCompilingBitcodeRsp" BeforeTargets="_WasmWriteRspForCompilingBitcode">
<ItemGroup>
<_BitcodeCompileFlags Include="@(WasiBitcodeCompileOptimizationFlag)" />
<_BitcodeCompileFlags Include="@(_WasiClangCommonFlags)" />
<_BitcodeCompileFlags Include="$(WasiClangExtraBitcodeCompileFlags)" />
</ItemGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/mono/wasm/build/WasmApp.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@

- $(EmccLinkOptimizationFlag) - Optimization flag to use for the link step
- $(EmccCompileOptimizationFlag) - Optimization flag to use for compiling native files
- $(WasmBitcodeCompileOptimizationFlag)
Copy link
Member

Choose a reason for hiding this comment

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

If we end up having a separate WasiBitcodeCompileOptimizationFlag property for WASI, we should probably state it here.
On the other hand, this file is named common, but it contains basically the browser story properties

Copy link
Member Author

Choose a reason for hiding this comment

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

The other wasi specific properties are not listed here either. I guess we consider it rapidly moving target?

- Optimization flag to use for compiling bitcode files

- $(EmccFlags) - Emcc flags used for both compiling native files, and linking
- $(EmccExtraLDFlags) - Extra emcc flags for linking
Expand Down
Loading