2016-10-21 Uros Bizjak <ubiz...@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.
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);