ppl "remainder bug" checking on mingw targets

Hi,
I am trying to compile ppl for x86_64-w64-mingw32, for gcc. Is it normal for the "checking if the compiler has the remainder bug..." takes very long? Is there a way to bypass this check in order to speed up compilation?
Thanks!
Ruben
PS: using ppl-0.11 and TDM64 GCC 4.5.1

Ruben Van Boxem wrote:
Hi,
I am trying to compile ppl for x86_64-w64-mingw32, for gcc. Is it normal for the "checking if the compiler has the remainder bug..." takes very long?
Hello.
Never tried on that configuration, but I see no reason why it should take long. What exactly are you observing? Could it be that the time is actually spent doing something else?
Is there a way to bypass this check in order to speed up compilation?
I do not recommend bypassing it.
Enea.
Thanks!
Ruben
PS: using ppl-0.11 and TDM64 GCC 4.5.1

2010/9/15 Enea Zaffanella zaffanella@cs.unipr.it
Never tried on that configuration, but I see no reason why it should take long. What exactly are you observing? Could it be that the time is actually spent doing something else?
I can see in my task manager that conftest.exe is running, using 50% of my
dual core continually.
After I kill the conftest process, configure continues (thinks it has found the bug) and make fails on some error (deleted the build directory... if you want I can retry and help fix it).
Ruben

Ruben Van Boxem wrote:
2010/9/15 Enea Zaffanella <zaffanella@cs.unipr.it mailto:zaffanella@cs.unipr.it>
Never tried on that configuration, but I see no reason why it should take long. What exactly are you observing? Could it be that the time is actually spent doing something else?
I can see in my task manager that conftest.exe is running, using 50% of my dual core continually.
After I kill the conftest process, configure continues (thinks it has found the bug) and make fails on some error (deleted the build directory... if you want I can retry and help fix it).
Ruben
Try commenting out the following line in configure.ac # AC_CXX_HAS_REMAINDER_BUG and see if the time spent drops down.
Note: this is NOT a solution. It is just a test to see if that check is the real cause of what you are observing.
Enea.

