I have a C++ class and code that looks like this: #include <iostream> using namespace std;
class Z { public: Z() {} ~Z() {} protected: int z_; }; int main(int argc, char** argv) { Z buf[100]; cout << sizeof(buf) << endl; return 0; } The compiler version is 4.01 (on Fedora 4). If I compile with -O0 then the creation of buf results in a loop being generated which calls the Z() constructor 100 times. But then if I compile with -O the constructor will be inlined. The generated machine code contains a loop which does nothing 100 times: movl $100, %eax .L11: decl %eax jne .L11 I think that the optimiser should get rid of the loop once it has got rid of the body! Should I submit this as a bug?