https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70738

--- Comment #2 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Fri May 20 16:06:39 2016
New Revision: 236520

URL: https://gcc.gnu.org/viewcvs?rev=236520&root=gcc&view=rev
Log:
Add -mgeneral-regs-only option

X86 Linux kernel is compiled only with integer instructions.  Currently,

-mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-80387
-mno-fp-ret-in-387  -mskip-rax-setup

is used to compile kernel.  If we add another non-integer feature, it
has to be turned off.  We can add a -mgeneral-regs-only option, similar
to AArch64, to disable all non-integer features so that kernel doesn't
need a long list and the same option will work for future compilers.
It can also be used to compile interrupt handler.

gcc/

        PR target/70738
        * common/config/i386/i386-common.c
        (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New.
        (ix86_handle_option): Disable MPX, MMX, SSE and x87 instructions
        for -mgeneral-regs-only.
        * config/i386/i386.c (ix86_option_override_internal): Don't
        enable x87 instructions if only the general registers are
        allowed.
        * config/i386/i386.opt: Add -mgeneral-regs-only.
        * doc/invoke.texi: Document -mgeneral-regs-only.

gcc/testsuite/

        PR target/70738
        * gcc.target/i386/pr70738-1.c: Likewise.
        * gcc.target/i386/pr70738-2.c: Likewise.
        * gcc.target/i386/pr70738-3.c: Likewise.
        * gcc.target/i386/pr70738-4.c: Likewise.
        * gcc.target/i386/pr70738-5.c: Likewise.
        * gcc.target/i386/pr70738-6.c: Likewise.
        * gcc.target/i386/pr70738-7.c: Likewise.
        * gcc.target/i386/pr70738-8.c: Likewise.
        * gcc.target/i386/pr70738-9.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr70738-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-2.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-3.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-4.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-5.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-6.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-7.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-8.c
    trunk/gcc/testsuite/gcc.target/i386/pr70738-9.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/common/config/i386/i386-common.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.opt
    trunk/gcc/doc/invoke.texi
    trunk/gcc/testsuite/ChangeLog

Reply via email to