[Bug c++/54288] New: Wrong sign compiled at run-time
l.lapointe at srtechlabs dot com
gcc-bugzilla@gcc.gnu.org
Thu Aug 16 16:21:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54288
Bug #: 54288
Summary: Wrong sign compiled at run-time
Classification: Unclassified
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: l.lapointe@srtechlabs.com
Simple code will be found below.
Optimization of the code lose the sign of a negative integer.
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <iostream.h>
struct struct_sz
{
static const unsigned int scu_sz = 40;
};
class CQ
{
public:
void doIt();
CQ();
private:
int _i;
bool question();
};
//--------------------
const unsigned int struct_sz::scu_sz;
CQ::CQ()
{
_i = -1;
}
void CQ::doIt()
{
double dZ;
double dO = 0.0;
if (question())
{
dO = 1.0;
}
else
{
//Execution is going here
dO = 0.0;
}
dZ = 1.0/dO;
cout << dZ << endl;
}
bool CQ::question()
{
if (_i < struct_sz::scu_sz - 2)
{
return true;
}
return false;
}
int main(int argc, char* argv[])
{
CQ cq;
cq.doIt();
return 0;
}
More information about the Gcc-bugs
mailing list