2010/9/15 Enea Zaffanella zaffanella@cs.unipr.it
Try commenting out the following line in configure.ac # AC_CXX_HAS_REMAINDER_BUG and see if the time spent drops down.
Note: this is NOT a solution. It is just a test to see if that check is the real cause of what you are observing.
Enea.
I have localized the problem: TDM64 GCC causes the conftest.exe to run forever/"a very long time". If I use another build of the toolchain by someone else, the program crashes (which is an indicator of the bug, as I have already read somewhere).
I will take it up with TDM himself. Thanks for the help.
I am now trying to compile ppl with a trusted compiler (sezero's private build from mingw-w64.sourceforge.net) and came accross this error:
libtool: compile: x86_64-w64-mingw32-g++ -DHAVE_CONFIG_H -I.
-I../../../src/ppl/src -I.. -I.. -I../../../src/ppl/src -I/home/ruben/mingw64/build/gmp2-bin/include -g -O2 -frounding-math -W -Wall -MT Box.lo -MD -MP -MF .deps/Box.Tpo -c ../../../src/ppl/src/Box.cc -DDLL_EXPORT -DPIC -o .libs/Box.o In file included from ../../../src/ppl/src/Box.inlines.hh:26, from ../../../src/ppl/src/Box.defs.hh:2217, from ../../../src/ppl/src/Box.cc:24: ../../../src/ppl/src/Boundary.defs.hh: In function 'Parma_Polyhedra_Library::Result Parma_Polyhedra_Library::Boundary_NS::shrink(Parma_Polyhedra_Library::Boundary_NS::Boundary_Type, T&, Info&, bool)': ../../../src/ppl/src/Boundary.defs.hh:196: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Boundary.defs.hh:196: error: expected ';' before '__restrict' ../../../src/ppl/src/Boundary.defs.hh:200: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Boundary.defs.hh:200: error: expected ';' before '__restrict' In file included from ../../../src/ppl/src/Interval_Info.defs.hh:27, from ../../../src/ppl/src/Interval.defs.hh:31, from ../../../src/ppl/src/Polyhedron.templates.hh:28, from ../../../src/ppl/src/Polyhedron.defs.hh:2625, from ../../../src/ppl/src/Box.templates.hh:33, from ../../../src/ppl/src/Box.defs.hh:2218, from ../../../src/ppl/src/Box.cc:24: ../../../src/ppl/src/Interval_Restriction.defs.hh: At global scope: ../../../src/ppl/src/Interval_Restriction.defs.hh:55: error: expected ')' before ',' token ../../../src/ppl/src/Interval_Restriction.defs.hh:164: error: expected ')' before 'rdir' In file included from ../../../src/ppl/src/Interval_Info.defs.hh:27, from ../../../src/ppl/src/Interval.defs.hh:31, from ../../../src/ppl/src/Polyhedron.templates.hh:28, from ../../../src/ppl/src/Polyhedron.defs.hh:2625, from ../../../src/ppl/src/Box.templates.hh:33, from ../../../src/ppl/src/Box.defs.hh:2218, from ../../../src/ppl/src/Box.cc:24: ../../../src/ppl/src/Interval_Restriction.defs.hh:338: error: expected ')' before 'rdir' In file included from ../../../src/ppl/src/Polyhedron.templates.hh:28, from ../../../src/ppl/src/Polyhedron.defs.hh:2625, from ../../../src/ppl/src/Box.templates.hh:33, from ../../../src/ppl/src/Box.defs.hh:2218, from ../../../src/ppl/src/Box.cc:24: ../../../src/ppl/src/Interval.defs.hh: In member function 'Parma_Polyhedra_Library::Result Parma_Polyhedra_Library::Interval<Boundary, Info>::lower_normalize() const': ../../../src/ppl/src/Interval.defs.hh:106: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.defs.hh:106: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.defs.hh:111: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.defs.hh:111: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.defs.hh: In member function 'Parma_Polyhedra_Library::Result Parma_Polyhedra_Library::Interval<Boundary, Info>::upper_normalize() const': ../../../src/ppl/src/Interval.defs.hh:127: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.defs.hh:127: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.defs.hh:132: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.defs.hh:132: error: expected ';' before '__restrict' In file included from ../../../src/ppl/src/Interval.defs.hh:843, from ../../../src/ppl/src/Polyhedron.templates.hh:28, from ../../../src/ppl/src/Polyhedron.defs.hh:2625, from ../../../src/ppl/src/Box.templates.hh:33, from ../../../src/ppl/src/Box.defs.hh:2218, from ../../../src/ppl/src/Box.cc:24: ../../../src/ppl/src/Interval.inlines.hh: In member function 'typename Parma_Polyhedra_Library::Enable_If<(Parma_Polyhedra_Library::Is_Singleton::value || Parma_Polyhedra_Library::Is_Interval::value), bool>::type Parma_Polyhedra_Library::Interval<Boundary, Info>::can_be_exactly_joined_to(const Type&) const': ../../../src/ppl/src/Interval.inlines.hh:324: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:324: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:324: error: expected primary-expression before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:324: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:329: error: expected unqualified-id before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:329: error: expected ';' before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:329: error: expected primary-expression before '__restrict' ../../../src/ppl/src/Interval.inlines.hh:329: error: expected ';' before '__restrict' make[3]: *** [Box.lo] Error 1 make[3]: Leaving directory `/home/Ruben/mingw64/build/ppl/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/Ruben/mingw64/build/ppl/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/Ruben/mingw64/build/ppl' make: *** [all] Error 2
Unless you know a fix, I will take this and any other errors to the mingw-w64 mailing list and recontact you when I have all the necessary fixes.
Ruben

2010/9/15 Ruben Van Boxem vanboxem.ruben@gmail.com
I am now trying to compile ppl with a trusted compiler (sezero's private build from mingw-w64.sourceforge.net) and came accross this error:
The cause of the error is located: the mingw-w64 headers used the assumption that "restrict" is a keyword in C++ (but it is only a keyword in C99), and defined something accordingly (don't know what exactly). All the references in the error message are to a member function named "restrict", which was problematic. "restrict" is a keyword in C99, but as ppl is C++, it should be ok (as long as the std doesn't add it later).
The mingw-w64 headers have been changed to remove the problem (patch is underway).
Additionally, unlike mpfr and mpc, which detect automatically if GMP has been built statically and/or dynamically, ppl does not, and I had to add "--disable-shared" to my configure arguments for ppl. Is there a way to mimic the mpfr and mpc behavior to autodetect this? Thanks.
I have also run "make check", which passes all tests on x86_64-w64-mingw32 (this is with ppl release 0.11 and GCC 4.4.5 (prerelease dated 20100912) built from MSYS).
Ruben
participants (2)
-
Enea Zaffanella
-
Ruben Van Boxem