Lee Rhodes wrote: > Your arguments are convincing. Thanks. > > I didn't build with libgomp (openMP) or libmudflap (bounds checking for > c), and I am wondering if I should have, but I am not sure of the > consequences. > > 1. Does the absense of libmudflap prevent optional bounds checking in C++? > 2. Does the absense of libgomp prevent thread programming? > > If I need to rebuild using these libraries, where do I get them? > I couldn't find them in cygwin setup. Those are both gcc target libraries, parts of the compiler. You won't find them anywhere in Cygwin's setup.exe because they did not exist in gcc 3.x, and gcc 3.x binaries are the only officially supported version at this time. If they're not being built it's because they aren't configured. Try adding --enable-libgomp and --enable-libmudflap to your configure invocation. Note that libgomp requires proper setting of the thread model, which for Cygwin is --enable-threads=posix. I'm not sure if this option is auto-detected correctly or not, so it wouldn't hurt to explicitly give it. Also note that the fact that they aren't automatically enabled on the Cygwin target probably means that it's not entirely clear that they're 100% functional there. However, enabling them and then running their testsuites is a good way to find out. The last time I ran the libgomp 4.3 testsuite on Cygwin I got 484 PASS and only 2 FAIL, so it looks like it's pretty close. I don't think I've run the libmudflap testsuite before. You can dig around the gcc-testresults archive to find other examples. To answer 1: Yes, you need a functioning libmudflap in order to use the -fmudflap compiler option. To answer 2: No, enabling OpenMP is not a prerequisite for writing threaded programs. You can still write plain old C/C++ code that uses the pthreads API, this requires no special support from the compiler. What OpenMP gives you is the ability to tell the compiler to automatically parallelize certain operations. This is not entirely automatic though, you need to compile with -fopenmp and the source code needs explicit markup with "#pragma omp" directives, so this is only useful if you have code that was explicitly written to use OpenMP; it is not a general purpose thing. Brian