<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59414>59414</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] AbstractDenseAnalysis implicitly depends on DeadCodeAnalysis
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Technius
</td>
</tr>
</table>
<pre>
In my $dayjob, I wrote a toy analysis to learn how to use the dense dataflow analysis APIs, but was very confused why the `DataFlowSolver` was not initializing any of the lattice values for my toy analysis, even when all lattice values are set to top/overdefined.
```c++
mlir::func::FuncOp func; // some function
mlir::DataFlowSolver solver;
solver.load<MyDenseAnalysis>();
if (solver.initializeAndRun(func).failed()) {
llvm::dbgs() << "failed\n"; // assume this doesn't happen
}
for (mlir::Block &b : func.getCallableRegion()->getBlocks()) {
if (auto *state = solver.lookupState<MyLatticeValue>(&b)) {
b.printAsOperand(llvm::dbgs());
llvm::dbgs() << ": " << *solver.lookupState<MyLatticeValue>(&b) << "\n";
}
}
// nothing is printed!
```
The problem is that similar to #58922, AbstractDenseAnalysis seems to depend on DeadCodeAnalysis, but this is not documented anywhere: https://github.com/llvm/llvm-project/blob/279cc3384e4082aefbea4d1a3762f16547f7a799/mlir/lib/Analysis/DataFlow/DeadCodeAnalysis.cpp#L109
One workaround is to also load the `DeadCodeAnalysis`, as suggested in the linked issue.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUld9vozgQx_8a52W0iAyEHw95oMkiVdpVT93VvRs8gLfGRtgkyv31J5u0SXtd6VZCCbY845nPfGfg1speE-3Z7oHtjhu-uMHM-5_UDloudtMYcdk_ahgvwDAV_PLLNAwP8Ajn2TgCDs5cgGuuLlZacAYU8VnDYM5-sVgCNxAI0pZAcMc7Zc6389Vfj9a7axYHZ27hRPMFWqO7xZKA83AJ1iyLj9zxWpnzD6NONLMsDse1cSC1dJIr-Y_UPXB9AdMFI8Wdky3BiauFLHRm9kncR-svphNpOA-kgSv10YbPBJacT8SZiWFtTjQL6qQmEbH4yOLq-pvF69MyfPBP2AUAGJWcWVKxpOoW3a5v9aLbpwnWjQcAhjXDGqwZKWw6afRnHt4zALuiSF5vW9eRMlyw5PD9cvTMq9dck68MC4bl7TwAyA4YFlfDN5BUafG8aIZFCBHLqONSkbg6wBJYfucEQKnTuIYomt6ux4AlB5YcgCFerXcHzRB9xteEubXL6PUhLQhDVjPMHQx8muguf5YfbwtfRYbFjcmDMu0LMMwaYEkV8EU9uQNXijeKnqn3MENEX1jytScXLOxvc1mR8MUZYFhZxx0BS443uuZlmX747QD526qYv71gXhlnzX9cN9E0S-0q-zTRzLVH-Rm0j_X5H3B91gzxtlP9aaT3zt5qdB_DuwrcFtcqauMG33rSQsjR62T7oS3ue-XnQDDNplE0ehs3cAdWjlLxGQL0ZFeUiL45q8a6mbfunZLBEo1h0giaSAswGo7ExcGIm9qvIyVIS65zQph2GcnH56fEeaCZPLvBucl6viGbXrphaaLWjAzrQH79-zLN5he1jmHdKD8Ba8zLtk2SIqU0LpBT1xBPxZYneYbdNtuleZfzvCwZ1kGtWCvp7W4h1q_97F8_JBC108Qw-baNy3t2T5rgbOYXPptFC1gHLlfWgO_6t1n5kUYWeyDcgl36nqxHIPU6JKV-8StrF4o2Yp-IMin5hvbbLI93uyzJ8s2w77BtcNsVRYt5tk1E0XVtnjcZtmWSN02-kXuMEbcYl3GCWZxFIhNl2Yk07dqdEEXD0phGLlXkYUZm7jfhyv2uTLfpRvGGlA2fIERN5zWeoMfjZt6HAjRLb1kaK2mdvXlx0qnw7fr-7fGZ7Y6_kYwcJyVb6dTlKhr7mWo2y6z2f6yHEKsvZ8jl3wAAAP__85JEQQ">