It provides better C++ conformance and will be turned on when compiling C++20.
Created attachment 445038 [details] WIP Patch
Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE
I'm going to fix the compilation errors in sub tickets. However, there are more warnings C5054 and C5055. I think we shoud suppress them. Source\WebCore\rendering\style\RenderStyleConstants.h(1093): warning C5054: operator '|': deprecated between enumerations of different types Source\WebCore\rendering\style\RenderStyleConstants.h(1094): warning C5054: operator '|': deprecated between enumerations of different types Source\WebCore\rendering\style\RenderStyleConstants.h(1095): warning C5054: operator '|': deprecated between enumerations of different types Source\WebCore\rendering\style\RenderStyleConstants.h(1096): warning C5054: operator '|': deprecated between enumerations of different types Source\ThirdParty\ANGLE\src\libANGLE/Program.h(755): warning C5054: operator '+': deprecated between enumerations of different types Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(145): warning C5054: operator '+': deprecated between enumerations of different types Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(149): warning C5054: operator '+': deprecated between enumerations of different types Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(153): warning C5054: operator '+': deprecated between enumerations of different types Source\WebCore\platform\graphics\nicosia\NicosiaAnimation.cpp(232): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\animation/CSSAnimation.cpp(103): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\css/CSSComputedStyleDeclaration.cpp(3568): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(48): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(50): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(53): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(61): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(62): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(65): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(72): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(73): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(76): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(148): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(148): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(151): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(151): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(154): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(154): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(157): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(160): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(160): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(163): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(163): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(166): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(169): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(172): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(172): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(194): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(199): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(208): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(210): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(212): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(222): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(223): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(225): warning C5055: operator '!=': deprecated between enumerations and floating-point types Source\WebCore\dom/ViewportArguments.cpp(232): warning C5055: operator '==': deprecated between enumerations and floating-point types Source\WebCore\dom/WheelEvent.cpp(64): warning C5055: operator '*': deprecated between enumerations and floating-point types Source\WebCore\dom/WheelEvent.cpp(64): warning C5055: operator '*': deprecated between enumerations and floating-point types
Created attachment 447783 [details] Patch
WinCairo EWS failed to compile. FAILED: Source/ThirdParty/ANGLE/CMakeFiles/ANGLE.dir/src/common/MemoryBuffer.cpp.obj C:\MSVS\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe (...) ..\..\Source\ThirdParty\ANGLE\src\common\MemoryBuffer.cpp C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1427): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1540): note: see reference to class template instantiation 'Microsoft::WRL::Module<Microsoft::WRL::InProc,ModuleT>' being compiled C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1433): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details' I don't see such error on my env. I'm using Visual Studio 2019 16.11.8.
Oh, no. WinCairo EWS is still failing after updating. FAILED: Source/ThirdParty/ANGLE/CMakeFiles/ANGLE.dir/src/compiler/translator/ValidateMaxParameters.cpp.obj C:\MSVS\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe (...) C:\BW\WinCairo-EWS\build\Source\ThirdParty\ANGLE\src\compiler\translator\ValidateMaxParameters.cpp C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1427): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1540): note: see reference to class template instantiation 'Microsoft::WRL::Module<Microsoft::WRL::InProc,ModuleT>' being compiled C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1433): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details' C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details'
I downgraded Windows 10 SDK to 10.0.17763.0 locally. It can reproduce the same error.
It appears to have built with test image using 18362, but I need to check that the update works okay on the non-ews builder and tester.
Created attachment 448447 [details] Patch
Bug 233963 turned C++20 on. We no longer need to explicitly set /permissive-. Closed. I'm going to suppress the warnings in another bug: Bug 234929 – [MSVC] Suppress new warnings C5054 and C5055 introduced by /permissive-