[LLVMbugs] [Bug 6365] Assertion failed: (Access != AS_none && "Access specifier is AS_none inside a record decl")

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Feb 21 11:34:24 PST 2010


http://www.llvm.org/bugs/show_bug.cgi?id=6365

--- Comment #7 from Albert Zeyer <ich at az2000.de> 2010-02-21 13:34:24 CST ---
I dived a bit more into the code:

CXXRecord is used for struct/class/enum/union all together?

So the FIXME in DeclPrinter::VisitCXXRecordDecl

// FIXME: Doesn't print access specifiers, e.g., "public:"

is invalid then, isn't it? (Or at least for the case when it is a class.)

But I guess it is not related at all to the problem.

---

Btw., in my stl_tree.h, it looks like this:

...
      void
      destroy_node(_Link_type __p)
      {
    get_allocator().destroy(&__p->_M_value_field);
    _M_put_node(__p);
      }

    protected:
      template<typename _Key_compare, 
           bool _Is_pod_comparator = std::__is_pod<_Key_compare>::__value>
        struct _Rb_tree_impl : public _Node_allocator
        {
      _Key_compare        _M_key_compare;
      _Rb_tree_node_base     _M_header;
      size_type         _M_node_count; // Keeps track of size of tree.

      _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),
            const _Key_compare& __comp = _Key_compare())
      : _Node_allocator(__a), _M_key_compare(__comp), _M_node_count(0)
      {
        this->_M_header._M_color = _S_red;
        this->_M_header._M_parent = 0;
        this->_M_header._M_left = &this->_M_header;
        this->_M_header._M_right = &this->_M_header;
      }
    };

      // Specialization for _Comparison types that are not capable of
      // being base classes / super classes.
      template<typename _Key_compare>
        struct _Rb_tree_impl<_Key_compare, true> : public _Node_allocator 
    {
      _Key_compare         _M_key_compare;
      _Rb_tree_node_base     _M_header;
      size_type         _M_node_count; // Keeps track of size of tree.

      _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),
            const _Key_compare& __comp = _Key_compare())
      : _Node_allocator(__a), _M_key_compare(__comp), _M_node_count(0)
      { 
        this->_M_header._M_color = _S_red;
        this->_M_header._M_parent = 0;
        this->_M_header._M_left = &this->_M_header;
        this->_M_header._M_right = &this->_M_header;
      }
    };
...

I.e., the second _Rb_tree_impl is a specialisation of the first general
declaration. In the output (printed by -ast-print), this is wrong.

Should I make an addition bug report about this? Or is this problem related to
the failing assert?

-- 
Configure bugmail: http://www.llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the llvm-bugs mailing list