Newer gcc swallow version control keywords

Newer gcc swallow version control keywords

Oleg Goldshmidt pub at goldshmidt.org
Tue Oct 18 16:24:25 IST 2011


On Tue, Oct 18, 2011 at 4:04 PM, Nadav Har'El <nyh at math.technion.ac.il> wrote:
> On Tue, Oct 18, 2011, Oleg Goldshmidt wrote about "Re: Newer gcc swallow version control keywords":
>> It was about C++. C and C++ compilers behave the same.
>
> I was very surprised to discover that this is indeed the case. I think this
> is a BUG. For example, consider this C++ program:
>
>        #include <cstdio>
>        class Ident {
>        public:
>                Ident(const char *ident){
>                        // This constructor prints a message!
>                        printf("yo\n");
>                }
>        };
>
>        static Ident id("$Id: hello $");
>
>        main(){
>                printf("hello\n");
>        }
>
>
> If you compile it with g++ (without optimization), the object id gets
> instanciated, and when you run the program you see the message "yo" first,
> before "hello". But, if you compile it with g++ -O2, id gets optimized out
> and its constructor never runs - and you never see the "yo" message.
>
> So basically, compiling with -O2 changes the *behavior*, not just the
> *performance*, of the code. I don't know how this cannot be called a bug?

Actually, it works fine for me with or without  -O2, with g++ 4.6.1 on
F15. What am I doing wrong? ;-)

-- 
Oleg Goldshmidt | pub at goldshmidt.org



More information about the Linux-il mailing list