Use all warnings that are useful or mostly useful. Try all the options. Turn one on, and look at the warnings. Then you decide: Do these warnings show situations where a bug might be hiding? Or do they even show a bug? Or are they just useless? You decide if fixing these warnings would improve your code. If yes, you fix all those warnings. If there are very few possibly not useful warnings, you fix them. If there are lots of warnings, and they are pointless, don’t use that warning.
Go through all available warnings that way. Your goal should be to have as many warnings as possible enabled with your code actually not generating any warnings. And at that point you look for a compiler option that turns all warnings into errors.
(Sometimes you must disable warnings. There is one warning that I can turn on that warns in FIPS code. Which I cannot modify, because FIPS must be compiled with zero changes. So that warning must be disabled. I turn it on every few months to fix warnings outside FIPS).