llvm-project/llvm/test/Transforms/FunctionAttrs
Hideto Ueno 63f6066b53 [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
2019-09-21 15:13:19 +00:00
..
2008-09-03-Mutual.ll
2008-09-03-ReadNone.ll
2008-09-03-ReadOnly.ll
2008-09-13-VolatileRead.ll
2008-12-29-Constant.ll
2009-01-02-LocalStores.ll
2010-10-30-volatile.ll
align.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
arg_nocapture.ll [Attributor] Use the white list for attributes consistently 2019-09-04 16:26:20 +00:00
arg_returned.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
assume.ll
atomic.ll Add, and infer, a nofree function attribute 2019-07-08 15:57:56 +00:00
comdat-ipo.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
convergent.ll
dereferenceable.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
fn_noreturn.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
heap_to_stack.ll [Attributor] Heap-To-Stack Conversion 2019-09-15 21:47:41 +00:00
incompatible_fn_attrs.ll
int_sideeffect.ll
internal-noalias.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
liveness.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
misc.ll [Attributor] Fix: Gracefully handle non-instruction users 2019-08-21 21:48:56 +00:00
naked_functions.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
new_attributes.ll [Attributor] FIX: Treat new attributes as changed ones 2019-08-23 15:24:57 +00:00
noalias_returned.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
nocapture.ll [Attributor] Deduce "no-capture" argument attribute 2019-09-03 20:37:24 +00:00
nofree-attributor.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
nofree.ll Add, and infer, a nofree function attribute 2019-07-08 15:57:56 +00:00
nonnull-global.ll
nonnull.ll [Attributor] Use the white list for attributes consistently 2019-09-04 16:26:20 +00:00
norecurse.ll [Attributor] Implement "norecurse" function attribute deduction 2019-09-21 15:13:19 +00:00
noreturn_async.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
noreturn_sync.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
nosync.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
nounwind.ll [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
operand-bundles-scc.ll Add, and infer, a nofree function attribute 2019-07-08 15:57:56 +00:00
optnone-simple.ll
optnone.ll
out-of-bounds-iterator-bug.ll
read-write-scc.ll [FunctionAttrs] Remove readonly and writeonly assertion 2019-07-15 17:31:26 +00:00
read_write_returned_arguments_scc.ll [Attributor] Look at internal functions only on-demand 2019-09-04 16:35:20 +00:00
readattrs.ll [NFC][FnAttrs] Stress tests for attribute deduction 2019-06-05 03:00:06 +00:00
readnone.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
returned.ll
value-simplify.ll [Attributor] ValueSimplify Abstract Attribute 2019-09-07 07:03:05 +00:00
willreturn.ll [Attributor] Implement "norecurse" function attribute deduction 2019-09-21 15:13:19 +00:00
writeonly.ll LLVM: Optimization Pass: Remove conflicting attribute, if any, before 2019-09-11 14:26:22 +00:00