http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59588
Bug ID: 59588 Summary: Odd codes in ix86_option_override_internal Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: ubizjak at gmail dot com ix86_option_override_internal has if (opts->x_ix86_arch_string) opts->x_ix86_tune_string = opts->x_ix86_arch_string; if (!opts->x_ix86_tune_string) { opts->x_ix86_tune_string = cpu_names[TARGET_CPU_DEFAULT]; ix86_tune_defaulted = 1; } /* opts->x_ix86_tune_string is set to opts->x_ix86_arch_string or defaulted. We need to use a sensible tune option. */ if (!strcmp (opts->x_ix86_tune_string, "generic") || !strcmp (opts->x_ix86_tune_string, "x86-64") || !strcmp (opts->x_ix86_tune_string, "i686")) { opts->x_ix86_tune_string = "generic"; } Why is opts->x_ix86_tune_string changed to "generic". If opts->x_ix86_tune_string is "generic". there is no need to change it to "generic". If an option is valid for -march=, it should also be valid for -mtune.