This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/42704] [4.5 Regression] ICE in verify_ssa after early SRA



------- Comment #3 from rguenth at gcc dot gnu dot org  2010-01-12 14:53 -------
> ./cc1plus -quiet nsTreeRows.3.ii -O2 -w
nsTreeRows.3.ii: In member function 'void nsTreeRows::InvalidateCachedRow()':
nsTreeRows.3.ii:39:1: error: missing definition
for SSA_NAME: D.2215_9 in statement:
# .MEM_16 = VDEF <.MEM_12>
this_1(D)->mLastRow.mLink[i_8].mParent = D.2215_9;
nsTreeRows.3.ii:39:1: internal compiler error: verify_ssa failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


typedef int PRInt32;
class nsTreeRows {
    class Subtree { };
    enum { kMaxDepth = 32 };
    struct Link {
        Subtree* mParent;
        PRInt32 mChildIndex;
        Link&         operator=(const Link& aLink) {
            mParent = aLink.mParent;
            mChildIndex = aLink.mChildIndex;
        }
    };
    class iterator {
        PRInt32 mTop;
        PRInt32 mRowIndex;
        Link mLink[kMaxDepth];
    public:
        iterator() : mTop(-1), mRowIndex(-1) { }
        iterator& operator=(const iterator& aIterator);
    };
    Subtree*     EnsureSubtreeFor(Subtree* aParent, PRInt32 aChildIndex);
    Subtree*     GetSubtreeFor(const Subtree* aParent,                  
PRInt32 aChildIndex,                   PRInt32* aSubtreeSize = 0);
    void     InvalidateCachedRow() {
        mLastRow = iterator();
    }
    iterator mLastRow;
};
nsTreeRows::Subtree* nsTreeRows::EnsureSubtreeFor(Subtree* aParent,            
                     PRInt32 aChildIndex) {
    Subtree* subtree = GetSubtreeFor(aParent, aChildIndex);
    if (! subtree) {
        InvalidateCachedRow();
    }
}
nsTreeRows::iterator& nsTreeRows::iterator::operator=(const iterator&
aIterator) {
    mTop = aIterator.mTop;
    for (PRInt32 i = mTop;
         i >= 0;
         --i)         mLink[i] = aIterator.mLink[i];
}


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-01-12 14:53:45
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42704


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]