Opened 13 years ago
Closed 13 years ago
#5168 closed Bug report (worksforme)
gcc compiler switches -O2 and -O3 generates bad code. use -O
|Reported by:||Jim Michaels||Owned by:|
|Component version:||Operating system type:||Windows|
|Operating system version:||XP Pro Sp3|
I have written a SHA512 implementation for my own use, and I could not get get the right test results with integer calculations using gcc -O2 or -O3. So I am saying that gcc -O2 and gcc -O3 both generate corrupt, improper code. gcc -O generates good code.
SHA512 involves a lot of shifts, multiplies, adds. I understand packets (if you are doing that) require calculations as well, for calculating length, size, checksums, etc. so there may be some similarities in the calculations.
I suggest you stay away from using -O2 or -O3 and stick with -O for compiler optimization.
You may find some bugs disappear once you switch to -O.
Suggest you do the same with FileZilla Server.
I also use mingw. I used to use mingw, but now I use mingw-w64, since it has TR1 and it can compile 64-bit code.
There is also a known compiler bug I discovered (gcc folk won't fix it - talk to them?) that -fpack-struct does not work with iostream, locale, fstream C++ libraries. It will generate huge numbers of errors. They said something like it is not supposed to work together or something like that. (bolderdash)
These are not a problem with microsoft or borland commercial compilers.
I am basing this bug on the information I obtained in the Help|About dialog where it says "Compiler Flags":
Compiled for: i586-pc-mingw32msvc
Compiled on: x86_64-unknown-linux-gnu
Build date: 2010-01-03
Compiled with: i586-mingw32msvc-gcc (GCC) 4.2.1-sjlj (mingw32-2)
Compiler flags: -g -O2 -Wall -g -fexceptions
Change History (2)
comment:1 by , 13 years ago
|Summary:||gcc compiler flag -O2 and -O3 generates bad code. use -O → gcc compiler switches -O2 and -O3 generates bad code. use -O|
comment:2 by , 13 years ago
|Status:||new → closed|
hmm. now that I have switched over to mingw-w64 automated build, I don't see the problems (though the compiler crashes). the code is good, even with -O2 and -O3.
please disregard this bug. this probably only applies to mingw, which is where I had the problem, not mingw-w64 I think. I was wrong about mingw-w64, at least for mingw-w32-1.0-bin_i686-mingw_20100129 and mingw-w64-1.0-bin_i686-mingw_20100129. your compiler may vary?