=== Cut ===
struct
QValueList
{
QValueList()
{
sh = new int;
}
QValueList& operator+= ( QValueList&);
int* sh;
};
void
queryIconsByContext()
{
QValueList iconlist[8];
QValueList iconlistResult;
for (int i=0; i<8; i++)
iconlistResult+=iconlist[i];
}
=== Cut ===
g++ -O2
produces this SSA form after ivopts branch:
...
ivtmp.38_37 = ivtmp.38_1 + 4B;
if (ivtmp.38_37 != &iconlist[9]) goto <L10>; else goto <L2>;
...
taking address of the 10th iconlist element is out of bounds access.
--
Summary: -fivopts producing out of bounds array refs
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mueller at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26726