Do either of them conflict with any other options? I have the default options still set:
-Os -Wall -W -Wwrite-strings
And you should add -Wa,-l, -Wa,--all-relocs, etc.
What do these do? (Are they included in -Wall? Because when I added these two, it didn't change my program size, which suggests to me that it didn't do anything. Of course, I know that isn't always true, but it seems suspicious...)
According to the docs, -Wall simply allows warnings. The W stands for WARN. All -W or -w switches control warnings.
#33: -Wa,-l != -Wall...
#32: unless you already added those options to the assembler options, they usually improve things. Maybe your program already uses -mpcrel or -freg-relative-an ?