mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-06-10 10:29:36 +00:00
- Correct calculation of live ranges for exported and imported procedures parameters and return value, resulting in better ZP coalesce accuracy and ZP consumation compactness. (I really worked a lot on this ...)
- Working on the coalesce benchmark tests (comparing the compiles of the same procedures with library functions and without library functions). - Added documentation. - Completed issue #820 check list on gitlab, see the details there. Source code changes use the #820/ tags to document each change context.
This commit is contained in:
parent
30e58f54e3
commit
979ec83112
|
@ -49,13 +49,13 @@ public abstract class Pass4MemoryCoalesce extends Pass2Base {
|
|||
* @param program The program
|
||||
* @return True if the two equivalence classes can be coalesced into one without problems.
|
||||
*/
|
||||
static boolean canCoalesce(LiveRangeEquivalenceClass ec1, LiveRangeEquivalenceClass ec2, Collection<ScopeRef> threadHeads, Set<String> unknownFragments, Program program) {
|
||||
static boolean canCoalesce(LiveRangeEquivalenceClass ec1, LiveRangeEquivalenceClass ec2, Collection<ScopeRef> threadHeads, Set<String> unknownFragments, Program program, boolean disableUplift) {
|
||||
boolean resultCoalesceNotEqual = canCoalesceNotEqual(ec1, ec2);
|
||||
boolean resultCoalesceCompatible = canCoalesceCompatible(ec1, ec2, program);
|
||||
boolean resultCoalesceSegments = canCoalesceSegments(ec1, ec2, program);
|
||||
boolean resultCoalesceVolatile = canCoalesceVolatile(ec1, ec2, program);
|
||||
boolean resultCoalesceThreads = canCoalesceThreads(ec1, ec2, threadHeads, program);
|
||||
boolean resultCoalesceClobber = canCoalesceClobber(ec1, ec2, unknownFragments, program);
|
||||
boolean resultCoalesceCompatible = resultCoalesceNotEqual && canCoalesceCompatible(ec1, ec2, program);
|
||||
boolean resultCoalesceSegments = resultCoalesceCompatible && canCoalesceSegments(ec1, ec2, program);
|
||||
boolean resultCoalesceVolatile = resultCoalesceSegments && canCoalesceVolatile(ec1, ec2, program);
|
||||
boolean resultCoalesceThreads = resultCoalesceVolatile && canCoalesceThreads(ec1, ec2, threadHeads, program);
|
||||
boolean resultCoalesceClobber = resultCoalesceThreads && canCoalesceClobber(ec1, ec2, unknownFragments, program, disableUplift);
|
||||
return resultCoalesceNotEqual &&
|
||||
resultCoalesceCompatible &&
|
||||
resultCoalesceSegments &&
|
||||
|
|
Loading…
Reference in New Issue
Block a user