From: Uros Bizjak Date: Tue, 22 Jan 2019 16:35:53 +0000 (+0100) Subject: re PR target/88938 (ICE in extract_insn, at recog.c:2304) X-Git-Tag: releases/gcc-7.5.0~647 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f693957cbe2ec33fb3a3ceb4dfc73e3589de7f61;p=thirdparty%2Fgcc.git re PR target/88938 (ICE in extract_insn, at recog.c:2304) PR target/88938 * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32, case IX86_BUILTIN_BEXTRI64]: Sanitize operands. testsuite/ChangeLog: PR target/88938 * gcc.target/i386/pr88938.c: New test. From-SVN: r268157 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9dc3762f8b57..e8473b0d799b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-01-22 Uroš Bizjak + + PR target/88938 + * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32, + case IX86_BUILTIN_BEXTRI64]: Sanitize operands. + 2019-01-18 Uroš Bizjak * config/alpha/alpha.c (alpha_gimplify_va_arg): diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1ca7109976fc..b3db897825cc 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -38397,6 +38397,16 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, unsigned char lsb_index = INTVAL (op1) & 0xFF; op1 = GEN_INT (length); op2 = GEN_INT (lsb_index); + + mode1 = insn_data[icode].operand[1].mode; + if (!insn_data[icode].operand[1].predicate (op0, mode1)) + op0 = copy_to_mode_reg (mode1, op0); + + mode0 = insn_data[icode].operand[0].mode; + if (target == 0 + || !register_operand (target, mode0)) + target = gen_reg_rtx (mode0); + pat = GEN_FCN (icode) (target, op0, op1, op2); if (pat) emit_insn (pat); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 15a4270d9399..5a2ad99ffab5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-22 Uroš Bizjak + + PR target/88938 + * gcc.target/i386/pr88938.c: New test. + 2019-01-16 Joseph Myers Backport from mainline diff --git a/gcc/testsuite/gcc.target/i386/pr88938.c b/gcc/testsuite/gcc.target/i386/pr88938.c new file mode 100644 index 000000000000..1314ebb1f356 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr88938.c @@ -0,0 +1,5 @@ +/* PR target/88938 */ +/* { dg-do compile } */ +/* { dg-options "-Og -fno-tree-ccp -fno-tree-fre -mtbm" } */ + +#include "tbm-bextri-1.c"