⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr6713.c

📁 linux下的gcc编译器
💻 C
字号:
// PR optimization/6713// This testcase segfaulted on x86 because a dangling REG_EQUAL note// resulted in incorrect substitutions later.// { dg-do run }// { dg-options "-O2" }template<typename _CharT> class basic_iterator{  public:    basic_iterator(_CharT* _p) : _M_current(_p) {}    basic_iterator& operator++() { ++_M_current; return *this; }    _CharT& operator*() const { return *_M_current; }    bool operator!=(basic_iterator &_rhs) { return _M_current != _rhs._M_current; }  private:    _CharT* _M_current;};template<typename _CharT> class basic_string{  public:    typedef unsigned int size_type;    typedef basic_iterator<_CharT> iterator;  private:    struct _Rep    {      size_type _M_length;      size_type _M_capacity;      int _M_references;      bool _M_is_leaked() const { return _M_references < 0; }      bool _M_is_shared() const { return _M_references > 0; }      void _M_set_leaked() { _M_references = -1; }      void _M_set_sharable() { _M_references = 0; }    };    struct _Rep _M_rep;    struct _Alloc_hider    {      _CharT _raw[16];      _CharT* _M_p;    };    mutable _Alloc_hider _M_dataplus;    _CharT* _M_data() const { return _M_dataplus._M_p; }    void _M_leak() { if (!_M_rep._M_is_leaked()) _M_leak_hard(); }    static int count;    static void _M_leak_hard();  public:    explicit basic_string(const _CharT* __s);    iterator begin() { _M_leak(); return iterator(_M_data()); }    iterator end() { _M_leak(); return iterator(_M_data() + this->size()); }    size_type size() const { return _M_rep._M_length; }};template<typename _CharT> basic_string<_CharT>::basic_string(const _CharT* __s){  int i;  for (i=0; i<15; i++) {    if (!__s[i])      break;    _M_dataplus._raw[i] = __s[i];  }  _M_dataplus._raw[i] = 0;  _M_dataplus._M_p = _M_dataplus._raw;  _M_rep._M_length = i;  _M_rep._M_capacity = i;  _M_rep._M_references = 1;}     template<typename _CharT> int basic_string<_CharT>::count = 0;template<typename _CharT> void basic_string<_CharT>::_M_leak_hard(){  count++;}typedef basic_string<char> string;template int basic_string<char>::count;int isspa(int ch){  return 0;}void foo(string& str){  string::iterator it = str.begin();  string::iterator stop = str.end();  for (; it != stop; ++it)    if (isspa(*it))      break;}int main(){  string str("test");  foo(str);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -