https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105577

--- Comment #12 from Martin Liška <marxin at gcc dot gnu.org> ---
There's a reduced test case, can you please include it in testsuite?



namespace {
typedef long size_t;
}
typedef char uint8_t;
typedef long uint64_t;
namespace {
template <typename _Tp, _Tp __v> struct integral_constant {
  static constexpr _Tp value = __v;
};
template <bool __v> using __bool_constant = integral_constant<bool, __v>;
template <bool> struct __conditional {
  template <typename _Tp, typename> using type = _Tp;
};
template <bool _Cond, typename _If, typename _Else>
using __conditional_t = typename __conditional<_Cond>::type<_If, _Else>;
template <typename...> struct __and_;
template <typename _B1, typename _B2>
struct __and_<_B1, _B2> : __conditional_t<_B1::value, _B2, _B1> {};
template <typename> struct __not_ : __bool_constant<!bool()> {};
template <typename _Tp>
struct __is_constructible_impl : __bool_constant<__is_constructible(_Tp)> {};
template <typename _Tp>
struct is_default_constructible : __is_constructible_impl<_Tp> {};
template <typename _Tp> struct remove_extent { typedef _Tp type; };
template <bool> struct enable_if;
} // namespace
namespace std {
template <typename _Tp> struct allocator_traits { using pointer = _Tp; };
template <typename _Alloc> struct __alloc_traits : allocator_traits<_Alloc> {};
template <typename, typename _Alloc> struct _Vector_base {
  typedef typename __alloc_traits<_Alloc>::pointer pointer;
  struct {
    pointer _M_finish;
    pointer _M_end_of_storage;
  };
};
template <typename _Tp, typename _Alloc = _Tp>
class vector : _Vector_base<_Tp, _Alloc> {
public:
  _Tp value_type;
  typedef size_t size_type;
};
template <typename _Tp, typename _Dp> class __uniq_ptr_impl {
  template <typename _Up, typename> struct _Ptr { using type = _Up *; };

public:
  using _DeleterConstraint =
      enable_if<__and_<__not_<_Dp>, is_default_constructible<_Dp>>::value>;
  using pointer = typename _Ptr<_Tp, _Dp>::type;
};
template <typename _Tp, typename _Dp = _Tp> class unique_ptr {
public:
  using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer;
  pointer operator->();
};
enum _Lock_policy { _S_atomic } const __default_lock_policy = _S_atomic;
template <_Lock_policy = __default_lock_policy> class _Sp_counted_base;
template <typename, _Lock_policy = __default_lock_policy> class __shared_ptr;
template <_Lock_policy> class __shared_count { _Sp_counted_base<> *_M_pi; };
template <typename _Tp, _Lock_policy _Lp> class __shared_ptr {
  using element_type = typename remove_extent<_Tp>::type;
  element_type *_M_ptr;
  __shared_count<_Lp> _M_refcount;
};
template <typename _Tp> class shared_ptr : __shared_ptr<_Tp> {
public:
  shared_ptr() noexcept : __shared_ptr<_Tp>() {}
};
enum CompressionType : char;
class SliceTransform;
enum Temperature : uint8_t;
struct MutableCFOptions {
  MutableCFOptions()
      : soft_pending_compaction_bytes_limit(),
       
hard_pending_compaction_bytes_limit(level0_file_num_compaction_trigger),
        level0_slowdown_writes_trigger(level0_stop_writes_trigger),
        max_compaction_bytes(target_file_size_base),
        target_file_size_multiplier(max_bytes_for_level_base),
        max_bytes_for_level_multiplier(ttl), compaction_options_fifo(),
        min_blob_size(blob_file_size), blob_compression_type(),
        enable_blob_garbage_collection(blob_garbage_collection_age_cutoff),
        max_sequential_skip_in_iterations(check_flush_compaction_key_order),
        paranoid_file_checks(bottommost_compression), bottommost_temperature(),
        sample_for_compression() {}
  shared_ptr<SliceTransform> prefix_extractor;
  uint64_t soft_pending_compaction_bytes_limit;
  uint64_t hard_pending_compaction_bytes_limit;
  int level0_file_num_compaction_trigger;
  int level0_slowdown_writes_trigger;
  int level0_stop_writes_trigger;
  uint64_t max_compaction_bytes;
  uint64_t target_file_size_base;
  int target_file_size_multiplier;
  uint64_t max_bytes_for_level_base;
  double max_bytes_for_level_multiplier;
  uint64_t ttl;
  vector<int> compaction_options_fifo;
  uint64_t min_blob_size;
  uint64_t blob_file_size;
  CompressionType blob_compression_type;
  bool enable_blob_garbage_collection;
  double blob_garbage_collection_age_cutoff;
  uint64_t max_sequential_skip_in_iterations;
  bool check_flush_compaction_key_order;
  bool paranoid_file_checks;
  CompressionType bottommost_compression;
  Temperature bottommost_temperature;
  uint64_t sample_for_compression;
};
template <class T, size_t kSize = 8> class autovector {
  using value_type = T;
  using size_type = typename vector<T>::size_type;
  size_type buf_[kSize * sizeof(value_type)];
};
class MemTable;
class ColumnFamilyData;
struct SuperVersion {
  MutableCFOptions write_stall_condition;
  autovector<MemTable *> to_delete;
};
class ColumnFamilySet {
public:
  class iterator {
  public:
    iterator operator++();
    bool operator!=(iterator);
    ColumnFamilyData *operator*();
    ColumnFamilyData *current_;
  };
  iterator begin();
  iterator end();
};
class VersionSet {
public:
  ColumnFamilySet *GetColumnFamilySet();
};
struct SuperVersionContext {
  void NewSuperVersion() { new SuperVersion(); }
};
class DBImpl {
  unique_ptr<VersionSet> versions_;
  void InstallSuperVersionAndScheduleWork(ColumnFamilyData *,
                                          SuperVersionContext *,
                                          const MutableCFOptions &);
};
void DBImpl::InstallSuperVersionAndScheduleWork(ColumnFamilyData *,
                                                SuperVersionContext
*sv_context,
                                                const MutableCFOptions &) {
  sv_context->NewSuperVersion();
  for (auto my_cfd : *versions_->GetColumnFamilySet())
    ;
}
} // namespace std

Reply via email to