On Wed, 9 Nov 2022 08:19:45 GMT, Julian Waters <[email protected]> wrote:

>> Julian Waters has updated the pull request with a new target base due to a 
>> merge or a rebase. The incremental webrev excludes the unrelated changes 
>> brought in by the merge/rebase. The pull request contains seven additional 
>> commits since the last revision:
>> 
>>  - Export not required
>>  - Merge remote-tracking branch 'upstream/master' into permissive
>>  - Merge remote-tracking branch 'upstream/master' into permissive
>>  - Merge remote-tracking branch 'upstream/master' into permissive
>>  - Format
>>  - Keep docs up to date
>>  - New --enable-conforming-compilation option
>
>> I experimented with enabling this for GHA, and it turned out that there are 
>> huge efforts needed to even make the code base compile with this flag turned 
>> on. I'm starting to wonder if it was such a great idea to introduce this, 
>> after all. I realize I did a poor job when reviewing this to ask if this did 
>> compile. Well, I can tell now, it does not. For gcc, it seems practically 
>> impossible to ever get it to work, since all hotspot constructs such as
>> 
>> ```
>> DEBUG_ONLY(if (checkResult) log_trace("Checked"));
>> ```
>> 
>> which are very common, will result in a warning about a superfluous 
>> semicolon in non-debug builds. (And similar for `AARCH64_ONLY(...);` etc).
>> 
>> For clang, this warning of semi-colon could be turned off separately, which 
>> -- combined with some other disabled warnings -- made it possible to 
>> compile. However, the code it complained about was in most cases fine, it 
>> was just using non-standard gcc or clang extensions to the C++ standard. We 
>> really need to raise this to a discussion if this should be considered a 
>> problem.
>> 
>> Here is a commit showing most (but not all) of the changes needed to make 
>> clang compile on macOS with the new conformance option turned on: 
>> [793c57a](https://github.com/openjdk/jdk/commit/793c57a8986c7875b4913b6eabbaef8baab23e3e)
>> 
>> I think some of these warnings are definitely legit, like 
>> `import-preprocessor-directive-pedantic` (where the code uses `#import` 
>> instead of `#include`) or `c++17-extensions` (we should not include code 
>> that is beyond C++14, at least not in this point in time). But most are 
>> complaints about benign use of gcc/clang extensions.
>> 
>> And the pedantic modes of gcc is really, really cranky. And it can't be 
>> piecewise turned off like clang, so as I said, I doubt this can ever get to 
>> work.
>> 
>> (Taggning @kimbarrett since I know you are interested in such questions)
> 
> Oh dear, I was expecting several issues with gcc but it seems like I 
> _grossly_ underestimated just how strict it would be. I'll back this out and 
> reopen [8241499](https://bugs.openjdk.org/browse/JDK-8241499) if there aren't 
> any objections to that, since this is my mess to clean up. From what I've 
> tested -permissive- didn't really break anything, so it should be trivial to 
> change that to just be on by default instead of through a flag (Testing not 
> considered, at least)
> 
>> c++17-extensions (we should not include code that is beyond C++14, at least 
>> not in this point in time).
> 
> There are plans for having code compatibility past C++14? Unlike the 
> permissive switch, from what I've tested a large chunk of java.desktop code 
> is really not happy with anything C++17 or above, so that would be a really 
> big problem if so

@TheShermanTanker Yes, I think that would be the best way forward. Thank you 
for taking care of it!

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

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

Reply via email to