Summary: | [4.8/4.9 Regression] LRA aggravates var-tracking scalability problems | ||
---|---|---|---|
Product: | gcc | Reporter: | H.J. Lu <hjl.tools> |
Component: | rtl-optimization | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | jakub, vmakarov |
Priority: | P3 | Keywords: | compile-time-hog |
Version: | 4.8.0 | ||
Target Milestone: | 4.8.3 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2012-10-27 00:00:00 | |
Bug Depends on: | 54402 | ||
Bug Blocks: |
Description
H.J. Lu
2012-10-26 21:54:11 UTC
It isn't LRA that doesn't scale, it is var-tracking memory clobbering that needs improvements, but it would be nice to analyze what are the changes that LRA does compared to reload that make var-tracking to take that much longer and whether the generated code is better or worse. If it is better, this is just PR54402 dup. LRA reuses stack memory much better than reload (in all modes but especially in -O0). May be that is the reason of the var-tracking problem. The testcase is compiled with -O2, not -O0. (In reply to comment #2) > LRA reuses stack memory much better than reload (in all modes but especially > in -O0). May be that is the reason of the var-tracking problem. I forgot to say that LRA understands -fno-ira-share-spill-slots. In this case, each pseudo gets own stack slot. I thing it is worth to try it. -fno-ira-share-spill-slots doesn't make a difference. I believe on that testcase it was because without LRA the function didn't use a frame pointer, while with LRA for some reason it does. (In reply to comment #6) > I believe on that testcase it was because without LRA the function didn't use a > frame pointer, while with LRA for some reason it does. Can we make this bug a dup or is this now about IRA vs. LRA and the frame pointer issue? GCC 4.8.0 is being released, adjusting target milestone. GCC 4.8.1 has been released. GCC 4.8.2 has been released. *** This bug has been marked as a duplicate of bug 54402 *** |