User Details
- User Since
- Mar 8 2019, 5:25 AM (220 w, 6 d)
Jun 4 2022
Jun 1 2022
Feb 12 2022
It still fails some tests and I'm afraid it changed something since the review was almost three years ago.
I don't have enough time to work on so @xbolva00, could you take over this PR if you have urgent use cases?
Jan 31 2022
Rebased. I didn't realize this was not merged. Sorry everyone who waited for this.
Sep 19 2021
We could always make it an argument for the pass, e.g., when you create it you select the precision. Or, a command line option to get higher/lower precision. I think by default it should track all features and we can have subsets defined in a command line option if necessary. So if a user wants only 10 of the 40 features they add a selector into a command line enum and use it to skip features.
Add setters/getters and rename the class name.
Sep 13 2021
We could always make it an argument for the pass, e.g., when you create it you select the precision. Or, a command line option to get higher/lower precision. I think by default it should track all features and we can have subsets defined in a command line option if necessary. So if a user wants only 10 of the 40 features they add a selector into a command line enum and use it to skip features.
Creating an argument for the pass sounds good for me. IMHO, we don't need command option for the pass because I guess all use cases are from LLVM internal.
Sep 12 2021
And if you wish to add other features not listed here, please let me know.
@jdoerfert @mtrofin
Currently, I created a new pass because I'm not sure additional costs to calculates new features are affordable at MLInliner.
I'd like to put new features on FunctionPropertiesInfo if computational costs don't matter.
Jun 17 2021
Jan 26 2021
Basically it looks good to me.
However, it's not obvious to me that (known) willreturn can derive mustprogress.
(It seems correct to me though)
Oct 14 2020
Handle Global Value
Small fix
Oct 13 2020
LGTM
Oct 2 2020
Sorry, I quite forgot this patch...
@bollu Yes, that's fine. Thanks!
Aug 28 2020
Aug 27 2020
Aug 19 2020
Great, LGTM :)
Aug 16 2020
Why can't we take a union of assumed range?
Aug 13 2020
Hi, I want to use my TensorFlow model in LLVM with MLModelRunner, like ReleaseModeModelRunner.cpp but I have difficulty compiling the model, especially in the TensorFlow AOT complication of the model.
It would be really helpful if you point me out the code which defines the computation graph and the signature. Is such a script already landed or published somewhere?
Jul 21 2020
What happened to this patch?
Jul 15 2020
Jul 7 2020
Jul 6 2020
Either is fine but I think it is more natural to forbid an empty list.
Jun 28 2020
MaxPotentialValues is defined multiple times if you put the definition to the header.
You have to make it an external variable or declare in AttributorAttributes.cpp
Jun 26 2020
I think replacing all makes the code hard to understand (because "call base" is just a name of LLVM class)
Personally, I prefer maintaining "call site"
May 10 2020
Looks good to me.
Looks reasonable to me.
Apr 23 2020
LGTM
Mar 29 2020
LGTM
Mar 28 2020
Mar 27 2020
This makes sense to me.
Mar 26 2020
Why can't we use ABI info without known access?
I mean, is it possible to use ABI info in initialize?
Mar 25 2020
Good point. It is about:
Attribute::StructRet, Attribute::ByVal, Attribute::InAlloca, Attribute::InReg, Attribute::Returned, Attribute::SwiftSelf, Attribute::SwiftError, Attribute::Alignment
Seems reasonable but I'm not sure why we need to care about returned.
Mar 23 2020
LGTM but it is not fixing the typo rather refactoring :)
Mar 21 2020
Mar 20 2020
Mar 19 2020
LGTM
test?
Mar 18 2020
I think Stefan is correct. AnalysisGetter provides such functionality.
Mar 17 2020
Mar 16 2020
void use(int *); __attribute__((noinline)) static void f1(int * restrict p, int c1, int c2) { if (c1) { use(p); } if (!c2) { use(p); } } void f2(int * restrict p, int c) { f1(p, c, c); }
Could you add this example to test?
In this case, c1 and c2 are always same. Because of flow sensitivity, the first callsite is not reachable to the second callsite. So %p is noalias at both callsites. It can't be deduced with isPotentiallyReachable so please add FIXME tag.
Mar 15 2020
Please upload full context of the diff (diff -U999999)
Thank you for working on this! Please add isKnownReachable change.
Thank you for working on this!!
Mar 14 2020
LGTM
Mar 13 2020
You don't have to care about the failure if the failure doesn't occur multiple times.
Please see https://lists.llvm.org/pipermail/llvm-dev/2019-November/136710.html
LGTM
I think the title should be more descriptive, like "improve noalias preservation using reachability" or something.
LGTM
Mar 12 2020
Please guide on why nonull.ll shows additional noalias propagation. I see that the caller doesn't have noalias attribute but it has derived it.
It was caused by a bug that the dependence track was missing for NoAliasAA so I have pushed the fix. (https://github.com/llvm/llvm-project/commit/d9bf79f4e9952acca1fa353e39bcee89cd69550f)
This patch traverses the same context multiple times so the cost might get huge.
I'll create something like a cache.
Mar 11 2020
I have misunderstood how CaptureTracker works. AANoCapture already has this functionality :) So I'd close it.
But I have thought some of FIXME in the test seems wrong.
Mar 10 2020
I have missed to check the dereferenceability of the pointer. I'll fix it later.
So now the tests are broken.
Mar 9 2020
Please use code block.
Mar 8 2020
Mar 7 2020
I have not convinced myself that this covers the recursive case properly, maybe that was never the intend though. Can we have a test like this:
Fix comment and add test.
Mar 6 2020
Mar 4 2020
As I see the discussion in the forum, it seems best to create a basic block for each case. I'll implement so.
Mar 2 2020
Ok, that seems fine.
Mar 1 2020
Feb 27 2020
Simplify implementation.
Feb 26 2020
Could you make sure that you are using a new pass manager? (It means to use ./opt -passes=attributor .. but not ./opt -attributor ..)
If you are using an old pass manager, you might not get LoopInfo or other analysis.
Address comments
Feb 25 2020
Rebased. I simply use AbstractState to accumulate the known information.