On Fri, 2 Jun 2023 16:22:43 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
>> In C, arguments smaller than `int` are promoted to (`unsigned`) `int`, and >> `float` is promoted to `double`, when being passed as variadic argument (see >> e.g. >> https://en.cppreference.com/w/c/language/conversion#Default_argument_promotions). >> This patch adds the automatic argument promotion for variadic arguments, to >> align the implementation with the C specification. >> >> The fallback linker is also updated to use to correct function to link >> variadic calls (not doing this turned out not to be a problem so far, but it >> is problematic for instance on Mac/AArch64 when using the fallback linker). >> Adding the restriction on layouts for all linkers is also partly motivated >> by the fallback linker rejecting such unsupported variadic layouts already. >> >> I've added a small paragraph to the Linker javadoc as well that explains >> this. >> >> TestVarArgs needed to be updated in order to account for the difference in >> the promoted `float` values. >> >> Testing: >> - local testing on Windows/x64 >> - local testing on Linux/x64 using the fallback linker >> - tier1-3 + jdk-tier5 >> - manual test run on mac/aarch64 with the fallback linker to verify the >> correctness of the fallback linker changes. > > Jorn Vernee has updated the pull request incrementally with one additional > commit since the last revision: > > address review comment Marked as reviewed by mcimadamore (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/14225#pullrequestreview-1458536809