mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-12 20:34:19 +00:00
Fix two bugs in RBMM.
Estimated hours taken: 0.1
Branch: main
Fix two bugs in RBMM.
compiler/rbmm.region_instruction.m:
Add remove instructions for regions reachable from void variables.
runtime/mercury_region.h:
Add a missing variable declaration.
This commit is contained in:
@@ -289,6 +289,9 @@ introduce_region_instructions_exec_path([ProgPoint - Goal | ProgPoint_Goals],
|
|||||||
set.fold(record_instruction_after_prog_point(remove_region_instr,
|
set.fold(record_instruction_after_prog_point(remove_region_instr,
|
||||||
ProgPoint, CallerGraph),
|
ProgPoint, CallerGraph),
|
||||||
RemovedAfterProgPoint, !RegionInstructionProc),
|
RemovedAfterProgPoint, !RegionInstructionProc),
|
||||||
|
set.fold(record_instruction_after_prog_point(remove_region_instr,
|
||||||
|
ProgPoint, CallerGraph),
|
||||||
|
DeadVoidVarRegions, !RegionInstructionProc),
|
||||||
|
|
||||||
svmap.set(ProgPoint, set.union(BecomeDead, DeadVoidVarRegions),
|
svmap.set(ProgPoint, set.union(BecomeDead, DeadVoidVarRegions),
|
||||||
!BecomeDeadAfterProc),
|
!BecomeDeadAfterProc),
|
||||||
|
|||||||
@@ -547,6 +547,7 @@ extern int MR_region_is_disj_protected(MR_RegionHeader *region);
|
|||||||
do { \
|
do { \
|
||||||
MR_RegionHeader *region; \
|
MR_RegionHeader *region; \
|
||||||
MR_RegionSemiDisjProtect *semi_disj_prot; \
|
MR_RegionSemiDisjProtect *semi_disj_prot; \
|
||||||
|
int incr; \
|
||||||
\
|
\
|
||||||
semi_disj_prot = \
|
semi_disj_prot = \
|
||||||
(MR_RegionSemiDisjProtect *) (protection_block); \
|
(MR_RegionSemiDisjProtect *) (protection_block); \
|
||||||
|
|||||||
Reference in New Issue
Block a user