[PATCH, i386]: Handle IX86_BUILTIN_INFQ and IX86_BUILTIN_HUGE_VALQ in ix86_fold_builtin

Uros Bizjak ubizjak@gmail.com
Thu Oct 20 22:59:00 GMT 2016


2016-10-21  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/i386.c (ix86_fold_builtin): Handle IX86_BUILTIN_INFQ
    and IX86_BUILTIN_HUGE_VALQ here ...
    (ix86_expand_builtin): ... not here.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.
Committed to mainline SVN.

Uros.
-------------- next part --------------
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c	(revision 241384)
+++ config/i386/i386.c	(working copy)
@@ -33323,6 +33323,15 @@ ix86_fold_builtin (tree fndecl, int n_args,
 	    return NULL_TREE;
 	  }
 
+	case IX86_BUILTIN_INFQ:
+	case IX86_BUILTIN_HUGE_VALQ:
+	  {
+	    tree type = TREE_TYPE (TREE_TYPE (fndecl));
+	    REAL_VALUE_TYPE inf;
+	    real_inf (&inf);
+	    return build_real (type, inf);
+	  }
+
 	default:
 	  break;
 	}
@@ -36684,24 +36693,6 @@ ix86_expand_builtin (tree exp, rtx target, rtx sub
     case IX86_BUILTIN_VEC_SET_V16QI:
       return ix86_expand_vec_set_builtin (exp);
 
-    case IX86_BUILTIN_INFQ:
-    case IX86_BUILTIN_HUGE_VALQ:
-      {
-	REAL_VALUE_TYPE inf;
-	rtx tmp;
-
-	real_inf (&inf);
-	tmp = const_double_from_real_value (inf, mode);
-
-	tmp = validize_mem (force_const_mem (mode, tmp));
-
-	if (target == 0)
-	  target = gen_reg_rtx (mode);
-
-	emit_move_insn (target, tmp);
-	return target;
-      }
-
     case IX86_BUILTIN_NANQ:
     case IX86_BUILTIN_NANSQ:
       return expand_call (exp, target, ignore);


More information about the Gcc-patches mailing list