Не стоит обобщать, что -O1, -O2 и -O3 проводят оптимизации только на уровне до процедур включительно. Я прямо сейчас посмотрел доку gcc - там первая inline подстановка уже на -O1. Так что практически неизбежно получается, что есть плохо параллелизуемая часть оптимизаций.
Но спорить с тем, что оптимизации уровня процедуры и ниже хорошо параллелятся по процедурам, не буду.