https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80344
Bug ID: 80344
Summary: -Wuninitialized triggering on a ctor on ARM
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: mpolacek at gcc dot gnu.org
Target Milestone: ---
With this testcase, on ARM I see:
$ ./cc1plus -quiet -I. -Wuninitialized -O q.C
q.C: In constructor ‘B::B()’:
q.C:4:7: warning: ‘<anonymous>’ is used uninitialized in this function
[-Wuninitialized]
A() {}
^
Started with r245840. The C++ ABI for ARM says that cdtors return "this"
instead of returning void, so in .original we have
<<cleanup_point <<< Unknown tree: expr_stmt
*(struct
{
._0 e;
int i;
int j;
} &) this = {CLOBBER} >>>>>;
{
}
<D.4688>:;
return this;
And the last line provokes the warning.
class A {
public:
enum { } e;
A() {}
int i;
int j;
};
class B {
B();
A a;
};
A
fn1()
{
return A();
}
B::B() : a(fn1()) {}