-
-
Notifications
You must be signed in to change notification settings - Fork 262
Description
The real version I wanted the insight on can be seen at https://godbolt.org/z/YUbnZG , which is just https://godbolt.org/z/sZgc7p but with the header sources pulled in.
Anyway, in cppinsights.io, those crash... so I kept reducing them until I got to:
https://godbolt.org/z/keppKm
that is,
https://cppinsights.io/lnk?code=I2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiNpbmNsdWRlIDxiaXRzL21vdmUuaD4KCiNpbmNsdWRlIDxjc3RkZGVmPgoKI2RlZmluZSBfR0xJQkNYWF9UVVBMRSAxCgpuYW1lc3BhY2Ugc3RkIHsKX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KCnRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVhZCwgYm9vbCBfSXNFbXB0eU5vdEZpbmFsPgpzdHJ1Y3QgX0hlYWRfYmFzZTsKCnRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVhZD4Kc3RydWN0IF9IZWFkX2Jhc2U8X0lkeCwgX0hlYWQsIHRydWU+IDogcHVibGljIF9IZWFkIHsKICBjb25zdGV4cHIgX0hlYWRfYmFzZSgpIDogX0hlYWQoKSB7fQogIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNvbnN0IF9IZWFkJiBfX2gpIDogX0hlYWQoX19oKSB7fQogIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNvbnN0IF9IZWFkX2Jhc2UmKSA9IGRlZmF1bHQ7Cn07Cgp0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgX0lkeCwgdHlwZW5hbWUgX0hlYWQ+CnN0cnVjdCBfSGVhZF9iYXNlPF9JZHgsIF9IZWFkLCBmYWxzZT4gewogIGNvbnN0ZXhwciBfSGVhZF9iYXNlKCkgOiBfTV9oZWFkX2ltcGwoKSB7fQogIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNvbnN0IF9IZWFkJiBfX2gpIDogX01faGVhZF9pbXBsKF9faCkge30KICBjb25zdGV4cHIgX0hlYWRfYmFzZShjb25zdCBfSGVhZF9iYXNlJikgPSBkZWZhdWx0OwoKICBfSGVhZCBfTV9oZWFkX2ltcGw7Cn07CiAgCnRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZS4uLiBfRWxlbWVudHM+CnN0cnVjdCBfVHVwbGVfaW1wbDsKCnRlbXBsYXRlIDxzdGQ6OnNpemVfdCBfSWR4PgpzdHJ1Y3QgX1R1cGxlX2ltcGw8X0lkeD4gewogIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCwgdHlwZW5hbWUuLi4+CiAgZnJpZW5kIGNsYXNzIF9UdXBsZV9pbXBsOwoKICBfVHVwbGVfaW1wbCgpID0gZGVmYXVsdDsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBfVHA+CnN0cnVjdCBfX2lzX2VtcHR5X25vbl90dXBsZSA6IGlzX2VtcHR5PF9UcD4ge307Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX0VsMCwgdHlwZW5hbWUuLi4gX0VsPgpzdHJ1Y3QgX19pc19lbXB0eV9ub25fdHVwbGU8dHVwbGU8X0VsMCwgX0VsLi4uPj4gOiBmYWxzZV90eXBlIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KdXNpbmcgX19lbXB0eV9ub3RfZmluYWwgPSB0eXBlbmFtZSBjb25kaXRpb25hbDxfX2lzX2ZpbmFsKF9UcCksIGZhbHNlX3R5cGUsIF9faXNfZW1wdHlfbm9uX3R1cGxlPF9UcD4+Ojp0eXBlOwoKdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IF9JZHgsIHR5cGVuYW1lIF9IZWFkLCB0eXBlbmFtZS4uLiBfVGFpbD4Kc3RydWN0IF9UdXBsZV9pbXBsPF9JZHgsIF9IZWFkLCBfVGFpbC4uLj4KICAgIDogcHVibGljIF9UdXBsZV9pbXBsPF9JZHggKyAxLCBfVGFpbC4uLj4sCiAgICAgIHByaXZhdGUgX0hlYWRfYmFzZTxfSWR4LCBfSGVhZCwgX19lbXB0eV9ub3RfZmluYWw8X0hlYWQ+Ojp2YWx1ZT4gewoKICB0eXBlZGVmIF9UdXBsZV9pbXBsPF9JZHggKyAxLCBfVGFpbC4uLj4gX0luaGVyaXRlZDsKICB0eXBlZGVmIF9IZWFkX2Jhc2U8X0lkeCwgX0hlYWQsIF9fZW1wdHlfbm90X2ZpbmFsPF9IZWFkPjo6dmFsdWU+IF9CYXNlOwoKICBjb25zdGV4cHIgX1R1cGxlX2ltcGwoKSA6IF9Jbmhlcml0ZWQoKSwgX0Jhc2UoKSB7fQoKICBleHBsaWNpdCBjb25zdGV4cHIgX1R1cGxlX2ltcGwoY29uc3QgX0hlYWQmIF9faGVhZCwgY29uc3QgX1RhaWwmLi4uIF9fdGFpbCkKICAgICAgOiBfSW5oZXJpdGVkKF9fdGFpbC4uLiksIF9CYXNlKF9faGVhZCkge30KCiAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgY29uc3RleHByIF9UdXBsZV9pbXBsKGNvbnN0IF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxlbWVudHMuLi4+JiBfX2luKQogICAgICA6IF9Jbmhlcml0ZWQoX1R1cGxlX2ltcGw8X0lkeCwgX1VFbGVtZW50cy4uLj46Ol9NX3RhaWwoX19pbikpLAogICAgICAgIF9CYXNlKF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxlbWVudHMuLi4+OjpfTV9oZWFkKF9faW4pKSB7fQp9OwoKX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCn0KCi8vIHN0ZDo6X1R1cGxlX2ltcGw8MSwgc2hvcnQsIGxvbmc+IG9uZV9zX2w7Cg==&insightsOptions=cpp17&std=cpp17&rev=1.0
And in case that breaks in the future, here's the actual source I used, with C++17 selected as my standard:
#include <bits/c++config.h>
#include <bits/move.h>
#include <cstddef>
#define _GLIBCXX_TUPLE 1
namespace std {
_GLIBCXX_BEGIN_NAMESPACE_VERSION
template <std::size_t _Idx, typename _Head, bool _IsEmptyNotFinal>
struct _Head_base;
template <std::size_t _Idx, typename _Head>
struct _Head_base<_Idx, _Head, true> : public _Head {
constexpr _Head_base() : _Head() {}
constexpr _Head_base(const _Head& __h) : _Head(__h) {}
constexpr _Head_base(const _Head_base&) = default;
};
template <std::size_t _Idx, typename _Head>
struct _Head_base<_Idx, _Head, false> {
constexpr _Head_base() : _M_head_impl() {}
constexpr _Head_base(const _Head& __h) : _M_head_impl(__h) {}
constexpr _Head_base(const _Head_base&) = default;
_Head _M_head_impl;
};
template <std::size_t _Idx, typename... _Elements>
struct _Tuple_impl;
template <std::size_t _Idx>
struct _Tuple_impl<_Idx> {
template <std::size_t, typename...>
friend class _Tuple_impl;
_Tuple_impl() = default;
};
template <typename _Tp>
struct __is_empty_non_tuple : is_empty<_Tp> {};
template <typename _El0, typename... _El>
struct __is_empty_non_tuple<tuple<_El0, _El...>> : false_type {};
template <typename _Tp>
using __empty_not_final = typename conditional<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>::type;
template <std::size_t _Idx, typename _Head, typename... _Tail>
struct _Tuple_impl<_Idx, _Head, _Tail...>
: public _Tuple_impl<_Idx + 1, _Tail...>,
private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> {
typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> _Base;
constexpr _Tuple_impl() : _Inherited(), _Base() {}
explicit constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
: _Inherited(__tail...), _Base(__head) {}
template <typename... _UElements>
constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
: _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)),
_Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) {}
};
_GLIBCXX_END_NAMESPACE_VERSION
}
// std::_Tuple_impl<1, short, long> one_s_l;
When I push the play button, I get this in the console:
insights: /usr/lib/llvm-8/include/clang/AST/ExprCXX.h:3383: clang::Expr* clang::CXXDependentScopeMemberExpr::getBase() const: Assertion `!isImplicitAccess()' failed.
[0x13415bf]
[0x133f9e2]
[0x1341b18]
[0x136a030]
[0x1369fd7]
[0x142bd81]
[0x141f35c]
[0x141f3d2]
[0x4220ca]
[0x405dbc]
[0x411ac4]
[0x409ef1]
[0x4110c4]
[0x408ea1]
[0x411b44]
[0x40d621]
[0x40d964]
[0x4086f4]
[0x40f08f]
[0x410962]
[0x40faea]
[0x46596c]
[0x4c5ad1]
[0x4db0fb]
[0x4c538d]
[0x4ca0bc]
[0x4c945d]
[0x4ca0c7]
[0x4c945d]
[0x4b0120]
[0x47d293]
[0x7b8783]
[0x53b6af]
[0x4fc6b8]
[0x4a1316]
[0x4a1086]
[0x4a052f]
[0x4a27f4]
[0x47bb06]
[0x141b679]
[0x4055aa]
Aborted (core dumped)