📄 noreturn-1.c
字号:
// PR optimization/12965// Origin: <qboosh@pld-linux.org>// Reduced testcase: Falk Hueffner <falk@debian.org>// This ICEd on Alpha because the reload pass emitted save/restore// insns around a no-return call.// { dg-do compile }// { dg-options "-O2" }template <typename _Alloc> class allocator;template <class _CharT> struct char_traits;template <typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> >class basic_string;typedef basic_string<char> string;static inline int __exchange_and_add(volatile int * __mem, int __val) { int __result; asm("" : "=&r"(__result)); return __result;}template<typename _Tp> struct allocator { allocator() throw() { } allocator(const allocator &) throw() {}};template<typename _CharT, typename _Traits, typename _Alloc>struct basic_string { typedef _Alloc allocator_type; struct _Rep { int _M_references; void _M_dispose(const _Alloc & __a) { if (__exchange_and_add(&_M_references, -1) <= 0) _M_destroy(__a); } void _M_destroy(const _Alloc &) throw(); }; struct _Alloc_hider : _Alloc { _CharT *_M_p; }; mutable _Alloc_hider _M_dataplus; _CharT *_M_data() const { return _M_dataplus._M_p; } _Rep *_M_rep() const { return &((reinterpret_cast<_Rep *>(_M_data()))[-1]); } basic_string(); basic_string(const _CharT * __s, const _Alloc & __a = _Alloc()); ~basic_string() { _M_rep()->_M_dispose(this->get_allocator()); } allocator_type get_allocator() const { return _M_dataplus; }};struct Egeneric { void stack(const string & passage, const string & message = "") { }};struct infinint { void detruit() throw(Egeneric); template<class T> void infinint_from(T a) throw(Egeneric); infinint(long a = 0) throw(Egeneric) { try { infinint_from(a); } catch(Egeneric& e) { e.stack("infinint::infinint", "long"); } } ~infinint() throw(Egeneric) { try { detruit(); } catch(Egeneric& e) { } }};struct inode { string x; infinint a, c; infinint ea_offset; inode();};inode::inode(){ ea_offset = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -