[PATCH] [PR78112] Remove the g++.dg/pr78112.C testcase

Pierre-Marie de Rodat derodat@adacore.com
Wed Nov 30 13:04:00 GMT 2016


Hello,

I recently added a testcase for PR78112's resolution. Unfortunately,
what it tests changes from one platform to another and I even get
different results for a single platform (see
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78112#c17>). As multiple
developpers reported these errors and as the testcase relies on a
compiler behavior that still looks bogous to me, I suggest to remove the
testcase for now.

Ok to commit? Thank you in advance!

gcc/testsuite/
	PR debug/78112
	* g++.dg/pr78112.C: Remove unreliable testcase.
---
 gcc/testsuite/g++.dg/pr78112.C | 162 -----------------------------------------
 1 file changed, 162 deletions(-)
 delete mode 100644 gcc/testsuite/g++.dg/pr78112.C

diff --git a/gcc/testsuite/g++.dg/pr78112.C b/gcc/testsuite/g++.dg/pr78112.C
deleted file mode 100644
index 986171d..0000000
--- a/gcc/testsuite/g++.dg/pr78112.C
+++ /dev/null
@@ -1,162 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-g -dA -std=gnu++11" } */
-/* { dg-final { scan-assembler-times DW_AT_inline 6 { xfail *-*-aix* } } } */
-/* { dg-final { scan-assembler-times DW_AT_object_pointer 37 { xfail *-*-aix* } } } */
-namespace std
-{
-template <typename _Tp> struct integral_constant
-{
-  static constexpr _Tp value = 0;
-};
-template <int> using __bool_constant = integral_constant<int>;
-struct __not_ : integral_constant<int>
-{
-};
-template <typename, typename, template <typename...> class _Op,
-          typename... _Args>
-struct __detector
-{
-  using type = _Op<_Args...>;
-};
-template <typename _Default, template <typename...> class _Op,
-          typename... _Args>
-using __detected_or = __detector<_Default, void, _Op, _Args...>;
-template <typename _Default, template <typename...> class _Op,
-          typename... _Args>
-using __detected_or_t = typename __detected_or<_Default, _Op, _Args...>::type;
-template <template <typename...> class _Default,
-          template <typename...> class _Op, typename... _Args>
-using __detected_or_t_ = __detected_or_t<_Default<_Args...>, _Op, _Args...>;
-template <typename, typename> struct pair;
-template <typename, typename> using __replace_first_arg_t = int;
-}
-class new_allocator
-{
-};
-namespace std
-{
-template <typename> using __allocator_base = new_allocator;
-template <typename> class allocator : __allocator_base<int>
-{
-};
-template <typename> struct equal_to;
-struct __allocator_traits_base
-{
-  template <typename _Alloc, typename _Up>
-  using __rebind = typename _Alloc::template rebind<_Up>::other;
-};
-template <typename _Alloc, typename _Up>
-using __alloc_rebind
-    = __detected_or_t_<__replace_first_arg_t,
-                       __allocator_traits_base::__rebind, _Alloc, _Up>;
-}
-struct __alloc_traits
-{
-  static int _S_select_on_copy;
-};
-namespace std
-{
-template <typename> struct hash;
-namespace __detail
-{
-struct _Select1st;
-struct _Hashtable_traits
-{
-  using __hash_cached = __bool_constant<0>;
-};
-template <typename, int> struct _Hash_node;
-template <typename _Value> struct _Hash_node<_Value, 0>
-{
-  int &_M_v ();
-};
-struct _Mod_range_hashing;
-struct _Default_ranged_hash;
-struct _Prime_rehash_policy
-{
-  using __has_load_factor = integral_constant<int>;
-};
-struct _Map_base
-{
-};
-struct _Insert
-{
-};
-template <typename _Policy>
-using __has_load_factor = typename _Policy::__has_load_factor;
-template <typename _RehashPolicy, typename,
-          typename = __detected_or_t<integral_constant<bool>,
-                                     __has_load_factor, _RehashPolicy> >
-struct _Rehash_base;
-template <typename _RehashPolicy, typename _Traits>
-struct _Rehash_base<_RehashPolicy, _Traits, integral_constant<int> > {};
-struct _Hashtable_ebo_helper { template <typename _OtherTp> _Hashtable_ebo_helper (_OtherTp); };
-struct _Hashtable_base {};
-struct _Equality {};
-template <typename _NodeAlloc> struct _Hashtable_alloc : _Hashtable_ebo_helper
-{
-  using __ebo_node_alloc = _Hashtable_ebo_helper;
-  using __node_type = typename _NodeAlloc::value_type;
-  using __node_alloc_traits = __alloc_traits;
-  template <typename _Alloc> _Hashtable_alloc (_Alloc) : __ebo_node_alloc (0) {}
-  template <typename... _Args> __node_type *_M_allocate_node (...);
-};
-}
-template <typename, typename> using __cache_default = __not_;
-template <typename _Key, typename _Value, typename _Alloc, typename _ExtractKey, typename _Equal, typename _H1, typename _H2,
-          typename _Hash, typename _RehashPolicy, typename _Traits>
-struct _Hashtable : __detail::_Hashtable_base, __detail::_Map_base, __detail::_Insert, __detail::_Rehash_base<_RehashPolicy, int>,
-  __detail::_Equality, __detail:: _Hashtable_alloc<__alloc_rebind<_Alloc, __detail::_Hash_node<_Value, _Traits::__hash_cached::value> > >
-{
-  using __traits_type = _Traits;
-  using __hash_cached = typename __traits_type::__hash_cached;
-  using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>;
-  using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>;
-  using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>;
-  using typename __hashtable_alloc::__node_alloc_traits;
-  _Key key_type;
-  _RehashPolicy _M_rehash_policy;
-  template <typename _NodeGenerator>
-  void _M_assign (const _Hashtable &, const _NodeGenerator &);
-  _Hashtable ();
-  _Hashtable (const _Hashtable &);
-};
-template <typename _Key, typename _Value, typename _Alloc, typename _ExtractKey, typename _Equal, typename _H1, typename _H2,
-          typename _Hash, typename _RehashPolicy, typename _Traits>
-template <typename _NodeGenerator>
-void _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy,
-                _Traits>::_M_assign (const _Hashtable &__ht, const _NodeGenerator &__node_gen) try {
-__node_type *__this_n = __node_gen (0); } catch (...) {}
-template <typename _Key, typename _Value, typename _Alloc, typename _ExtractKey, typename _Equal, typename _H1, typename _H2,
-          typename _Hash, typename _RehashPolicy, typename _Traits>
-_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::_Hashtable (const _Hashtable &__ht)
-    : __hashtable_alloc (__node_alloc_traits::_S_select_on_copy), _M_rehash_policy ()
-{
-  _M_assign (__ht, [this](__node_type *__n) { return this->_M_allocate_node (__n->_M_v ()); });
-}
-template <bool _Cache> using __umap_traits = __detail::_Hashtable_traits;
-template <typename _Key, typename _Tp, typename _Hash = hash<_Key>, typename _Pred = std::equal_to<_Key>,
-          typename _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
-          typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value> >
-using __umap_hashtable = _Hashtable<_Key, std::pair<const _Key, _Tp>, _Alloc, __detail::_Select1st, _Pred, _Hash,
-                                    __detail::_Mod_range_hashing, __detail::_Default_ranged_hash, __detail::_Prime_rehash_policy, _Tr>;
-template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = std::equal_to<_Key>,
-          class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
-struct unordered_map
-{
-  typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable;
-  _Hashtable _M_h;
-  unordered_map (const int &__a) : _M_h () {}
-};
-}
-struct uneq_allocator_base {};
-template <typename Tp> struct uneq_allocator : uneq_allocator_base { typedef Tp value_type; };
-template <typename Tp, typename Alloc = std::allocator<Tp> >
-struct Trans_NS___gnu_test_propagating_allocator : public uneq_allocator<Tp>
-{
-  template <typename Up> struct rebind { typedef Trans_NS___gnu_test_propagating_allocator<Up, int> other; };
-};
-void fn1 ()
-{
-  std::unordered_map<int, int, int, int, Trans_NS___gnu_test_propagating_allocator<int> > v1 (0);
-  std::unordered_map<int, int, int, int, Trans_NS___gnu_test_propagating_allocator<int> > v2 (v1);
-}
-- 
2.10.2



More information about the Gcc-patches mailing list