This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
SYSTEM:
i686 Linux 2.2.5, libc 2.1.1.
COMPILER VERSION:
austern@pizzelle% /home/austern/bin/g++ -v
Reading specs from
/home/austern/bin/../lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 20000110 (experimental)
SYMPTOM:
The correct output from the following program is:
t1 is false
t2 is false
When compiled -DBUG, however, the output we get instead is:
t1 is true
t2 is true
austern@pizzelle% cat cbug.cc
#include <stdio.h>
struct zone {
int profit;
int size;
int code_expansion() {
return size;
}
double priority() {
return ((double)profit)/code_expansion();
}
};
main()
{
struct zone z1;
struct zone z2;
z1.profit = 100;
z1.size = 3;
z2.profit = 200;
z2.size = 6;
#ifdef BUG
bool t1 = z1.priority() > z2.priority();
bool t2 = z2.priority() > z1.priority();
#else
double d1 = z1.priority();
double d2 = z2.priority();
bool t1 = d1 > d2;
bool t2 = d2 > d1;
#endif
printf("t1 is %s\n", t1 ? "true" : "false");
printf("t2 is %s\n", t2 ? "true" : "false");
}
austern@pizzelle% /home/austern/bin/g++ cbug.cc
austern@pizzelle% a.out
t1 is false
t2 is false
austern@pizzelle% /home/austern/bin/g++ -DBUG cbug.cc
austern@pizzelle% a.out
t1 is true
t2 is true
austern@pizzelle%
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |