|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init |
|
| #
ff8b1b1b |
| 09-Jul-2021 |
Nikita Popov <[email protected]> |
Reapply [IR] Don't mark mustprogress as type attribute
Reapply with fixes for clang tests.
-----
This is a simple enum attribute. Test changes are because enum attributes are sorted before type at
Reapply [IR] Don't mark mustprogress as type attribute
Reapply with fixes for clang tests.
-----
This is a simple enum attribute. Test changes are because enum attributes are sorted before type attributes, so mustprogress is now in a different position.
show more ...
|
| #
23dd7502 |
| 09-Jul-2021 |
Nikita Popov <[email protected]> |
Revert "[IR] Don't mark mustprogress as type attribute"
This reverts commit 84ed3a794b4ffe7bd673f1e5a17d507aa3113d12.
A number of clang tests are also affected by this change. Revert until I can up
Revert "[IR] Don't mark mustprogress as type attribute"
This reverts commit 84ed3a794b4ffe7bd673f1e5a17d507aa3113d12.
A number of clang tests are also affected by this change. Revert until I can update them.
show more ...
|
| #
84ed3a79 |
| 09-Jul-2021 |
Nikita Popov <[email protected]> |
[IR] Don't mark mustprogress as type attribute
This is a simple enum attribute.
Test changes are because enum attributes are sorted before type attributes.
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
62cdcd6c |
| 21-Apr-2021 |
sstefan1 <[email protected]> |
[FuncAttrs] Don't infer willreturn for nonexact definitions
Discovered during attributor testing comparing stats with and without the attributor. Willreturn should not be inferred for nonexact defin
[FuncAttrs] Don't infer willreturn for nonexact definitions
Discovered during attributor testing comparing stats with and without the attributor. Willreturn should not be inferred for nonexact definitions.
Differential Revision: https://reviews.llvm.org/D100988
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2 |
|
| #
65fd034b |
| 13-Jan-2021 |
Nikita Popov <[email protected]> |
[FunctionAttrs] Infer willreturn for functions without loops
If a function doesn't contain loops and does not call non-willreturn functions, then it is willreturn. Loops are detected by checking for
[FunctionAttrs] Infer willreturn for functions without loops
If a function doesn't contain loops and does not call non-willreturn functions, then it is willreturn. Loops are detected by checking for backedges in the function. We don't attempt to handle finite loops at this point.
Differential Revision: https://reviews.llvm.org/D94633
show more ...
|
| #
f711cb9a |
| 13-Jan-2021 |
Nikita Popov <[email protected]> |
[FuncAttrs] Add additional willreturn tests (NFC)
|
| #
6cd44b20 |
| 12-Jan-2021 |
Florian Hahn <[email protected]> |
[FunctionAttrs] Derive willreturn for fns with readonly` & `mustprogress`.
Similar to D94125, derive `willreturn` for functions that are `readonly` and `mustprogress` in FunctionAttrs.
To quote the
[FunctionAttrs] Derive willreturn for fns with readonly` & `mustprogress`.
Similar to D94125, derive `willreturn` for functions that are `readonly` and `mustprogress` in FunctionAttrs.
To quote the reasoning from D94125:
Since D86233 we have `mustprogress` which, in combination with `readonly`, implies `willreturn`. The idea is that every side-effect has to be modeled as a "write". Consequently, `readonly` means there is no side-effect, and `mustprogress` guarantees that we cannot "loop" forever without side-effect.
Reviewed By: jdoerfert, nikic
Differential Revision: https://reviews.llvm.org/D94502
show more ...
|
|
Revision tags: llvmorg-11.1.0-rc1 |
|
| #
08d4a504 |
| 11-Jan-2021 |
Florian Hahn <[email protected]> |
[FunctionAttrs] Precommit tests for willreturn inference.
Tests for D94502.
|
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
f35740d6 |
| 02-Nov-2019 |
Stefan Stipanovic <[email protected]> |
NoFree argument attribute.
Summary: Deducing nofree atrribute for function arguments.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews
NoFree argument attribute.
Summary: Deducing nofree atrribute for function arguments.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67886
show more ...
|
| #
5fb17829 |
| 02-Nov-2019 |
Stefan Stipanovic <[email protected]> |
Revert "NoFree argument attribute."
This reverts commit c12efa2ed0547f7f9f8fba0ad7a76a4cb08bf53a.
|
| #
c12efa2e |
| 02-Nov-2019 |
Stefan Stipanovic <[email protected]> |
NoFree argument attribute.
Summary: Deducing nofree atrribute for function arguments.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews
NoFree argument attribute.
Summary: Deducing nofree atrribute for function arguments.
Reviewers: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67886
show more ...
|
| #
c36e2ebf |
| 01-Nov-2019 |
Johannes Doerfert <[email protected]> |
[Attributor][NFCI] Avoid unnecessary work except for testing
Trying to deduce information for declarations and calls sites of declarations is not useful in practice but only for testing. Add a flag
[Attributor][NFCI] Avoid unnecessary work except for testing
Trying to deduce information for declarations and calls sites of declarations is not useful in practice but only for testing. Add a flag that disables this by default but also enable it in the tests.
The misc.ll test will verify the flag "works" as expected.
show more ...
|
| #
1097fab1 |
| 07-Oct-2019 |
Johannes Doerfert <[email protected]> |
[Attributor] Deduce memory behavior of functions and arguments
Deduce the memory behavior, aka "read-none", "read-only", or "write-only", for functions and arguments.
Reviewers: sstefan1, uenoku
S
[Attributor] Deduce memory behavior of functions and arguments
Deduce the memory behavior, aka "read-none", "read-only", or "write-only", for functions and arguments.
Reviewers: sstefan1, uenoku
Subscribers: hiraditya, bollu, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67384
llvm-svn: 373965
show more ...
|
| #
63f6066b |
| 21-Sep-2019 |
Hideto Ueno <[email protected]> |
[Attributor] Implement "norecurse" function attribute deduction
Summary: This patch introduces `norecurse` function attribute deduction.
`norecurse` will be deduced if the following conditions hold
[Attributor] Implement "norecurse" function attribute deduction
Summary: This patch introduces `norecurse` function attribute deduction.
`norecurse` will be deduced if the following conditions hold: * The size of SCC in which the function belongs equals to 1. * The function doesn't have self-recursion. * We have `norecurse` for all call site.
To avoid a large change, SCC is calculated using scc_iterator in InfoCache initialization for now.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67751
llvm-svn: 372475
show more ...
|
|
Revision tags: llvmorg-9.0.0 |
|
| #
3ab9e8b8 |
| 17-Sep-2019 |
Johannes Doerfert <[email protected]> |
[Attributor][Fix] Initialize the cache prior to using it
Summary: There were segfaults as we modified and iterated the instruction maps in the cache at the same time. This was happening because we c
[Attributor][Fix] Initialize the cache prior to using it
Summary: There were segfaults as we modified and iterated the instruction maps in the cache at the same time. This was happening because we created new instructions while we populated the cache. This fix changes the order in which we perform these actions. First, the caches for the whole module are created, then we start to create abstract attributes.
I don't have a unit test but the LLVM test suite exposes this problem.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67232
llvm-svn: 372105
show more ...
|
|
Revision tags: llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4 |
|
| #
97fd582b |
| 04-Sep-2019 |
Johannes Doerfert <[email protected]> |
[Attributor] Use the white list for attributes consistently
Summary: We create attributes on-demand so we need to check the white list on-demand. This also unifies the location at which we create, i
[Attributor] Use the white list for attributes consistently
Summary: We create attributes on-demand so we need to check the white list on-demand. This also unifies the location at which we create, initialize, and eventually invalidate new abstract attributes.
The tests show mixed results, a few more call site attributes are determined which can cause more iterations.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66913
llvm-svn: 370922
show more ...
|
|
Revision tags: llvmorg-9.0.0-rc3 |
|
| #
b504eb8b |
| 26-Aug-2019 |
Johannes Doerfert <[email protected]> |
[Attributor] Adjust and test the iteration bound of tests
Summary: Try to verify how many iterations we need for a fixpoint in our tests. This patch adjust the way we count to make it easier to foll
[Attributor] Adjust and test the iteration bound of tests
Summary: Try to verify how many iterations we need for a fixpoint in our tests. This patch adjust the way we count to make it easier to follow. It also adjusts the bounds to actually account for a fixpoint and not only the minimum number to pass all checks.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66757
llvm-svn: 369945
show more ...
|
| #
a41b2390 |
| 21-Aug-2019 |
Johannes Doerfert <[email protected]> |
[Attributor][NFCI] Introduce tight iteration bounds in the tests
Summary: To be able to track how many iterations we need to manifest all information we check for we now make the maximum iteration c
[Attributor][NFCI] Introduce tight iteration bounds in the tests
Summary: To be able to track how many iterations we need to manifest all information we check for we now make the maximum iteration count explicit. The count is set tightly now and should be kept that way.
Reviewers: uenoku, sstefan1
Subscribers: bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66554
llvm-svn: 369586
show more ...
|
|
Revision tags: llvmorg-9.0.0-rc2 |
|
| #
e83f3039 |
| 05-Aug-2019 |
Johannes Doerfert <[email protected]> |
[Attributor] Deduce the "no-return" attribute for functions
A function is "no-return" if we never reach a return instruction, either because there are none or the ones that exist are dead.
Test hav
[Attributor] Deduce the "no-return" attribute for functions
A function is "no-return" if we never reach a return instruction, either because there are none or the ones that exist are dead.
Test have been adjusted: - either noreturn was added, or - noreturn was avoided by modifying the code.
The new noreturn_{sync,async} test make sure we do handle invoke instructions with a noreturn (and potentially nowunwind) callee correctly, even in the presence of potential asynchronous exceptions.
llvm-svn: 367948
show more ...
|
| #
a009a60a |
| 03-Aug-2019 |
Tim Northover <[email protected]> |
IR: print value numbers for unnamed function arguments
For consistency with normal instructions and clarity when reading IR, it's best to print the %0, %1, ... names of function arguments in definit
IR: print value numbers for unnamed function arguments
For consistency with normal instructions and clarity when reading IR, it's best to print the %0, %1, ... names of function arguments in definitions.
Also modifies the parser to accept IR in that form for obvious reasons.
llvm-svn: 367755
show more ...
|
| #
d021617b |
| 02-Aug-2019 |
Stefan Stipanovic <[email protected]> |
[Attributor] Using liveness in other attributes.
Modifying other AbstractAttributes to use Liveness AA and skip dead instructions.
Reviewers: jdoerfert, uenoku
Subscribers: hiraditya, llvm-commits
[Attributor] Using liveness in other attributes.
Modifying other AbstractAttributes to use Liveness AA and skip dead instructions.
Reviewers: jdoerfert, uenoku
Subscribers: hiraditya, llvm-commits
Differential revision: https://reviews.llvm.org/D65243
llvm-svn: 367725
show more ...
|
|
Revision tags: llvmorg-9.0.0-rc1, llvmorg-10-init |
|
| #
11d3710c |
| 17-Jul-2019 |
Hideto Ueno <[email protected]> |
[Attributor] Deduce "willreturn" function attribute
Summary: Deduce the "willreturn" attribute for functions.
For now, intrinsics are not willreturn. More annotation will be done in another patch.
[Attributor] Deduce "willreturn" function attribute
Summary: Deduce the "willreturn" attribute for functions.
For now, intrinsics are not willreturn. More annotation will be done in another patch.
Reviewers: jdoerfert
Subscribers: jvesely, nhaehnle, nicholas, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63046
llvm-svn: 366335
show more ...
|
| #
81b7b2b5 |
| 12-Jul-2019 |
Hideto Ueno <[email protected]> |
Test commit
llvm-svn: 365912
|
|
Revision tags: llvmorg-8.0.1, llvmorg-8.0.1-rc4 |
|
| #
3b77583e |
| 27-Jun-2019 |
Johannes Doerfert <[email protected]> |
[Attr] Add "willreturn" function attribute
This patch introduces a new function attribute, willreturn, to indicate that a call of this function will either exhibit undefined behavior or comes back a
[Attr] Add "willreturn" function attribute
This patch introduces a new function attribute, willreturn, to indicate that a call of this function will either exhibit undefined behavior or comes back and continues execution at a point in the existing call stack that includes the current invocation.
This attribute guarantees that the function does not have any endless loops, endless recursion, or terminating functions like abort or exit.
Patch by Hideto Ueno (@uenoku)
Reviewers: jdoerfert
Subscribers: mehdi_amini, hiraditya, steven_wu, dexonsmith, lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62801
llvm-svn: 364555
show more ...
|