This is not the same issue as #102583 - that issue is saying that -Wall works the same way as /-Wall, which is likely intentional
This issue is that the documented behavior of clang-cl /Wall is extremely surprising - both -Wall and /Wall should be mapped to clang's -Wall, not -Weverything
It was surprising as:
- I had a clean build with MSVC
cl.exe /Wall /WX
- I had a clean build with
clang++.exe -Wall -Werror
- I had a failing build with
clang-cl.exe /Wall /WX
The set of 'everything' is particularly problematic as even if you're passing /std:c++20, you still get -Wc++98-compat - of course my code that targets C++20 is not compatible with C++98.
While it could be argued that /W4 is closer to clang's -Wall, the above makes the current mapping basically unusable for modern code. A potential middle ground would be to map /Wall to -Wall -Wextra ?
This is not the same issue as #102583 - that issue is saying that
-Wallworks the same way as/-Wall, which is likely intentionalThis issue is that the documented behavior of
clang-cl/Wallis extremely surprising - both-Walland/Wallshould be mapped to clang's-Wall, not-WeverythingIt was surprising as:
cl.exe /Wall /WXclang++.exe -Wall -Werrorclang-cl.exe /Wall /WXThe set of 'everything' is particularly problematic as even if you're passing
/std:c++20, you still get-Wc++98-compat- of course my code that targets C++20 is not compatible with C++98.While it could be argued that
/W4is closer to clang's-Wall, the above makes the current mapping basically unusable for modern code. A potential middle ground would be to map/Wallto-Wall -Wextra?