PING Re: [PATCH 0/6] [i386] PR80969 Fix ICE with -mabi=ms -mavx512f
Original message: https://gcc.gnu.org/ml/gcc-patches/2017-07/msg02005.html Patches 2 and 3 have been committed and I have corrected the error in patch 5. I configuring with --enable-checking=yes,rtl --enable-languages=all and retested with RUNTESTFLAGS="--target_board=unix/\{,-m32\}" The updated patches fix an error when using mov instead of push and add documentation for changes to target-supports.exp. I have included modified ChangeLogs. In addition to to fixing the ICE, this patch set makes more efficient use of stack space in some cases the outgoing stack boundary is > 16 bytes and realignment is necessary. This adds new tests, some of which require avx512f (gcc/testsuite/gcc.target/i386/pr80969-4*.c) -- these I have only tested these using Intel SDE. Below is an updated list of the patches. 1. https://gcc.gnu.org/ml/gcc-patches/2017-07/msg02006.html 2. Committed. 3. Committed. 4. https://gcc.gnu.org/ml/gcc-patches/2017-07/msg02009.html 5. v2 -- https://gcc.gnu.org/ml/gcc-patches/2017-08/msg00249.html 6. v2 -- https://gcc.gnu.org/ml/gcc-patches/2017-08/msg00618.html Thanks, Daniel 2017-08-08 Daniel Santos* config/i386/i386.h (ix86_frame::stack_realign_allocate_offset): Remove (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): Modify. (sp_valid_at): Likewise. (fp_valid_at): Likewise. (choose_baseaddr): Modify comments. (ix86_emit_outlined_ms2sysv_save): Modify. (ix86_expand_prologue): Likewise. * doc/sourcebuild.texi (avx2, avx2_runtime): Add missing items to effective-targets. (avx512f, avx512f_runtime): Add new items to effective-tarets. 2017-08-08 Daniel Santos * lib/target-supports.exp (check_avx512_os_support_available): New Procedure. (check_avx2_hw_available): Modify. (check_avx512f_hw_available): New Procedure. (check_effective_target_avx512f_runtime): Likewise. * 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.
Re: [PATCH 0/6] [i386] PR80969 Fix ICE with -mabi=ms -mavx512f
On Mon, Jul 31, 2017 at 7:28 PM, Daniel Santoswrote: > Well I just learned how to test 32-bit earlier and I've uncovered a problem > when running 32-bit tests. Do you want me to commit the the two patches > (squashed together) in the mean time? Yes, please commit two approved patches (with correct ChangeLog). Uros.
Re: [PATCH 0/6] [i386] PR80969 Fix ICE with -mabi=ms -mavx512f
Well I just learned how to test 32-bit earlier and I've uncovered a problem when running 32-bit tests. Do you want me to commit the the two patches (squashed together) in the mean time? Thanks, Daniel
[PATCH 0/6] [i386] PR80969 Fix ICE with -mabi=ms -mavx512f
When working on the Wine64 project to use aligned SSE MOVs after SP realignment and adding -mcall-ms2sysv-xlogues, I overlooked the fact that the function body may require a stack alignment greater than 16-bytes. This can result in an ICE with -mabi=ms -mavx512f and some other cases. This patch set reworks the strategy for calculating the frame layout following normal (inline) integral register saves (at frame.reg_save_offset) to the start of the frame for the local function (frame.frame_pointer_offset). I've completed a bootstrap and full regression test with no additional failures, but I don't have access to a machine with avx512 extensions. I have manually run the tests that need it using the Intel SDE, but I haven't been able to validate that my check_effective_target_avx512f_runtime code in gcc/testsuite/lib/target-supports.exp is correctly enabling the tests for pr80969-4*.c. As an aside note, I still have some rework of the ms-sysv.exp tests that I haven't yet to submitted and in which I'm adding more tests for cases with uncommon stacks, as in PR 81563. Thanks, Daniel 2017-07-23 Daniel Santos* config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field. (ix86_frame::stack_realign_allocate_offset): Likewise. (ix86_frame::stack_realign_allocate): New field. (struct machine_frame_state): Modify comments. (machine_frame_state::sp_realigned_fp_end): New field. (machine_function::call_ms2sysv_pad_out): Remove field. * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify. (ix86_compute_frame_layout): Likewise. (sp_valid_at): Likewise. (fp_valid_at): Likewise. (choose_baseaddr): Modify comments. (ix86_emit_outlined_ms2sysv_save): Modify. (ix86_expand_prologue): Likewise. (ix86_expand_epilogue): Modify comments. 2017-07-23 Daniel Santos * 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.