------- Comment #4 from wilson at gcc dot gnu dot org 2010-04-09 21:34 ------- I don't think this is documented anywhere. Not in gcc at least.
POSIX says that for command line arguments "-a -d", "-d -a", "-da", and "-ad" are all equivalent. Many GNU tools do not conform to this rule. A long time ago there was a push to try to fix all GNU tools. The GNU solution was based on the idea that POSIX says nothing about command line arguments that start with two dashes, so we only had to ensure that all long options started with two dashes. For GCC, step1 of the solution was to add a translation table to map new --X options to existing options. To make the translation table shorter, there was a default rule added for -f options, so that we didn't have to list them all. Hence any -- option not already in the table is assumed to be a -f option. There was no step2 GCC solution, as people stopped caring, and then people started forgetting why we were even doing this. Anyways, printing the translated option name in an error message is wrong, and should be fixed. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43687