[Bug middle-end/102700] New: [Diagnostics] uninitialized warning missing after O2 vectorization.
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Oct 12 07:53:30 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102700
Bug ID: 102700
Summary: [Diagnostics] uninitialized warning missing after O2
vectorization.
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: crazylht at gmail dot com
Target Milestone: ---
Host: x86_64-pc-linux-gnu
testcase is from g++.dg/warn/Wuninitialized-13.C
struct shared_count {
shared_count () { }
shared_count (shared_count &r)
: pi (r.pi) { } // { dg-warning "\\\[-Wuninitialized" "" { xfail {
i?86-*-* x86_64-*-* } } }
int pi;
};
// There's another (redundant) -Wuninitialized on the line below.
struct shared_ptr {
int ptr;
shared_count refcount;
};
struct Bar {
Bar (int, shared_ptr);
};
void g () {
shared_ptr foo;
Bar (0, foo);
}
After vectorization
.C.211.uninit1
;; Function g (_Z1gv, funcdef_no=6, decl_uid=4497, cgraph_uid=13,
symbol_order=12)
void g ()
{
int * vectp.11;
vector(2) int * vectp.10;
vector(2) int vect__6.9;
int * vectp.8;
vector(2) int * vectp_foo.7;
struct shared_ptr foo;
struct shared_ptr D.4566;
struct Bar D.4567;
<bb 2> [local count: 1073741824]:
[test2.C:6:19] MEM[(struct shared_count *)[test2.C:23:14] &foo + 4B] ={v}
{CLOBBER};
[test2.C:13:8] vect__6.9_12 = MEM <vector(2) int> [(int *)&foo];
[test2.C:8:5] MEM[(struct shared_count *)[test2.C:24:3] &D.4566 + 4B] ={v}
{CLOBBER};
[test2.C:13:8] MEM <vector(2) int> [(int *)&D.4566] = vect__6.9_12;
[test2.C:24:3] Bar::Bar ([test2.C:24:3] &D.4567, 0, [test2.C:24:3] &D.4566);
[test2.C:24:3] D.4567 ={v} {CLOBBER};
[test2.C:24:3] D.4566 ={v} {CLOBBER};
foo ={v} {CLOBBER};
[test2.C:25:1] return;
}
MEM <vector(2) int> [(int *)&foo]; is used instead of _6 = foo.ptr; which is
missed by warn_uninitialized_vars?
More information about the Gcc-bugs
mailing list