[Bug target/82002] [8 Regression] ICE in sp_valid_at, at config/i386/i386.c:13233

2017-11-04 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82002

--- Comment #11 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Sat Nov  4 22:38:43 2017
New Revision: 254412

URL: https://gcc.gnu.org/viewcvs?rev=254412=gcc=rev
Log:
PR target/82002 Part 2: Correct non-immediate offset/invalid INSN

When we are realigning the stack pointer, making an ms_abi to sysv_abi
call and allocating 2GiB or more on the stack we end up with an invalid
INSN due to a non-immediate offset.  This occurs both with and without
-mcall-ms2sysv-xlogues.  Additionally, the stack allocation with
-mcall-ms2sysv-xlogues is ignoring (silently disabling) stack checking,
stack clash checking and probing.

This patch fixes these problems by:

1. No longer allocate stack space in ix86_emit_outlined_ms2sysv_save.
2. Rearrange where we emit SSE saves or stub call:
   a. Before frame allocation when offset from frame to save area is >= 2GiB.
   b. After frame allocation when frame is < 2GiB.  (Stack allocations
  prior to the stub call can't be combined with those afterwards, so
  this is better when possible.)
3. Modify choose_baseaddr to take an optional scratch_regno argument
   and never return rtx that cannot be used as an immediate.

