diff options
author | Benjamin Maxwell <benjamin.maxwell@arm.com> | 2024-12-17 10:54:17 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-17 10:54:17 +0000 |
commit | a7dafea384a519342b2fbe210ed101c1e67f3be7 (patch) | |
tree | 95123b92f81c5cecd4fcdb30e7d9713731384947 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | f7988a338ddb53b03e7cb89d839616925bd0ade1 (diff) | |
download | llvm-a7dafea384a519342b2fbe210ed101c1e67f3be7.zip llvm-a7dafea384a519342b2fbe210ed101c1e67f3be7.tar.gz llvm-a7dafea384a519342b2fbe210ed101c1e67f3be7.tar.bz2 |
[SDAG] Allow folding stack slots into sincos/frexp in more cases (#118117)
This adds a new helper `canFoldStoreIntoLibCallOutputPointers()` to
check that it is safe to fold a store into a node that will expand to a
library call that takes output pointers. This requires checking for two
(independent) properties:
1. The store is not within a CALLSEQ_START..CALLSEQ_END pair
* If it is, the expansion would lead to nested call sequences (which is
invalid)
2. The node does not appear as a predecessor to the store
* If it does, attempting to merge the store into the call would result
in a cycle in the DAG
These two properties are checked as part of the same traversal in
`canFoldStoreIntoLibCallOutputPointers()`
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions