[all-commits] [llvm/llvm-project] 191fa4: [Attributor][NFC] Make debug output more useful an...
Johannes Doerfert via All-commits
all-commits at lists.llvm.org
Mon Jan 31 23:26:47 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 191fa419a64ea7bac4c100e5a71836c9f43084cd
https://github.com/llvm/llvm-project/commit/191fa419a64ea7bac4c100e5a71836c9f43084cd
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/lib/Transforms/IPO/Attributor.cpp
Log Message:
-----------
[Attributor][NFC] Make debug output more useful and concise
Commit: e140d5131928ee63df80667dc1acc12715043c16
https://github.com/llvm/llvm-project/commit/e140d5131928ee63df80667dc1acc12715043c16
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/include/llvm/Transforms/IPO/Attributor.h
M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
M llvm/test/Transforms/Attributor/ArgumentPromotion/X86/attributes.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/X86/min-legal-vector-width.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/attrs.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/byval-2.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/byval.ll
M llvm/test/Transforms/Attributor/IPConstantProp/2009-09-24-byval-ptr.ll
M llvm/test/Transforms/Attributor/heap_to_stack.ll
M llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll
M llvm/test/Transforms/Attributor/misc.ll
M llvm/test/Transforms/Attributor/noalias.ll
M llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
Log Message:
-----------
[Attributor] Use CFG reasoning to filter potentially interfering writes
Since D104432 we can look through memory by analyzing all writes that
might interfere with a load. This patch provides some logic to exclude
writes that cannot interfere with a location, due to CFG reasoning.
We make sure to avoid multi-thread write-read situations properly while
we ignore writes that cannot reach a load or writes that will be
overwritten before the load is reached.
Differential Revision: https://reviews.llvm.org/D106397
Commit: adf0d57f1561d2ccfa42f64eabe1fc8a9be51c7b
https://github.com/llvm/llvm-project/commit/adf0d57f1561d2ccfa42f64eabe1fc8a9be51c7b
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/include/llvm/Transforms/IPO/Attributor.h
M llvm/lib/Transforms/IPO/Attributor.cpp
M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
M llvm/test/Transforms/Attributor/ArgumentPromotion/fp80.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead_2.ll
M llvm/test/Transforms/Attributor/IPConstantProp/2009-09-24-byval-ptr.ll
M llvm/test/Transforms/Attributor/depgraph.ll
M llvm/test/Transforms/Attributor/nocapture-1.ll
M llvm/test/Transforms/Attributor/nodelete.ll
M llvm/test/Transforms/Attributor/norecurse.ll
M llvm/test/Transforms/Attributor/read_write_returned_arguments_scc.ll
M llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
Log Message:
-----------
[Attributor] Provide convenient helpers for isAssumedRead{None,Only}
We have two attributes that can answer readnone queries. While there is
a dependence between them, it seems best to not force the users to know
what AA to ask. The helpers also allow to check for readonly nicely.
Test changes show where we now deduce readnone but haven't before,
mostly because we only asked AAMemoryBehavior and not AAMemoryLocation.
AANoAlias has not been ported to the new API yet.
Commit: cfabffb0349fe54419a5960473b9c08e145c5244
https://github.com/llvm/llvm-project/commit/cfabffb0349fe54419a5960473b9c08e145c5244
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
Log Message:
-----------
[Attributor][NFCI] Improve debug diagnostic
Commit: 53b6753bdde30e980f9482d2ec08221b70b9f88b
https://github.com/llvm/llvm-project/commit/53b6753bdde30e980f9482d2ec08221b70b9f88b
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
Log Message:
-----------
[Attributor][FIX] Address two oversights in AAIsDead
No tests as these were found browsing the code and I'm not sure how to
test them properly.
Commit: 0f471710f8367be178cd6582bba59eb2d9833c0b
https://github.com/llvm/llvm-project/commit/0f471710f8367be178cd6582bba59eb2d9833c0b
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
M llvm/test/Transforms/Attributor/liveness.ll
M llvm/test/Transforms/Attributor/nonnull.ll
M llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
Log Message:
-----------
[Attributor] Use edge liveness rather than block liveness
We moved to the edge API a while back, not all uses were adjusted.
Edge liveness is more precise.
Commit: a1db0e523d5a53f63b9907795eecd54d331a1b1c
https://github.com/llvm/llvm-project/commit/a1db0e523d5a53f63b9907795eecd54d331a1b1c
Author: Johannes Doerfert <johannes at jdoerfert.de>
Date: 2022-02-01 (Tue, 01 Feb 2022)
Changed paths:
M llvm/include/llvm/Transforms/IPO/Attributor.h
M llvm/lib/Transforms/IPO/Attributor.cpp
M llvm/test/Transforms/Attributor/ArgumentPromotion/2008-02-01-ReturnAttrs.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/X86/attributes.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/X86/min-legal-vector-width.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/alignment.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/array.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/attrs.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/basictest.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/byval-2.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/byval.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/control-flow2.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/crash.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/dbg.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/fp80.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/inalloca.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/live_called_from_dead_2.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/nonzero-address-spaces.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/pr32917.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/profile.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/reserve-tbaa.ll
M llvm/test/Transforms/Attributor/ArgumentPromotion/sret.ll
M llvm/test/Transforms/Attributor/IPConstantProp/2009-09-24-byval-ptr.ll
M llvm/test/Transforms/Attributor/IPConstantProp/PR16052.ll
M llvm/test/Transforms/Attributor/IPConstantProp/global.ll
M llvm/test/Transforms/Attributor/IPConstantProp/multiple_callbacks.ll
M llvm/test/Transforms/Attributor/IPConstantProp/openmp_parallel_for.ll
M llvm/test/Transforms/Attributor/IPConstantProp/recursion.ll
M llvm/test/Transforms/Attributor/IPConstantProp/return-argument.ll
M llvm/test/Transforms/Attributor/IPConstantProp/return-constants.ll
M llvm/test/Transforms/Attributor/align.ll
M llvm/test/Transforms/Attributor/assumes_info.ll
M llvm/test/Transforms/Attributor/cgscc_bugs.ll
M llvm/test/Transforms/Attributor/depgraph.ll
M llvm/test/Transforms/Attributor/heap_to_stack.ll
M llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll
M llvm/test/Transforms/Attributor/internal-noalias.ll
M llvm/test/Transforms/Attributor/internalize.ll
M llvm/test/Transforms/Attributor/liveness.ll
M llvm/test/Transforms/Attributor/memory_locations.ll
M llvm/test/Transforms/Attributor/misc.ll
M llvm/test/Transforms/Attributor/noalias.ll
M llvm/test/Transforms/Attributor/nocapture-1.ll
M llvm/test/Transforms/Attributor/nocapture-2.ll
M llvm/test/Transforms/Attributor/nodelete.ll
M llvm/test/Transforms/Attributor/nofree.ll
M llvm/test/Transforms/Attributor/nonnull.ll
M llvm/test/Transforms/Attributor/norecurse.ll
M llvm/test/Transforms/Attributor/noreturn.ll
M llvm/test/Transforms/Attributor/noreturn_async.ll
M llvm/test/Transforms/Attributor/noreturn_sync.ll
M llvm/test/Transforms/Attributor/nosync.ll
M llvm/test/Transforms/Attributor/nounwind.ll
M llvm/test/Transforms/Attributor/openmp_parallel.ll
M llvm/test/Transforms/Attributor/range.ll
M llvm/test/Transforms/Attributor/read_write_returned_arguments_scc.ll
M llvm/test/Transforms/Attributor/returned.ll
M llvm/test/Transforms/Attributor/undefined_behavior.ll
M llvm/test/Transforms/Attributor/willreturn.ll
M llvm/test/Transforms/OpenMP/custom_state_machines.ll
M llvm/test/Transforms/OpenMP/replace_globalization.ll
M llvm/test/Transforms/OpenMP/spmdization.ll
M llvm/test/Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll
Log Message:
-----------
[Attributor][FIX] Liveness handling in the isAssumedDead helpers
This fixes a conceptual problem with our AAIsDead usage which conflated
call site liveness with call site return value liveness. Without the
fix tests would obviously miscompile as we make genericValueTraversal
more powerful (in a follow up). The effects on the tests are mixed but
mostly marginal. The most prominent one is the lack of `noreturn` for
functions. The reason is that we make entire blocks live at the same
time (for time reasons). Now that we actually look at the block
liveness, which we need to do, the return instructions are live and
will survive. As an example, `noreturn_async.ll` has been modified
to retain the `noreturn` even with block granularity. We could address
this easily but there is little need in practice.
Compare: https://github.com/llvm/llvm-project/compare/7b9844cc8dd0...a1db0e523d5a
More information about the All-commits
mailing list