Using GCC 9.4, I've noticed setting -O1 will set _FORTIFY_SOURCE=2 I'm able to see this by running gcc -c -E -dM -O1 - < /dev/null | grep FORTIFY_SOURCE But running the same command without -O1 doesn't set it. Is this documented? is this expected behavior? I could not find any reference to how optimization leads to setting this macro. Any tips on where I can look, or what i'm missing to see this connection? Thanks!