From: Ruben V. B. <van...@gm...> - 2012-12-22 11:09:10
|
Hi, I'm testing trunk MinGW-w64 and GCC trunk, and running into this issue compiling my personal project: In file included from m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\x86intrin.h:27:0, from m:\development\mingw64\include\c++\4.8.0\bits\opt_random.h:33, from m:\development\mingw64\include\c++\4.8.0\random:51, from m:\development\mingw64\include\c++\4.8.0\bits\stl_algo.h:67, from m:\development\mingw64\include\c++\4.8.0\algorithm:63, from ..\..\..\Source\Ambrosia\libAmbrosia\Include/Ambrosia/algorithm.h:33, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:23: m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\ia32intrin.h:95:1: error: previous declaration of 'long long unsigned int __rdtsc()' with 'C++' linkage __rdtsc (void) ^ In file included from m:\development\mingw64\x86_64-w64-mingw32\include\winnt.h:1463:0, from m:\development\mingw64\x86_64-w64-mingw32\include\windef.h:139, from m:\development\mingw64\x86_64-w64-mingw32\include\windows.h:69, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:53: m:\development\mingw64\x86_64-w64-mingw32\include\intrin.h:978:5: error: conflicts with new declaration with 'C' linkage __MACHINEI(__MINGW_EXTENSION unsigned __int64 __rdtsc(void)) ^ In file included from m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\x86intrin.h:27:0, from m:\development\mingw64\include\c++\4.8.0\bits\opt_random.h:33, from m:\development\mingw64\include\c++\4.8.0\random:51, from m:\development\mingw64\include\c++\4.8.0\bits\stl_algo.h:67, from m:\development\mingw64\include\c++\4.8.0\algorithm:63, from ..\..\..\Source\Ambrosia\libAmbrosia\Include/Ambrosia/algorithm.h:33, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:23: m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\ia32intrin.h:210:1: error: previous declaration of 'long long unsigned int __rolq(long long unsigned int, int)' with 'C++' linkage __rolq (unsigned long long __X, int __C) ^ In file included from m:\development\mingw64\x86_64-w64-mingw32\include\winnt.h:1463:0, from m:\development\mingw64\x86_64-w64-mingw32\include\windef.h:139, from m:\development\mingw64\x86_64-w64-mingw32\include\windows.h:69, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:53: m:\development\mingw64\x86_64-w64-mingw32\include\intrin.h:1046:5: error: conflicts with new declaration with 'C' linkage __MACHINE(__MINGW_EXTENSION unsigned __int64 __cdecl _rotl64(unsigned __int64,int)) ^ In file included from m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\x86intrin.h:27:0, from m:\development\mingw64\include\c++\4.8.0\bits\opt_random.h:33, from m:\development\mingw64\include\c++\4.8.0\random:51, from m:\development\mingw64\include\c++\4.8.0\bits\stl_algo.h:67, from m:\development\mingw64\include\c++\4.8.0\algorithm:63, from ..\..\..\Source\Ambrosia\libAmbrosia\Include/Ambrosia/algorithm.h:33, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:23: m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\ia32intrin.h:218:1: error: previous declaration of 'long long unsigned int __rorq(long long unsigned int, int)' with 'C++' linkage __rorq (unsigned long long __X, int __C) ^ In file included from m:\development\mingw64\x86_64-w64-mingw32\include\winnt.h:1463:0, from m:\development\mingw64\x86_64-w64-mingw32\include\windef.h:139, from m:\development\mingw64\x86_64-w64-mingw32\include\windows.h:69, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:53: m:\development\mingw64\x86_64-w64-mingw32\include\intrin.h:1047:5: error: conflicts with new declaration with 'C' linkage __MACHINE(__MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64,int)) ^ There are no direct includes of windows.h in my code at that point. Please fix so I can upload a GCC 4.8 prerelease build :) Thank you! Ruben |
From: Kai T. <kti...@go...> - 2012-12-22 11:23:35
|
Please include first the windows.h header, and then do other includes. There is nothing to fix on mingw-w64's side. It might be a gcc-intrinsic header bug, as API should be artificial but still has language-binding. AFAIR there is already a bug-report on gcc's bz about that. See Windows.cpp: line 59 ... move this include at to of include-chain. Regards, Kai |
From: Jacek C. <ja...@co...> - 2012-12-22 12:02:44
|
On 12/22/12 12:23 PM, Kai Tietz wrote: > Please include first the windows.h header, and then do other includes. > > There is nothing to fix on mingw-w64's side. It might be a > gcc-intrinsic header bug, as API should be artificial but still has > language-binding. AFAIR there is already a bug-report on gcc's bz > about that. > > See Windows.cpp: line 59 ... move this include at to of include-chain. > We already have workarounds for this kind of things in the tree, we just need to extend it for this particular intrin. I will prepare a patch later. Cheers, Jacek |
From: Ruben V. B. <van...@gm...> - 2012-12-22 12:43:42
|
2012/12/22 Jacek Caban <ja...@co...> > On 12/22/12 12:23 PM, Kai Tietz wrote: > > Please include first the windows.h header, and then do other includes. > > > > There is nothing to fix on mingw-w64's side. It might be a > > gcc-intrinsic header bug, as API should be artificial but still has > > language-binding. AFAIR there is already a bug-report on gcc's bz > > about that. > > > > See Windows.cpp: line 59 ... move this include at to of include-chain. > > > > We already have workarounds for this kind of things in the tree, we just > need to extend it for this particular intrin. I will prepare a patch later. > Thanks! Ruben > > Cheers, > Jacek > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Mingw-w64-public mailing list > Min...@li... > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > |
From: Jacek C. <ja...@co...> - 2012-12-22 19:26:07
|
On 12/22/12 1:43 PM, Ruben Van Boxem wrote: > 2012/12/22 Jacek Caban <ja...@co... > <mailto:ja...@co...>> > > On 12/22/12 12:23 PM, Kai Tietz wrote: > > Please include first the windows.h header, and then do other > includes. > > > > There is nothing to fix on mingw-w64's side. It might be a > > gcc-intrinsic header bug, as API should be artificial but still has > > language-binding. AFAIR there is already a bug-report on gcc's bz > > about that. > > > > See Windows.cpp: line 59 ... move this include at to of > include-chain. > > > > We already have workarounds for this kind of things in the tree, > we just > need to extend it for this particular intrin. I will prepare a > patch later. > > > Thanks! Here is a patch ready for tests: http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/5fae66d9afe5ed89f4a5f6123a5559b138ac23e1 I will have it tested and ready for commit tomorrow, after my cron jobs run with it deployed. Jacek |
From: Ruben V. B. <van...@gm...> - 2012-12-22 19:41:41
|
2012/12/22 Jacek Caban <ja...@co...> > On 12/22/12 1:43 PM, Ruben Van Boxem wrote: > > 2012/12/22 Jacek Caban <ja...@co...> > >> On 12/22/12 12:23 PM, Kai Tietz wrote: >> > Please include first the windows.h header, and then do other includes. >> > >> > There is nothing to fix on mingw-w64's side. It might be a >> > gcc-intrinsic header bug, as API should be artificial but still has >> > language-binding. AFAIR there is already a bug-report on gcc's bz >> > about that. >> > >> > See Windows.cpp: line 59 ... move this include at to of include-chain. >> > >> >> We already have workarounds for this kind of things in the tree, we just >> need to extend it for this particular intrin. I will prepare a patch >> later. >> > > Thanks! > > > Here is a patch ready for tests: > > http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/5fae66d9afe5ed89f4a5f6123a5559b138ac23e1 > I will have it tested and ready for commit tomorrow, after my cron jobs > run with it deployed. > My quick testing by manually applying the patch to the previously built toolchain shows you missed one in winnt.h: In file included from m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\x86intrin.h:27:0, from m:\development\mingw64\include\c++\4.8.0\bits\opt_random.h:33, from m:\development\mingw64\include\c++\4.8.0\random:51, from m:\development\mingw64\include\c++\4.8.0\bits\stl_algo.h:67, from m:\development\mingw64\include\c++\4.8.0\algorithm:63, from ..\..\..\Source\Ambrosia\libAmbrosia\Include/Ambrosia/algorithm.h:33, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:23: m:\development\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.0\include\ia32intrin.h:95:1: error: previous declaration of 'long long unsigned int __rdtsc()' with 'C++' linkage __rdtsc (void) ^ In file included from m:\development\mingw64\x86_64-w64-mingw32\include\windef.h:139:0, from m:\development\mingw64\x86_64-w64-mingw32\include\windows.h:69, from ..\..\..\Source\Ambrosia\libAmbrosia\Source\Platform\windows.cpp:53: m:\development\mingw64\x86_64-w64-mingw32\include\winnt.h:1513:52: error: conflicts with new declaration with 'C' linkage __MINGW_EXTENSION unsigned __int64 __rdtsc(void); ^ Guarding this declaration with #ifndef __GNUC__ ... #endif allows my code to be compiled as previously was possible. Thanks! Ruben > > Jacek > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > Mingw-w64-public mailing list > Min...@li... > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > |
From: Jacek C. <ja...@co...> - 2012-12-22 19:53:47
|
On 12/22/12 8:41 PM, Ruben Van Boxem wrote: > 2012/12/22 Jacek Caban <ja...@co... > <mailto:ja...@co...>> > > On 12/22/12 1:43 PM, Ruben Van Boxem wrote: >> 2012/12/22 Jacek Caban <ja...@co... >> <mailto:ja...@co...>> >> >> On 12/22/12 12:23 PM, Kai Tietz wrote: >> > Please include first the windows.h header, and then do >> other includes. >> > >> > There is nothing to fix on mingw-w64's side. It might be a >> > gcc-intrinsic header bug, as API should be artificial but >> still has >> > language-binding. AFAIR there is already a bug-report on >> gcc's bz >> > about that. >> > >> > See Windows.cpp: line 59 ... move this include at to of >> include-chain. >> > >> >> We already have workarounds for this kind of things in the >> tree, we just >> need to extend it for this particular intrin. I will prepare >> a patch later. >> >> >> Thanks! > > Here is a patch ready for tests: > http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/5fae66d9afe5ed89f4a5f6123a5559b138ac23e1 > I will have it tested and ready for commit tomorrow, after my cron > jobs run with it deployed. > > > My quick testing by manually applying the patch to the previously > built toolchain shows you missed one in winnt.h: Right, my simplified test case didn't catch it. We may simply remove __rdtsc from winnt.h, since we include intrin.h there anyway. Jacek |
From: Kai T. <kti...@go...> - 2012-12-22 21:23:16
|
2012/12/22 Jacek Caban <ja...@co...>: > On 12/22/12 8:41 PM, Ruben Van Boxem wrote: > > 2012/12/22 Jacek Caban <ja...@co...> >> >> On 12/22/12 1:43 PM, Ruben Van Boxem wrote: >> >> 2012/12/22 Jacek Caban <ja...@co...> >>> >>> On 12/22/12 12:23 PM, Kai Tietz wrote: >>> > Please include first the windows.h header, and then do other includes. >>> > >>> > There is nothing to fix on mingw-w64's side. It might be a >>> > gcc-intrinsic header bug, as API should be artificial but still has >>> > language-binding. AFAIR there is already a bug-report on gcc's bz >>> > about that. >>> > >>> > See Windows.cpp: line 59 ... move this include at to of include-chain. >>> > >>> >>> We already have workarounds for this kind of things in the tree, we just >>> need to extend it for this particular intrin. I will prepare a patch >>> later. >> >> >> Thanks! >> >> >> Here is a patch ready for tests: >> >> http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/5fae66d9afe5ed89f4a5f6123a5559b138ac23e1 >> I will have it tested and ready for commit tomorrow, after my cron jobs >> run with it deployed. > > > My quick testing by manually applying the patch to the previously built > toolchain shows you missed one in winnt.h: > > > Right, my simplified test case didn't catch it. We may simply remove __rdtsc > from winnt.h, since we include intrin.h there anyway. > > Jacek Yes, and cygwin can live my it AFAICS. If tests are successful, the patch is pre-approved. Thanks, Kai |