A testcase that has an array larger than half the address space and smaller than the address space will trigger an abort in tree_int_cst_low.
The problem here is that we have a TREE_OVERFLOW (TYPE_SIZE (...)) check in the C++ front end. This no longer works now that TYPE_SIZE is computed as bitsizetype which has extra precision. We must use TYPE_SIZE_UNIT instead. This is trivial to fix, but now the testcase gets two errors instead of the expected one error. I don't know if this is intended behaviour, or whether this is a latent bug in the C++ front end. Either way, my testcase doesn't work for the testsuite because of this problem, so a C++ front end maintainer will have to decide what to do. Result without the patch large-size-array.cc: In function int main(): large-size-array.cc:17: internal compiler error: in tree_low_cst, at tree.c:4270 Result with the patch large-size-array.cc: In function int main(): large-size-array.cc:19: error: size of array a is too large large-size-array.cc:20: error: a was not declared in this scope Both of these results are wrong. -- Summary: partial fix too large array problem Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: wilson at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23426