phase29ao(p39): release adopt pattern2 break subset
This commit is contained in:
@ -381,6 +381,17 @@ pub(crate) fn route_loop_pattern(
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
if let Some(core_plan) =
|
||||
composer::try_release_adopt_core_plan_for_pattern2_break_subset(
|
||||
builder,
|
||||
ctx,
|
||||
&domain_plan,
|
||||
&outcome,
|
||||
)?
|
||||
{
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
return lower_via_plan(builder, domain_plan, ctx);
|
||||
|
||||
@ -11,6 +11,7 @@ use crate::mir::builder::MirBuilder;
|
||||
|
||||
pub(in crate::mir::builder) use shadow_adopt::{
|
||||
try_release_adopt_core_plan_for_pattern1,
|
||||
try_release_adopt_core_plan_for_pattern2_break_subset,
|
||||
try_release_adopt_core_plan_for_pattern6_scan_with_init,
|
||||
try_release_adopt_core_plan_for_pattern7_split_scan,
|
||||
try_shadow_adopt_core_plan,
|
||||
|
||||
@ -104,6 +104,32 @@ pub(in crate::mir::builder) fn try_release_adopt_core_plan_for_pattern7_split_sc
|
||||
}
|
||||
}
|
||||
|
||||
pub(in crate::mir::builder) fn try_release_adopt_core_plan_for_pattern2_break_subset(
|
||||
builder: &mut MirBuilder,
|
||||
ctx: &LoopPatternContext,
|
||||
domain_plan: &DomainPlan,
|
||||
outcome: &PlanBuildOutcome,
|
||||
) -> Result<Option<CorePlan>, String> {
|
||||
if !matches!(domain_plan, DomainPlan::Pattern2Break(_)) {
|
||||
return Ok(None);
|
||||
}
|
||||
if !matches!(outcome.plan.as_ref(), Some(DomainPlan::Pattern2Break(_))) {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let Some(facts) = outcome.facts.as_ref() else {
|
||||
return Ok(None);
|
||||
};
|
||||
if facts.facts.pattern2_break.is_none() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
match compose_coreplan_for_pattern2_break_subset(builder, facts, ctx) {
|
||||
Ok(Some(core)) => Ok(Some(core)),
|
||||
Ok(None) | Err(_) => Ok(None),
|
||||
}
|
||||
}
|
||||
|
||||
pub(in crate::mir::builder) fn compose_coreplan_for_pattern2_break_subset(
|
||||
builder: &mut MirBuilder,
|
||||
facts: &CanonicalLoopFacts,
|
||||
|
||||
Reference in New Issue
Block a user