I'm following this thread with more and more disgust.
Are your really advocating keeping wrong and UB? This will turn into
security issues, I'll promise you.
You really don't want to fix the signed integers to unsigned when you
wrap it, and you rather want to hurt all of integer arithmetic
optimizations by forcing -fwrapv onto us?
Seriously, fix the problems as patched by Mark Polacek who knows what
he is doing, and don't cover it up with -fwrapv.
Optimizers rely on proper signed vs unsigned types, and if you treat
it as unsigned declare it as such, so that the optimizer knows about
it.