https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68476
Arnout Vandecappelle <arnout at mind dot be> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |arnout at mind dot be Version|5.2.1 |6.2.0 --- Comment #3 from Arnout Vandecappelle <arnout at mind dot be> --- I just tried again with gcc 6.2 and the problem persists. I've simplified the code to a minimal reproduction - it's so simple that it's not worth attaching: void foo (void* ptr); struct Node { int m_v[16]; int m_leaf; }; void setVolumeMass() { extern struct Node* m_n[4]; extern struct Node* m_nodes; int *ranks; int j; for(j=0;j<4;++j) { ranks[(int)(m_n[j]-m_nodes)]=1; } foo ((void*)( ranks )); } Removing one line from the code above makes it pass. The last file that is generated when run with -da is now btSoftBody.i.281r.vartrack. It looks to me like it's much larger than it should be. I'll attach it, as well as the preceding btSoftBody.i.280r.alignments. When a line is removed from the code above, the compilation continues with btSoftBody.i.282r.mach.