mibintc marked 9 inline comments as done.
mibintc added a comment.

I added inline comments describing what I did in this version of the patch to 
address the bug https://bugs.llvm.org/show_bug.cgi?id=44048



================
Comment at: clang/include/clang/AST/DeclBase.h:1539
+    /// Indicates if the function uses Floating Point Constrained Intrinsics
+    uint64_t UsesFPIntrin : 1;
   };
----------------
This corresponds to "strictfp" LLVM attribute. I add this here because I want 
to collect the information during Sema and set the attribute during CodeGen. 
The next thing I want to do is to add support for modifying float_control via 
pragma within function bodies (enable floating point control at the block 
level).  If I wasn't preparing to support floating_control via statement-level 
pragma then setting the bit could be accomplished entirely within CodeGen.


================
Comment at: clang/include/clang/AST/DeclBase.h:1560
     /// NumFunctionDeclBitfields or CXXConstructorDeclBitfields.
-    uint64_t NumCtorInitializers : 23;
+    uint64_t NumCtorInitializers : 22;
     uint64_t IsInheritingConstructor : 1;
----------------
Need to adjust the number of bits here, because it's at the threshold of 
overrunning 64 bits.


================
Comment at: clang/include/clang/Basic/DiagnosticDriverKinds.td:444
 
+def warn_drv_experimental_fp_control_incomplete_opt : Warning<
+  "Support for floating point control option %0 is incomplete and 
experimental">,
----------------
@kpn thought it would be a good idea to add a Warning that the implementation 
of float control is experimental and partially implemented.  That's what this 
is for.


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:2345
+            << "-ffp-contract=fast";
+        optID = options::OPT_ffp_contract;
+        FPModel = Val;
----------------
michele.scandale wrote:
> Here the state of the floating point options seems unchanged except for 
> `FPContract`. If I run `clang -ffp-model=fast -ffp-model=precise`, I would 
> expect the state of the floating point options to match the one of 
> `-fno-fast-math` except for `FPContract` which you want to be set to "fast".
> 
> I think you might need to replicate the reset for all the option here as 
> well, so at this point I don't know how much worth is to use the optID reset 
> trick for the "fast" case only.
@michele.scandale Thanks for your helpful review, I think I fixed the things 
that you remarked on. I also added a test case for the assertion fail that you 
saw.


================
Comment at: clang/test/CodeGen/fpconstrained.cpp:10
+
+  template <class>
+  class aaaa {
----------------
This is the test case from the bug report (null deref/segfault/in IRBuilder)


================
Comment at: llvm/include/llvm/IR/IRBuilder.h:268
       I->addAttribute(AttributeList::FunctionIndex, Attribute::StrictFP);
-    setConstrainedFPFunctionAttr();
   }
----------------
@kpn I got rid of this line because the function attribute is being set in 
CodeGen


================
Comment at: llvm/unittests/IR/IRBuilderTest.cpp:186
   Builder.setIsFPConstrained(true);
+  auto Parent = BB->getParent();
+  Parent->addFnAttr(Attribute::StrictFP);
----------------
@kpn I changed the test to create the function attribute a priori since it will 
be set in CodeGen before passing to IRBuilder


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D62731



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

Reply via email to