On Wed, 9 Nov 2022 12:15:28 GMT, Magnus Ihse Bursie <[email protected]> wrote:

>> FWIW, `-permissive-` is getting less permissive with every compiler 
>> iteration; with MSVC2022 (` C Compiler:     Version 19.33.31629`) even 
>> hotspot doesn't build.
>
> @djelinski That's a bit alarming. :-/ Do you have any idea if it complains 
> "correctly" on Hotspot by detecting fishy code that should be fixed, or if it 
> is overly cranky and is complaining about reasonable but non-standard 
> extensions?

@magicus that depends on how you define "cranky"; in default mode, `long` and 
`int` are fully interchangeable. In `permissive-`, they are [distinct 
types](https://learn.microsoft.com/en-us/cpp/overview/cpp-conformance-improvements-2019?view=msvc-170#overload-resolution-involving-integral-overloads-and-long-arguments).
 As a result, compilation of code that assumes that `jint` is equal to `int` 
breaks (on Windows, `jint` is typedef'd to `long`).

Example failure:

C:...\src\hotspot\share\opto\mulnode.cpp(248): error C2668: 'uabs': ambiguous 
call to overloaded function
C:...\src\hotspot\share\utilities/globalDefinitions.hpp(1146): note: could be 
'unsigned int uabs(int)'
C:...\src\hotspot\share\utilities/globalDefinitions.hpp(1145): note: or       
'julong uabs(jlong)'
C:...\src\hotspot\share\utilities/globalDefinitions.hpp(1136): note: or       
'julong uabs(julong)'
C:...\src\hotspot\share\utilities/globalDefinitions.hpp(1127): note: or       
'unsigned int uabs(unsigned int)'
C:...\src\hotspot\share\opto\mulnode.cpp(248): note: while trying to match the 
argument list '(const jint)'

FWIW, clang-cl also fails on this.

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

PR: https://git.openjdk.org/jdk/pull/10912

Reply via email to