You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
llvm fails to add static offset address to memory load instructions in some cases.
Here is godbold link that demonstrates the issue: https://godbolt.org/z/c6oPfehfo
The function get_YY should load value from memory address having static offset of 20, like all other functions in example.
Instead, it adds 20 to existing memory address by arithmetic operator.
All other load instructions that have offset less than 20 are using static offset as seen in godbold output.
When same struct is refactored to have five component, it works on offset 20, but does not work on offset 24. So it seems problem is always from the second component on second vector. https://godbolt.org/z/Meq858KWq
llvm fails to add static offset address to memory load instructions in some cases.
Here is godbold link that demonstrates the issue: https://godbolt.org/z/47PbT4669
The function get_YY should load value from memory address having static offset of 20, like all other functions in example.
Instead, it adds 20 to existing memory address by arithmetic operator.
All other load instructions that have offset less than 20 are using static offset as seen in godbold output.
When same struct is refactored to have five component, it works on offset 20, but does not work on offset 24. So it seems problem is always from the second component on second vector. https://godbolt.org/z/Meq858KWq
llvm fails to add static offset address to memory load instructions in some cases.
Here is godbold link that demonstrates the issue:
https://godbolt.org/z/c6oPfehfo
The function
get_YY
should load value from memory address having static offset of 20, like all other functions in example.Instead, it adds 20 to existing memory address by arithmetic operator.
All other load instructions that have offset less than 20 are using static offset as seen in godbold output.
The llvm code itself is correct:
Link to llvm output: https://godbolt.org/z/z4ehToarG
When same struct is refactored to have five component, it works on offset 20, but does not work on offset 24. So it seems problem is always from the second component on second vector.
https://godbolt.org/z/Meq858KWq
The issue occurs only when targeting to WASM, the X86 instructions are fine https://godbolt.org/z/sx67bW7dv
The text was updated successfully, but these errors were encountered: