https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105577
Bug ID: 105577 Summary: [12 Regression] ICE in delete_unmarked_insns, at dce.cc:653 Product: gcc Version: 12.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: curdeius at gmail dot com Target Milestone: --- Similar to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90082. GCC 12.1.0 ICEs when compiling this code with: ``` g++ -DROCKSDB_PLATFORM_POSIX -isystem rocksdb-cloud -isystem rocksdb-cloud/include -O3 -march=haswell -fnon-call-exceptions -c rocksdb-cloud/db/db_impl/db_impl_compaction_flush.cc ``` All the three flags are important, as the ICE doesn't happen with -O2, nor without -march, nor with -march=skylake, but it does happen with microarchs older than haswell. ICE doesn't happen without -fnon-call-exceptions either. Version: ``` $ g++ --version g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` The minimized repro (couldn't do better for the moment, preprocessed source attached of both minimal repro and the full file attached): ``` #include "db/db_impl/db_impl.h" namespace ROCKSDB_NAMESPACE { void DBImpl::InstallSuperVersionAndScheduleWork( ColumnFamilyData* cfd, SuperVersionContext* sv_context, const MutableCFOptions& mutable_cf_options) { if (UNLIKELY(sv_context->new_superversion == nullptr)) { sv_context->NewSuperVersion(); } bottommost_files_mark_threshold_ = kMaxSequenceNumber; for (auto* my_cfd : *versions_->GetColumnFamilySet()) { bottommost_files_mark_threshold_ = std::min( bottommost_files_mark_threshold_, my_cfd->current()->storage_info()->bottommost_files_mark_threshold()); } } } // namespace ROCKSDB_NAMESPACE ```