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
The param_ptr32 disassembler must be equal to emulate_ptr32, like struct_ptr32, and different from param_std. Based on the Godbolt listing, the MSVC and Clang for Windows target (x86_64-windows-gnu) compilers do just that. But on non-Windows platforms, Clang may not do the important conversion from a 32-bit pointer to a 64-bit one. I have localized this behavior in two cases. First, if the pointer appears as a function argument (param_ptr32). Second, if it is a member of a small structure that is passed as an argument (change Qux& qux to Qux qux).
The text was updated successfully, but these errors were encountered:
Problem
32-bit pointer does not work correctly on non-Windows platforms. See the Godbolt listing.
Sample
Conclusions
The
param_ptr32
disassembler must be equal toemulate_ptr32
, likestruct_ptr32
, and different fromparam_std
. Based on the Godbolt listing, the MSVC and Clang for Windows target (x86_64-windows-gnu) compilers do just that. But on non-Windows platforms, Clang may not do the important conversion from a 32-bit pointer to a 64-bit one. I have localized this behavior in two cases. First, if the pointer appears as a function argument (param_ptr32
). Second, if it is a member of a small structure that is passed as an argument (changeQux& qux
toQux qux
).The text was updated successfully, but these errors were encountered: