Re: bug with -O2 in g++ Debian 4.0.2-9 ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am using g++ 4.0.2 on Suse-10
On Thu, 2006-02-23 at 15:50 +0530, Digvijoy Chatterjee wrote:
> #include<iostream>
> 
> using namespace std;
> class Rational
> {
> 
>   int numerator;
>   int denominator;
> public:
>   int GetNum ()
>   {
>     return numerator;
>   }
>   int GetDen ()
>   {
>     return denominator;
>   }
>   void setNum (int numer)
>   {
>     numerator = numer;
>   }
> 
>   void setDen (int den)
>   {
>     denominator = den;
>   }
> 
>   int gcd (int i1, int i2) 
>   {
>     if (i2 == 0)
>       return i1;
>     else    
>       return gcd (i2, i1 % i2);
>   }
> public :
>   Rational (float f)
>   {
>     int denom = 1;
>     while (((int) f  -  f)!= 0) 
>       {
>         f *= 10;
>         denom *= 10;
>       }
>     int Gcd = gcd (int (f), denom); 
>     numerator = f / Gcd;
>     cout <<numerator <<endl; 
>     denominator = denom / Gcd;
>     cout<<"-----"<<endl;
>     cout <<denominator <<endl; 
>   }
>  
> };
> 
> int
> main (int argc, char **argv)
> {
>   Rational r1 = Rational (.4537f);
> }
> 
> 
> -----------------------------------------
> This runs successfully with:
> g++ without any optimization  ,
> but with -O or -02 or -03  the executable just hangs forever
> 
> 
> On Thu, 2006-02-23 at 10:56 +0100, Jerome Robert wrote:
> > Here is the faulty program (this kind of code is generated by
> > http://www.swig.org):
> > 
> > /////////// Start ///////////
> > #include <stdio.h>
> > 
> > int main(void)
> > {
> >     long long a = 0x77777777L;
> >     long long b = 0;
> >     void ** aa=(void **)(void *)&a;
> >     void ** ab=(void **)(void *)&b;
> >     *ab = *aa;
> >     printf("in: %llX, out: %llX\n", a, b);
> >     return 0;
> > }
> > /////////// End ///////////
> > 
> > The output for the following version is:
> > (Debian 1:3.3.6-12) g++     in: 77777777, out: 77777777
> > (Debian 1:3.3.6-12) g++ -O1 in: 77777777, out: 77777777
> > (Debian 1:3.3.6-12) g++ -O2 in: 77777777, out: 77777777
> > (Debian 4.0.2-9) g++        in: 77777777, out: 77777777
> > (Debian 4.0.2-9) g++ -O1    in: 77777777, out: 77777777
> > (Debian 4.0.2-9) g++ -O2    in: 77777777, out: 0
> > 
> > So there is something wrong with g++ -O2 (Debian 4.0.2-9). Is this program wrong
> > or is this a bug ?
> > 
> > Regards,
> > 
> > Jerome
-- 
Thanks and Regards
Digvijoy Chatterjee

Please Visit http://indra/LiMS and start your Linux Journey


**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux