================
@@ -2842,9 +2862,8 @@ static void RenderFloatingPointOptions(const ToolChain 
&TC, const Driver &D,
             << Args.MakeArgString("-ffp-model=" + FPModel)
             << Args.MakeArgString("-ffp-model=" + Val);
       if (Val.equals("fast")) {
-        optID = options::OPT_ffast_math;
         FPModel = Val;
-        FPContract = "fast";
+        applyFastMath();
----------------
andykaylor wrote:

I just re-read you comment, and I think I see the confusion now. The previous 
code was not easy to follow. We were changing the value of optID here, so when 
we finished with this switch statement execution would continue on to the 
switch statement below where the "whole pile of flags" was being set by the 
OPT_ffast_math handler. Now I'm not changing the value of optID here and 
instead calling the lambda to set the pile of flags. In a future revision I'd 
like to add a parameter to the lambda to indicate that I want slightly less 
aggressive fast math settings.

I started out with a change that chained all the OPT_ffast_math, 
OPT_fno_fast_math, OPT_funsafe_math_optimizations, and 
OPT_fno_unsafe_math_optimizations into a pair of nested lambdas with a 
parameter for positive and negative versions, but that got way too convoluted 
to handle all the variations needed to make it NFC. I think that pointed to 
some things we're doing wrong, but I'll address those separately to keep the 
history clean. This seemed like a manageable place to start.

https://github.com/llvm/llvm-project/pull/81173
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to