================
@@ -2800,7 +2800,8 @@ fn -> other_fn -> other_fn ; fn is norecurse
     optimizations that require assumptions about the floating-point rounding
     mode or that might alter the state of floating-point status flags that
     might otherwise be set or cleared by calling this function. LLVM will
-    not introduce any new floating-point instructions that may trap.
+    not introduce any new floating-point instructions that may trap. All
+    function definitions that contain strictfp calls must be marked strictfp.
----------------
osa1 wrote:

I don't think this sentence makes sense, I suggest reverting it. If you mark a 
function, that calls a `strictfp` function, as `strictfp`, that makes 
`strictfp` transitive/contagious. I.e. you'd have to mark its callers, then its 
callers, ... and so on. That's not how function attributes work and it's also 
out-of-sync with the implementation (you can call a `strictfp` function from a 
non-`strictfp` function).

It's also inconsistent with the "Function Attributes" section which says that 
the attributes are not a part the function type. If you take the pointer to a 
`strictfp` function you get a pointer that doesn't indicate `strictfp`. 
Therefore you can't even implement the semantics in this last sentence even if 
you wanted to.

What was the motivation for this sentence? I.e. what case did you want to make 
clear? @artagnon 

https://github.com/llvm/llvm-project/pull/211769
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to