Bug 59588 - No need to check "generic" nor change "i686" for -mtune=
Summary: No need to check "generic" nor change "i686" for -mtune=
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.9.0
: P3 normal
Target Milestone: 4.9.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-23 22:54 UTC by H.J. Lu
Modified: 2013-12-26 19:16 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2013-12-24 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2013-12-23 22:54:56 UTC
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.
Comment 1 H.J. Lu 2013-12-24 19:57:33 UTC
-mtune=i686 is also ignored:

[hjl@gnu-6 gcc]$ cat /tmp/t.c
#ifndef __tune_i686__
#error "bad"
#endif
[hjl@gnu-6 gcc]$ gcc  -m32 -S /tmp/t.c -mtune=i686
/tmp/t.c:2:2: error: #error "bad"
 #error "bad"
  ^
[hjl@gnu-6 gcc]$
Comment 2 H.J. Lu 2013-12-24 20:01:28 UTC
-march=i686 is also ignored:

[hjl@gnu-6 gcc]$ gcc -m32 -S /tmp/t.c -march=i686
/tmp/t.c:2:2: error: #error "bad"
 #error "bad"
  ^
[hjl@gnu-6 gcc]$
Comment 3 hjl@gcc.gnu.org 2013-12-26 16:10:58 UTC
Author: hjl
Date: Thu Dec 26 16:10:55 2013
New Revision: 206213

URL: http://gcc.gnu.org/viewcvs?rev=206213&root=gcc&view=rev
Log:
Don't check/change generic/i686 tuning

gcc/

	PR target/59588
	* config/i386/i386.c (ix86_option_override_internal): Don't
	check generic tuning.  Don't change i686 tuning.

gcc/testsuite/

	PR target/59588
	* gcc.target/i386/pr59588-1.c: New file.
	* gcc.target/i386/pr59588-2.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr59588-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr59588-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/ChangeLog
Comment 4 H.J. Lu 2013-12-26 19:16:17 UTC
Fixed on trunk.  No plan to backport to release branches.