rjmccall added inline comments.

================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:2943
+  if (Opts.FastRelaxedMath)
+    Opts.setDefaultFPContractMode(LangOptions::FPM_Fast);
   Opts.HexagonQdsp6Compat = Args.hasArg(OPT_mqdsp6_compat);
----------------
mibintc wrote:
> I changed this because the FAST version of this test 
> clang/test/CodeGenOpenCL/relaxed-fpmath.cl wants the 'fast' attribute on the 
> instruction dump.  All the LLVM FMF bits must be set for the fast attribute 
> print.  By default, the value for OpenCL is ffp-contract=on
Is there an overall behavior change for OpenCL across these patches?


================
Comment at: clang/lib/Sema/SemaAttr.cpp:460
   case PFC_Push:
-    Action = Sema::PSK_Push_Set;
-    FpPragmaStack.Act(Loc, Action, StringRef(), 
NewFPFeatures.getAsOpaqueInt());
+    if (FpPragmaStack.Stack.empty()) {
+      FpPragmaStack.Act(Loc, Sema::PSK_Set, StringRef(),
----------------
mibintc wrote:
> When i was adding a test, I realized that pragma float_control(push) then pop 
> wasn't working as expected. If the stack is empty, which is most of the time, 
> first need to push the current fp features onto the stack so they can be 
> restored at the pop
It seems that the way `PragmaStack` is supposed to be used is that we're 
supposed to be using its `CurrentValue` instead of having a separate 
`CurFPFeatures`.  But mostly it looks like there's a lot of functionality 
associated with `PragmaStack` that we aren't using at all because this is a 
substantially simpler mode; we could really just be using a 
`SmallVector<FPOptions, 2>`.

Anyway, I guess this fix works, although it should be done in a separate patch.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79903/new/

https://reviews.llvm.org/D79903



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to