http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56198
Bug #: 56198 Summary: [4.8 Regression] Go profiledbootstrap error Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap AssignedTo: unassig...@gcc.gnu.org ReportedBy: ja...@gcc.gnu.org CC: i...@gcc.gnu.org My --enable-checking=release profiledbootstrap failed on an maybe uninitialized warning turned into -Werror in go/gofrontend/import-archive.cc. Archive_file::read_header has: off_t local_nested_off; if (!this->interpret_header(&hdr, off, pname, size, &local_nested_off)) return false; if (nested_off != NULL) *nested_off = local_nested_off; and the warning was complaining that local_nested_off might be uninitialized. If Archive_file::interpret_header is what is called here, then *nested_off might be indeed uninitialized even when the function returns true, in particular for: else if (hdr->ar_name[1] == ' ') { // This is the symbol table. pname->clear(); } else if (hdr->ar_name[1] == '/') { // This is the extended name table. pname->assign(1, '/'); } BTW, there seems to be also an inconsistency in that method, the first write to *nested_off in that method is not guarded by nested_off != NULL: *nested_off = 0; while the second one is: if (nested_off != NULL) *nested_off = y;