On Tue, 6 Jun 2023 15:17:26 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 two additional 
> commits since the last revision:
> 
>  - Improve javadoc, align implementation
>  - Revert "automatically apply variadic promotions"
>    
>    This reverts commit 38d759d615b79b0c508bdf2231699c0aea0ad94f.

Marked as reviewed by mcimadamore (Reviewer).

-------------

PR Review: https://git.openjdk.org/jdk/pull/14225#pullrequestreview-1465598652

Reply via email to