gcc:
config/i386/i386.c (choose_basereg): Use optional scratch
register and add assertion.
(x86_emit_outlined_ms2sysv_save): Use scratch register when
needed, and don't allocate stack.
(ix86_expand_prologue): Rearrange where SSE saves/stub call is
emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
(ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.

gcc/testsuite:
gcc.target/i386/pr82002-2a.c: Change from xfail to fail.
gcc.target/i386/pr82002-2b.c: Likewise.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/pr82002-2a.c
trunk/gcc/testsuite/gcc.target/i386/pr82002-2b.c

[Bug target/82002] [8 Regression] ICE in sp_valid_at, at config/i386/i386.c:13233

2017-10-31 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82002

--- Comment #9 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Tue Oct 31 21:48:55 2017
New Revision: 254284

URL: https://gcc.gnu.org/viewcvs?rev=254284=gcc=rev
Log:
PR target/82002 Part 1: Correct ICE caused by wrong calculation

gcc:
config/i386/i386.c (ix86_expand_epilogue): Correct stack
calculation.

gcc/testsuite:
gcc.target/i386/pr82002-1.c: New test.
gcc.target/i386/pr82002-2a.c: New xfail test.
gcc.target/i386/pr82002-2b.c: New xfail test.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr82002-1.c
trunk/gcc/testsuite/gcc.target/i386/pr82002-2a.c
trunk/gcc/testsuite/gcc.target/i386/pr82002-2b.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog

[Bug target/82268] [8 regression] i386/pr82196-1.c fail

2017-10-27 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82268

--- Comment #5 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Fri Oct 27 22:15:32 2017
New Revision: 254186

URL: https://gcc.gnu.org/viewcvs?rev=254186=gcc=rev
Log:
PR target/82268 Correct FAIL when configured --with-cpu

* gcc.target/i386/pr82196-1.c (dg-options): Add -mno-avx.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/pr82196-1.c

[Bug target/82196] -mcall-ms2sysv-xlogues stubs sometimes use wrong MOV instruction

2017-09-23 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82196

--- Comment #5 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Sat Sep 23 11:02:54 2017
New Revision: 253116

URL: https://gcc.gnu.org/viewcvs?rev=253116=gcc=rev
Log:
PR target/82196 addendum: Fix Darwin build breakage and test FAILS on Solaris

gcc/testsuite:
* gcc.target/i386/pr82196-1.c: (b): Remove volatile asm.
* gcc.target/i386/pr82196-2.c: (b): Likewise.

libgcc:
* configure.ac: Add Check for HAVE_AS_AVX.
* config.in: Regenerate.
* configure: Likewise.
* config/i386/i386-asm.h: Include auto-target.h from libgcc.
(SSE_SAVE, SSE_RESTORE): Emit .byte sequence for !HAVE_AS_AVX.
Correct out-of-date comments.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/pr82196-1.c
trunk/gcc/testsuite/gcc.target/i386/pr82196-2.c
trunk/libgcc/ChangeLog
trunk/libgcc/config.in
trunk/libgcc/config/i386/i386-asm.h
trunk/libgcc/configure
trunk/libgcc/configure.ac

[Bug target/82196] -mcall-ms2sysv-xlogues stubs sometimes use wrong MOV instruction

2017-09-17 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82196

--- Comment #2 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Sun Sep 17 22:04:40 2017
New Revision: 252896

URL: https://gcc.gnu.org/viewcvs?rev=252896=gcc=rev
Log:
PR target/82196 correct choice of avx/sse stubs for -mcall-ms2sysv-xlogues

gcc:
config/i386/i386.c: (xlogue_layout::STUB_NAME_MAX_LEN): Increase to 20
bytes.
(xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
(xlogue_layout::get_stub_name): Modify to select the appropairate sse
or avx version of the stub.

gcc/testsuite:
gcc.target/i386/pr82196-1.c: New test.
gcc.target/i386/pr82196-2.c: Likewise.

libgcc:
config/i386/i386-asm.h (PASTE2): New macro.
(ASMNAME): Modify to use PASTE2.
(MS2SYSV_STUB_PREFIX): New macro for isa prefix.
(MS2SYSV_STUB_BEGIN, MS2SYSV_STUB_END): New macros for stub headers.
config/i386/resms64.S: Rename to a header file, use MS2SYSV_STUB_BEGIN
instead of HIDDEN_FUNC and MS2SYSV_STUB_END instead of FUNC_END.
config/i386/resms64f.S: Likewise.
config/i386/resms64fx.S: Likewise.
config/i386/resms64x.S: Likewise.
config/i386/savms64.S: Likewise.
config/i386/savms64f.S: Likewise.
config/i386/avx_resms64.S: New file that only defines a macro and
includes it's corresponding header file.
config/i386/avx_resms64f.S: Likewise.
config/i386/avx_resms64fx.S: Likewise.
config/i386/avx_resms64x.S: Likewise.
config/i386/avx_savms64.S: Likewise.
config/i386/avx_savms64f.S: Likewise.
config/i386/sse_resms64.S: Likewise.
config/i386/sse_resms64f.S: Likewise.
config/i386/sse_resms64fx.S: Likewise.
config/i386/sse_resms64x.S: Likewise.
config/i386/sse_savms64.S: Likewise.
config/i386/sse_savms64f.S: Likewise.
config/i386/t-msabi: Modified to add avx and sse versions of stubs.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr82196-1.c
trunk/gcc/testsuite/gcc.target/i386/pr82196-2.c
trunk/libgcc/config/i386/avx_resms64.S
trunk/libgcc/config/i386/avx_resms64f.S
trunk/libgcc/config/i386/avx_resms64fx.S
trunk/libgcc/config/i386/avx_resms64x.S
trunk/libgcc/config/i386/avx_savms64.S
trunk/libgcc/config/i386/avx_savms64f.S
trunk/libgcc/config/i386/resms64.h
  - copied, changed from r252895, trunk/libgcc/config/i386/resms64.S
trunk/libgcc/config/i386/resms64f.h
  - copied, changed from r252895, trunk/libgcc/config/i386/resms64f.S
trunk/libgcc/config/i386/resms64fx.h
  - copied, changed from r252895, trunk/libgcc/config/i386/resms64fx.S
trunk/libgcc/config/i386/resms64x.h
  - copied, changed from r252895, trunk/libgcc/config/i386/resms64x.S
trunk/libgcc/config/i386/savms64.h
  - copied, changed from r252895, trunk/libgcc/config/i386/savms64.S
trunk/libgcc/config/i386/savms64f.h
  - copied, changed from r252895, trunk/libgcc/config/i386/savms64f.S
trunk/libgcc/config/i386/sse_resms64.S
trunk/libgcc/config/i386/sse_resms64f.S
trunk/libgcc/config/i386/sse_resms64fx.S
trunk/libgcc/config/i386/sse_resms64x.S
trunk/libgcc/config/i386/sse_savms64.S
trunk/libgcc/config/i386/sse_savms64f.S
Removed:
trunk/libgcc/config/i386/resms64.S
trunk/libgcc/config/i386/resms64f.S
trunk/libgcc/config/i386/resms64fx.S
trunk/libgcc/config/i386/resms64x.S
trunk/libgcc/config/i386/savms64.S
trunk/libgcc/config/i386/savms64f.S
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog
trunk/libgcc/ChangeLog
trunk/libgcc/config/i386/i386-asm.h
trunk/libgcc/config/i386/t-msabi

[Bug target/80969] [8 Regression] ICE in ix86_expand_prologue, at config/i386/i386.c:14606

2017-08-23 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80969

--- Comment #5 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Wed Aug 23 21:46:14 2017
New Revision: 251321

URL: https://gcc.gnu.org/viewcvs?rev=251321=gcc=rev
Log:
PR target/80969 - Fix ICE with -mabi=ms -mavx512f, reduce wasted space when
realigning stack.

2017-08-23  Daniel Santos  <daniel.san...@pobox.com>

* config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
Remove field.
(ix86_frame::stack_realign_allocate): New field.
(struct machine_frame_state): Modify comments.
(machine_frame_state::sp_realigned_fp_end): New field.
* config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
layout calculation.
(sp_valid_at): Add assertion to assure no attempt to access invalid
offset of a realigned stack.
(fp_valid_at): Likewise.
(choose_baseaddr): Modify comments.
(ix86_emit_outlined_ms2sysv_save): Adjust to changes in
ix86_expand_prologue.
(ix86_expand_prologue): Modify stack realignment and allocation.
(ix86_expand_epilogue): Modify comments.
* doc/sourcebuild.texi: Add documentation for target selectors avx2,
avx2_runtime, avx512f, and avx512f_runtime.

2017-08-23  Daniel Santos  <daniel.san...@pobox.com>

* gcc.target/i386/pr80969-1.c: New testcase.
* gcc.target/i386/pr80969-2a.c: Likewise.
* gcc.target/i386/pr80969-2.c: Likewise.
* gcc.target/i386/pr80969-3.c: Likewise.
* gcc.target/i386/pr80969-4a.c: Likewise.
* gcc.target/i386/pr80969-4b.c: Likewise.
* gcc.target/i386/pr80969-4.c: Likewise.
* gcc.target/i386/pr80969-4.h: New header common to pr80969-4*.c
* lib/target-supports.exp (check_avx512_os_support_available,
check_avx512f_hw_available, check_effective_target_avx512f_runtime):
New proceedures for target avx512f and avx512f_runtime selectors.
(check_avx2_hw_available): Fix breakage due NULL being undefined.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr80969-1.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-2.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-2a.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-3.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-4.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-4.h
trunk/gcc/testsuite/gcc.target/i386/pr80969-4a.c
trunk/gcc/testsuite/gcc.target/i386/pr80969-4b.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.h
trunk/gcc/doc/sourcebuild.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/lib/target-supports.exp

[Bug target/71958] x86_64-w64-mingw32, ICE when '-mx32' is used

2017-08-22 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71958

--- Comment #3 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Tue Aug 22 17:59:24 2017
New Revision: 251287

URL: https://gcc.gnu.org/viewcvs?rev=251287=gcc=rev
Log:
PR target/71958: Error on -mx32 with -mabi=ms

gcc/ChangeLog:
2017-08-11  Daniel Santos  <daniel.san...@pobox.com>

* config/i386/i386.c (ix86_option_override_internal): Error when
-mx32 is combined with -mabi=ms.
(ix86_function_type_abi): Limit errors for mixing -mx32 with
attribute ms_abi.

gcc/testsuite/ChangeLog:
2017-08-11  Daniel Santos  <daniel.san...@pobox.com>

* gcc.target/i386/pr71958.c: New test to verify error on -mx32
and -mabi=ms
* gcc.target/i386/pr64409.c: Modify to only run on x32.
* gcc.target/i386/pr46470.c: Modify to skip x32 target.
* gcc.target/i386/pr66275.c: Likewise.
* gcc.target/i386/pr68018.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr71958.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/pr46470.c
trunk/gcc/testsuite/gcc.target/i386/pr64409.c
trunk/gcc/testsuite/gcc.target/i386/pr66275.c
trunk/gcc/testsuite/gcc.target/i386/pr68018.c

[Bug testsuite/80759] gcc.target/x86_64/abi/ms-sysv FAILs

2017-07-24 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80759

--- Comment #58 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Mon Jul 24 21:59:57 2017
New Revision: 250488

URL: https://gcc.gnu.org/viewcvs?rev=250488=gcc=rev
Log:
PR testsuite/80759 Fix -mcall-ms2sysv-xlogues on Darwin and Solaris

2017-07-24  Daniel Santos  <daniel.san...@pobox.com>

PR testsuite/80759
* config.host: include i386/t-msabi for darwin and solaris.
* config/i386/i386-asm.h
(ELFFN): Rename to FN_TYPE.
(FN_SIZE): New macro.
(FN_HIDDEN): Likewise.
(ASMNAME): Likewise.
(FUNC_START): Rename to FUNC_BEGIN, use ASMNAME, replace .global with
.globl.
(HIDDEN_FUNC): Use ASMNAME and .globl instead of .global.
(SSE_SAVE): Convert to cpp macro, hard-code offset (always 0x60).
* config/i386/resms64.S: Use SSE_SAVE as cpp macro instead of gas
.macro.
* config/i386/resms64f.S: Likewise.
* config/i386/resms64fx.S: Likewise.
* config/i386/resms64x.S: Likewise.
* config/i386/savms64.S: Likewise.
* config/i386/savms64f.S: Likewise.

Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config.host
trunk/libgcc/config/i386/i386-asm.h
trunk/libgcc/config/i386/resms64.S
trunk/libgcc/config/i386/resms64f.S
trunk/libgcc/config/i386/resms64fx.S
trunk/libgcc/config/i386/resms64x.S
trunk/libgcc/config/i386/savms64.S
trunk/libgcc/config/i386/savms64f.S

[Bug testsuite/80759] gcc.target/x86_64/abi/ms-sysv FAILs

2017-07-24 Thread dansan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80759

--- Comment #59 from dansan at gcc dot gnu.org ---
Author: dansan
Date: Mon Jul 24 22:00:35 2017
New Revision: 250489

URL: https://gcc.gnu.org/viewcvs?rev=250489=gcc=rev
Log:
PR testsuite/80759 Fix broken tests in ms-sysv.exp

2017-07-24  Daniel Santos  <daniel.san...@pobox.com>

PR testsuite/80759
* gcc.target/x86_64/abi/ms-sysv/do-test.S
(ELFFN_BEGIN): Rename to FN_TYPE.
(ELFFN_END): Rename to FN_SIZE.
(ASMNAME): New macro.
(FUNC): Rename to FUNC_BEGIN, use ASMNAME and use .globl instead of
.global.
(FUNC_END): Use ASMNAME.
(test_data_save): Remove.
(test_data_input): Likewise.
(test_data_output: Likewise.
(test_data_fn): Likewise.
(test_data_retaddr): Likewise.
(regs_to_mem): Make globals, use r10 instead of rax.
(mem_to_regs): Likewise.
(do_test_unaligned): Remove .cfi directives, remove pushf/popf, move
body to ms-sysv.c.
(do_test_aligned): Likewise.
* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:
Add dg-* directives.
(PASTE_STR): New macro.
(ASMNAME): Likewise.
(LOAD_TEST_DATA_ADDR): Likewise.
(TEST_DATA_OFFSET): Likewise.
(do_test_body0): New C function.
(do_test_body): New inline assembly routine.
* gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
(runtest_ms_sysv): Modify.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
trunk/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
trunk/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp