> that the compiler optimized away some 'empty' loops a little bit too aggressively without realizing that these loops were setting output pins.

Doesn't sounds like a bug in the compiler, sounds more like `volatile` was not used (unless, of course, `volatile` was not being honoured).