Bug 112904 - [14 Regression] ICE in extract_insn, at recog.cc:2791 with -mxop since r14-4964-g7eed861e8ca3f5
Summary: [14 Regression] ICE in extract_insn, at recog.cc:2791 with -mxop since r14-49...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 14.0
: P3 normal
Target Milestone: 14.0
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2023-12-07 12:32 UTC by Michal Jireš
Modified: 2023-12-14 07:02 UTC (History)
1 user (show)

See Also:
Host:
Target: x86_64-*-*
Build:
Known to work:
Known to fail:
Last reconfirmed: 2023-12-07 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michal Jireš 2023-12-07 12:32:56 UTC
Compiling reduced testcase g++.target/i386/part-vect-vcondhf.C results in ICE since r14-4964-g7eed861e8ca3f5.

$ cat part-vect-vcondhf.C
typedef _Float16 __attribute__((__vector_size__(8))) __v4hf;
__v4hf cf, df;
__attribute__((__vector_size__(4 * sizeof(short)))) short csf_ne_d;
__v4hf csf_ne() { return csf_ne_d ? cf : df; }


$ g++ part-vect-vcondhf.C -mxop
part-vect-vcondhf.C: In function ‘__v4hf csf_ne()’:
part-vect-vcondhf.C:4:46: error: unrecognizable insn:
    4 | __v4hf csf_ne() { return csf_ne_d ? cf : df; }
      |                                              ^
(insn 10 9 13 2 (set (reg:V4HF 102 [ _6 ])
        (if_then_else:V4HF (subreg:V4HF (reg:V4HI 99 [ _2 ]) 0)
            (reg:V4HF 100 [ cf.1_3 ])
            (reg:V4HF 101 [ df.2_4 ]))) "part-vect-vcondhf.C":4:42 -1
     (nil))
during RTL pass: vregs
part-vect-vcondhf.C:4:46: internal compiler error: in extract_insn, at recog.cc:2812
0x8da3b4 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
	/home/mjires/git/GCC/master/gcc/rtl-error.cc:108
0x8da3d0 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
	/home/mjires/git/GCC/master/gcc/rtl-error.cc:116
0x8d88f1 extract_insn(rtx_insn*)
	/home/mjires/git/GCC/master/gcc/recog.cc:2812
0xf77cc0 instantiate_virtual_regs_in_insn
	/home/mjires/git/GCC/master/gcc/function.cc:1611
0xf77cc0 instantiate_virtual_regs
	/home/mjires/git/GCC/master/gcc/function.cc:1994
0xf77cc0 execute
	/home/mjires/git/GCC/master/gcc/function.cc:2041
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/home/mjires/built/master/libexec/gcc/x86_64-pc-linux-gnu/14.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/mjires/git/GCC/master/configure --prefix=/home/mjires/built/master --disable-bootstrap --enable-checking --enable-languages=c,c++,fortran,lto : (reconfigured) /home/mjires/git/GCC/master/configure --prefix=/home/mjires/built/master --disable-bootstrap --enable-checking --enable-languages=c,c++,fortran,lto
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.0 20231207 (experimental) (GCC)
Comment 1 Andrew Pinski 2023-12-07 20:15:33 UTC
Confirmed.
Comment 2 Hongtao Liu 2023-12-08 02:45:17 UTC
Mine.
Comment 3 GCC Commits 2023-12-11 01:12:23 UTC
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>:

https://gcc.gnu.org/g:2c2df123de432356d28ee7e8a9627dc9e80a399d

commit r14-6393-g2c2df123de432356d28ee7e8a9627dc9e80a399d
Author: liuhongt <hongtao.liu@intel.com>
Date:   Fri Dec 8 11:19:52 2023 +0800

    Support vpcmov for V4HF/V4BF/V2HF/V2BF under TARGET_XOP.
    
    gcc/ChangeLog:
    
            PR target/112904
            * config/i386/mmx.md (*xop_pcmov_<mode>): New define_insn.
    
    gcc/testsuite/ChangeLog:
    
            * g++.target/i386/pr112904.C: New test.
Comment 4 Hongtao Liu 2023-12-11 01:13:10 UTC
Fixed in GCC14.
Comment 5 GCC Commits 2023-12-14 07:02:35 UTC
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:585dc19ef051959d688e6ea89b41998600480ecb

commit r14-6530-g585dc19ef051959d688e6ea89b41998600480ecb
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Dec 14 08:01:04 2023 +0100

    testsuite: Fix up pr112904.C test [PR112904]
    
    On Fri, Dec 08, 2023 at 03:12:00PM +0800, liuhongt wrote:
    >       * g++.target/i386/pr112904.C: New test.
    
    The new test FAILs on i686-linux and even on x86_64-linux I think
    it doesn't actually test what was reported, unless one performs testing
    with -march= for some XOP enabled CPU or -mxop.
    
    The following patch fixes that, tested on x86_64-linux with
    make check-g++ RUNTESTFLAGS='--target_board=unix\{-m32,-m32/-mno-sse/-mno-mmx,-m64\} i386.exp=pr112904.C'
    
    2023-12-14  Jakub Jelinek  <jakub@redhat.com>
    
            PR target/112904
            * g++.target/i386/pr112904.C: Add dg-do compile, dg-options -mxop
            and for ia32 also dg-additional-options -mmmx.