From: uros Date: Mon, 21 Jan 2019 20:14:40 +0000 (+0000) Subject: PR target/88938 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bca15b83b3e1a50f7db027de78b96fe6c4026a8c;p=thirdparty%2Fgcc.git 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268123 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ca20aed5da4..73c3a6688cc9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-01-21 Uroš Bizjak + + PR target/88938 + * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32, + case IX86_BUILTIN_BEXTRI64]: Sanitize operands. + 2019-01-21 Michael Ploujnikov * hash-map-tests.c (test_map_of_strings_to_int): Show how to use diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8abff99cc626..88557f26c44c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -37215,6 +37215,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 ba5285fc7104..bb703a1b86ad 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-21 Uroš Bizjak + + PR target/88938 + * gcc.target/i386/pr88938.c: New test. + 2019-01-21 Jakub Jelinek PR sanitizer/88901 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"