You cannot use "-c" and "-lm" together, as the "-c" makes the "-lm" semantically void.
You cannot use "-m96bit-long-double" and "-m128bit-long-double" together, as they are mutually exclusive.
For C++ you should use "g++", for C you should use "gcc".
Other than that...
$ g++ foo.cpp -mno-cygwin -mdll -DBUILD_DLL -O3 -c -fno-exceptions -ffast-math
...worked for me just fine.
$ g++ --version g++ (GCC) 3.3.1 (cygming special) Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Are you using GCC/Mingw32 3.3.1? Or 3.4.0?
--Eljay