rjmccall wrote:

> Oh, sorry for not providing context earlier. The reasoning behind is to allow 
> certain optimizations involving errno-writing libcalls (marked as 
> `memory(errnomem: write)`) to occur, if we are able to prove the involved 
> memory location does not alias errno (e.g., because we are accessing a 
> float-typed pointer). IIUC, in standard C, errno is an int, so all legitimate 
> accesses must use int-compatible types (or otherwise violating strict 
> aliasing). Hence, we should be able to leverage TBAA and prove not aliasing 
> with errno, if we do not alias for any nodes belonging to `!llvm.errno.tbaa` 
> (which is presumably gathering all int-based nodes; this should require 
> confirmation).

I see. So the idea here is *not* that we're changing the TBAA nodes used for 
any actual accesses. Instead, we're using a named global metadata to specify 
the TBAA node that all `errno` accesses would use so that LLVM can do alias 
analysis around these libcalls (presumably to allow load/store optimization 
across them). That makes a lot of sense, thanks for the clarification. Please 
update your commit messages and PR title and description; I think if you 
re-read them, you're see that they sound as if you're trying to change how 
accesses to `errno` are annotated. In the meantime, I think I have the context 
to review the PR now.

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

Reply via email to