Hello, everyone,
For Qt builds using Windows ICC got error:
cd corelib\ && ( if not exist Makefile C:\libQT-5.12-dev\build\qtbase\bin\qmake.exe -o Makefile C:\libQT-5.12-dev\build\qtbase\src\corelib\corelib.pro ) && C:\Windows\jom.exe -f Makefile C:\Windows\jom.exe -f Makefile.Release icl -c -nologo -Zc:wchar_t -Qprec -Zm200 -Zc:forScope -MT -O3 -Qstd=c++14 -Qoption,cpp,--unicode_source_kind,UTF-8 -EHsc -W3 -Qdiag-disable:673,809,1738,1744,3373 -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_DEBUG -DQT_FORCE_ASSERTS -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -DNDEBUG -I. -Iglobal -I..\3rdparty\harfbuzz\src -I..\3rdparty\md5 -I..\3rdparty\md4 -I..\3rdparty\sha3 -I..\3rdparty\double-conversion\include -I..\3rdparty\double-conversion\include\double-conversion -I..\3rdparty\tinycbor\src -I..\..\include -I..\..\include\QtCore -I..\..\include\QtCore\5.12.0 -I..\..\include\QtCore\5.12.0\QtCore -Itmp -Itmp\moc\release -I.tracegen\release -IC:\libZLIB-1.2.11\ICC64RT\include -IC:\libICU-63.1-dev\ICC64RT\include -I..\3rdparty\pcre2\src -I..\..\mkspecs\win32-icc -Fo.obj\release\ @C:\Users\test\AppData\Local\Temp\qstring.obj.15316.250.jom qstring.cpp tools\qregularexpression.h(76): error: expected a "}" OptimizeOnFirstUsageOption Q_DECL_ENUMERATOR_DEPRECATED_X("This option does not have any effect since Qt 5.12") = 0x0080, ^ qstringlist.cpp C:\libQT-5.12-dev\build\qtbase\include\QtCore\../../src/corelib/tools/qregularexpression.h(76): error: expected a "}" OptimizeOnFirstUsageOption Q_DECL_ENUMERATOR_DEPRECATED_X("This option does not have any effect since Qt 5.12") = 0x0080, ^ qregularexpression.cpp tools\qregularexpression.h(76): error: expected a "}" OptimizeOnFirstUsageOption Q_DECL_ENUMERATOR_DEPRECATED_X("This option does not have any effect since Qt 5.12") = 0x0080, ^ tools\qregularexpression.cpp(2724): error: class "QRegularExpression" has no member "DontAutomaticallyOptimizeOption" if (patternOptions & QRegularExpression::DontAutomaticallyOptimizeOption) ^ qstring_compat.cpp qvector_msvc.cpp jom: C:\libQT-5.12-dev\build\qtbase\src\corelib\Makefile.Release [.obj\release\qstring.obj] Error 2 jom: C:\libQT-5.12-dev\build\qtbase\src\corelib\Makefile [release] Error 2 jom: C:\libQT-5.12-dev\build\qtbase\src\Makefile [sub-corelib-make_first] Error 2 jom: C:\libQT-5.12-dev\build\qtbase\Makefile [sub-src-make_first] Error 2 jom: C:\libQT-5.12-dev\build\Makefile [module-qtbase-make_first] Error 2
which relate to recently merged Change #232893, in particular to the code:
diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h <snip> - OptimizeOnFirstUsageOption = 0x0080, - DontAutomaticallyOptimizeOption = 0x0100 + OptimizeOnFirstUsageOption Q_DECL_ENUMERATOR_DEPRECATED_X("This option does not have any effect since Qt 5.12") = 0x0080, + DontAutomaticallyOptimizeOption Q_DECL_ENUMERATOR_DEPRECATED_X("This option does not have any effect since Qt 5.12") = 0x0100,
and the preceding Change #232892 (testcase added in attachment).
Reproduced for:
- builds using Windows ICC,
not reproduced for:
- builds using mingw-w64 and MSVC.
Environment:
- Windows 10 x64 10.0.17134.1,
- ICC 2018 Update 3,
- MSVC 2017 15.7.3,
- Windows SDK 10.0.17134.12,
- mingw-w64 x86_64 posix seh 8.1.0,
- Qt5-dev-c145e9c217857a9b67a53fb6a0cc29003e905640.
Qt Developers believe it's a compiler bug.
A related paper on open-std.org.
Best,
Alexander