diff options
author | Richard Biener <rguenther@suse.de> | 2022-02-09 08:48:35 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-02-09 10:07:29 +0100 |
commit | 1c827873ed283df282f2df11dfe0ff607e07dab3 (patch) | |
tree | 49f90dce83b54ad9eeff896b4f5082439ff8c7c7 | |
parent | 869fb813039e8933a85f5f2a3a53cde156030b0a (diff) | |
download | gcc-1c827873ed283df282f2df11dfe0ff607e07dab3.zip gcc-1c827873ed283df282f2df11dfe0ff607e07dab3.tar.gz gcc-1c827873ed283df282f2df11dfe0ff607e07dab3.tar.bz2 |
target/104453 - guard call folding with NULL LHS
This guards shift builtin folding to do nothing when there is
no LHS, similar to what other foldings do.
2022-02-09 Richard Biener <rguenther@suse.de>
PR target/104453
* config/i386/i386.cc (ix86_gimple_fold_builtin): Guard shift
folding for NULL LHS.
* gcc.target/i386/pr104453.c: New testcase.
-rw-r--r-- | gcc/config/i386/i386.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr104453.c | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index dd5584f..448c079 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -18642,6 +18642,8 @@ ix86_gimple_fold_builtin (gimple_stmt_iterator *gsi) do_shift: gcc_assert (n_args >= 2); + if (!gimple_call_lhs (stmt)) + break; arg0 = gimple_call_arg (stmt, 0); arg1 = gimple_call_arg (stmt, 1); elems = TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)); diff --git a/gcc/testsuite/gcc.target/i386/pr104453.c b/gcc/testsuite/gcc.target/i386/pr104453.c new file mode 100644 index 0000000..325cedf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr104453.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f" } */ + +typedef short __attribute__((__vector_size__ (32))) V; +V g; + +void +foo (void) +{ + __builtin_ia32_psrawi256 (g, 0); +} |