jdoerfert added a comment.

> I'm still not seeing the issue fully. My understanding of the situation 
> (which may be wrong) is that Clang lowers to LLVM IR and adds noundef 
> markings at call sites that this patch attempts to let the user then undo. 
> However, why can Clang's CodeGen not notice the special builtin and walk up 
> the call chain to mark all the wrapper functions to ensure everything is 
> marked appropriately? There might be a small perf loss (if there are wrappers 
> around wrappers around wrappers kind of situation), but this means we don't 
> have to expose this problem to users.

I think you are right, we could identify shuffles and go up the call chain in 
clang (codegen) if we wanted.

> I still think that a solution which doesn't require the user to make such 
> dangerous decisions on their own is a better design if we can accomplish it.

This is a valid opinion but I don't see how this matches what we do (or has 
been done) in the past. I mean, there are plenty of command line options and 
attributes that do exactly this, let the user "define", or better "refine", 
semantics.
The entire "initialize with 0" stuff comes to mind, making new things UB with 
-ffast-math and friends, overloadable, etc.

---

All that said, I'm generally more in favor of explicit annotations in the 
source than implicit compiler magic to implement a special case.
Others should chime in.


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

https://reviews.llvm.org/D130224

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

Reply via email to