https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112107
--- Comment #2 from Sergei Trofimovich <slyfox at gcc dot gnu.org> --- Reduced ira-build.cc down to the following: // $ cat pp.cc.cc typedef struct ira_object *ira_object_t; struct ira_object { void *conflicts_array; int min, max; }; void *ira_allocate(int); int ira_conflict_vector_profitable_p_nbytes; void ira_conflict_vector_profitable_p(ira_object_t obj) { int max(obj->max); if (max < obj->min) ira_conflict_vector_profitable_p_nbytes = max - obj->min; } void ira_allocate_object_conflicts(ira_object_t obj) { ira_conflict_vector_profitable_p(obj); int size((obj->max - obj->min) * sizeof 0); obj->conflicts_array = ira_allocate(size); } Reproducer: # cat trigger.bash #!/usr/bin/env bash f() { stage3-gcc/xg++ -Bstage3-gcc -nostdinc++ -fno-PIE -g -O2 -fchecking=1 -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -fno-PIE -c pp.cc.cc -o pp.o -Wall "$@" strip --strip-debug pp.o sha1sum pp.o } [[ "$(f)" == "$(f -gtoggle)" ]] && echo EQUAL || echo DIFF Running: $ ./trigger.bash DIFF