http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57917

            Bug ID: 57917
           Summary: -Wuninitialized
           Product: gcc
           Version: 4.2.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nishant.031 at gmail dot com

Hi,
Please see code snippet below.
g++ -v gave me following output:
g++ -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: /home/gcc-4.2.4/configure --prefix=/usr/local/soft/gcc/4.2.4
--disable-nls --enable-languages=c,c++
Thread model: posix
gcc version 4.2.4

In the code below, class variable isABC is not initialized. We came across a
crash in one particular RHEL machine which got fixed once I initialized this
variable in the class constructor. In another machine, the software started
giving absurd results until I initialized this variable in constructor.

I thought of finding an option in gcc which can report uninitialized variables
in class. I finally came across -Wuninitialized. I compiled this code using:
g++ test.cpp -Wuninitialized -O3

I was not reported any warning in this case. Is this the correct usage? If not,
is there any switch that can report such warning?


=============================================

class A
{
    private:
    bool isABC;
    public:
    void setABC(bool);
};
void A::setABC(bool flag)
{
    isABC = flag;
}

int main()
{
    A a;
    return -1;
}

===========================

But, the following case reports the following warning:

test.cpp: In function 'int main()':
test.cpp:31: warning: 'a.A::a' is used uninitialized in this function
test.cpp:38: note: 'a.A::a' was declared here

--------------------------
class A {
    bool ggg;
  int a;
public:
  void mA() {
    printf("haha");
    ++a;
    int g = 2/a;
    printf("%i\n",g);
  }
};

int main() {
  A a;
  a.mA();
  return -1;
}


Thanks.
Please help.

Reply via email to