This is the next patch of D65593. This patch enables us to explore must-be-executed-context recursively.
Diff Detail
Event Timeline
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
1064 | What happens if there is a different terminator here? I mean do we handle them all correctly? |
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
1064 | Does "different terminator" mean like switch or other terminator? If you mean so, I think it can handle such cases. | |
llvm/test/Transforms/Attributor/dereferenceable-1.ll | ||
451 | I feel it is difficult to use assumed information in this deduction scheme. If we don't consider the cost, I think running Attributor twice will be bug free and effective solution because we can easily use assume information of 1st iteration as known information of 2nd iteration. |
This patch traverses the same context multiple times so the cost might get huge.
I'll create something like a cache.
llvm/lib/Transforms/IPO/Attributor.cpp | ||
---|---|---|
1064 | Yes, switch, ret, ..., need to be handled correctly | |
llvm/test/Transforms/Attributor/dereferenceable-1.ll | ||
451 |
I'm not sure I follow but re-running does generally not solve the problem. We need optimistic initialization to solve problems, e.g., the dereferenceable deduction in this test case. |
What happens if there is a different terminator here? I mean do we handle them all correctly?