Commit f4eafec9 by Uros Bizjak

re PR middle-end/86511 (Traps are generated for non-trapping compares)

	PR target/86511
	* expmed.c (emit_store_flag): Do not emit setcc followed by a
	conditional move when trapping comparison was split to a
	non-trapping one (and vice versa).

From-SVN: r262736
parent e2144dde
2018-07-16 Uros Bizjak <ubizjak@gmail.com>
PR target/86511
* expmed.c (emit_store_flag): Do not emit setcc followed by a
conditional move when trapping comparison was split to a
non-trapping one (and vice versa).
2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com> 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
* config/s390/s390.c (s390_function_profiler): Generate nops * config/s390/s390.c (s390_function_profiler): Generate nops
...@@ -126,11 +133,12 @@ ...@@ -126,11 +133,12 @@
when result_eq is false. when result_eq is false.
(expand_builtin_strcmp): Inline the calls first. (expand_builtin_strcmp): Inline the calls first.
(expand_builtin_strncmp): Likewise. (expand_builtin_strncmp): Likewise.
(inline_string_cmp): New routine. Expand a string compare (inline_string_cmp): New routine. Expand a string compare
call by using a sequence of char comparison. call by using a sequence of char comparison.
(inline_expand_builtin_string_cmp): New routine. Inline expansion (inline_expand_builtin_string_cmp): New routine. Inline expansion
a call to str(n)cmp/memcmp. a call to str(n)cmp/memcmp.
* doc/invoke.texi (--param builtin-string-cmp-inline-length): New option. * doc/invoke.texi (--param builtin-string-cmp-inline-length):
New option.
* params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New. * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New.
2018-07-13 Richard Earnshaw <rearnsha@arm.com> 2018-07-13 Richard Earnshaw <rearnsha@arm.com>
...@@ -724,9 +732,9 @@ ...@@ -724,9 +732,9 @@
* config.gcc (riscv*-*-*): When setting xlen, handle riscv-*. * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
2018-07-05 Indu Bhagat <indu.bhagat@oracle.com> 2018-07-05 Indu Bhagat <indu.bhagat@oracle.com>
* config/aarch64/aarch64-simd.md: correct flags text for * config/aarch64/aarch64-simd.md: correct flags text for
MIN_EXPR replacement. MIN_EXPR replacement.
2018-07-05 James Clarke <jrtc27@jrtc27.com> 2018-07-05 James Clarke <jrtc27@jrtc27.com>
......
...@@ -6038,6 +6038,11 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1, ...@@ -6038,6 +6038,11 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
if (!HAVE_conditional_move) if (!HAVE_conditional_move)
return 0; return 0;
/* Do not turn a trapping comparison into a non-trapping one. */
if ((code != EQ && code != NE && code != UNEQ && code != LTGT)
&& flag_trapping_math)
return 0;
/* Try using a setcc instruction for ORDERED/UNORDERED, followed by a /* Try using a setcc instruction for ORDERED/UNORDERED, followed by a
conditional move. */ conditional move. */
tem = emit_store_flag_1 (subtarget, first_code, op0, op1, mode, 0, tem = emit_store_flag_1 (subtarget, first_code, op0, op1, mode, 0,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment