From 8d238cfaa17fdc886d8465f3d2416243400f30bc Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 6 Dec 2020 20:22:39 +0000 Subject: [PATCH] * limit min/max optimization to fastmath for now, as the NaN handling is not working yet git-svn-id: trunk@47704 - --- compiler/nflw.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/nflw.pas b/compiler/nflw.pas index ebcdd7a13e..6a6cf5e2e9 100644 --- a/compiler/nflw.pas +++ b/compiler/nflw.pas @@ -1591,11 +1591,14 @@ implementation {$ifndef llvm} {$if defined(i386) or defined(x86_64) or defined(xtensa)} { use min/max intrinsic? } - if (left.nodetype in [gtn,gten,ltn,lten]) and IsSingleStatement(right,thenstmnt) and IsSingleStatement(t1,elsestmnt) and + if (cs_opt_level2 in current_settings.optimizerswitches) and + (left.nodetype in [gtn,gten,ltn,lten]) and IsSingleStatement(right,thenstmnt) and IsSingleStatement(t1,elsestmnt) and (thenstmnt.nodetype=assignn) and (elsestmnt.nodetype=assignn) and not(might_have_sideeffects(left)) and tassignmentnode(thenstmnt).left.isequal(tassignmentnode(elsestmnt).left) and {$if defined(i386) or defined(x86_64)} + { for now, limit it to fastmath mode as NaN handling is not implemented properly yet } + (cs_opt_fastmath in current_settings.optimizerswitches) and {$ifdef i386} (((current_settings.fputype>=fpu_sse) and is_single(tassignmentnode(thenstmnt).left.resultdef)) or ((current_settings.fputype>=fpu_sse2) and is_double(tassignmentnode(thenstmnt).left.resultdef))