[gcc r11-9581] target/100784 - avoid ICE with folding __builtin_ia32_shufpd

Richard Biener rguenth@gcc.gnu.org
Thu Feb 17 09:06:26 GMT 2022


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

commit r11-9581-g2b1b5b16f3b45647b1be87cbbe7fe8b4b854b7c3
Author: Richard Biener <rguenther@suse.de>
Date:   Thu Jan 20 14:34:33 2022 +0100

    target/100784 - avoid ICE with folding __builtin_ia32_shufpd
    
    This avoids ICEing when there is no LHS on the call by following
    what foldings of other builtins do in , namely not folding.
    
    2022-01-20  Richard Biener  <rguenther@suse.de>
    
            PR target/100784
            * config/i386/i386.c (ix86_gimple_fold_builtin): Check for
            LHS before folding __builtin_ia32_shufpd and friends.
    
    (cherry picked from commit d63d9c3dd160dce24f0209f193b8e7388b19f712)

Diff:
---
 gcc/config/i386/i386.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 3ef209169dd..5ddad92ad04 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -18247,7 +18247,7 @@ ix86_gimple_fold_builtin (gimple_stmt_iterator *gsi)
 
     case IX86_BUILTIN_SHUFPD:
       arg2 = gimple_call_arg (stmt, 2);
-      if (TREE_CODE (arg2) == INTEGER_CST)
+      if (TREE_CODE (arg2) == INTEGER_CST && gimple_call_lhs (stmt))
 	{
 	  location_t loc = gimple_location (stmt);
 	  unsigned HOST_WIDE_INT imask = TREE_INT_CST_LOW (arg2);


More information about the Gcc-cvs mailing list