This bug is in all versions of gcc I tested: 3.2.3, 3.3.4, and 3.3.6. I am using Slackware Linux version 10.2 on a Pentium 4 based PC, and the gcc it came with, version 3.3.6. When the following program is compiled without optimization, it runs correctly. When compiled with any optimization, the second call to scanf incorrectly overwrites the short int "u". Maybe this bug is the same as bug 15484.
A program that causes the bug: #include <stdio.h> int main() { short int l, u; puts("upper?"); scanf("%d", &u); puts("lower?"); scanf("%d", &l); printf("\n%d %d\n", l, u); return 0; } The commands I used to compile the above program: (bash shell) g++ -g -o gcc_bug gcc_bug.cc g++ -g -O2 -o gcc_bug gcc_bug.cc The compiler gives no messages when compiling this program. -- Summary: short int parameter wrong in optimized code Product: gcc Version: 3.3.6 Status: UNCONFIRMED Severity: major Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: chapinb at acm dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24506