@@ -61,6 +61,7 @@ pub enum Requirement {
6161 FixedReg ( PReg ) ,
6262 FixedStack ( PReg ) ,
6363 Register ,
64+ Stack ,
6465 Any ,
6566}
6667impl Requirement {
@@ -69,10 +70,15 @@ impl Requirement {
6970 match ( self , other) {
7071 ( other, Requirement :: Any ) | ( Requirement :: Any , other) => Ok ( other) ,
7172 ( Requirement :: Register , Requirement :: Register ) => Ok ( self ) ,
73+ ( Requirement :: Stack , Requirement :: Stack ) => Ok ( self ) ,
7274 ( Requirement :: Register , Requirement :: FixedReg ( preg) )
7375 | ( Requirement :: FixedReg ( preg) , Requirement :: Register ) => {
7476 Ok ( Requirement :: FixedReg ( preg) )
7577 }
78+ ( Requirement :: Stack , Requirement :: FixedStack ( preg) )
79+ | ( Requirement :: FixedStack ( preg) , Requirement :: Stack ) => {
80+ Ok ( Requirement :: FixedStack ( preg) )
81+ }
7682 ( Requirement :: FixedReg ( a) , Requirement :: FixedReg ( b) ) if a == b => Ok ( self ) ,
7783 ( Requirement :: FixedStack ( a) , Requirement :: FixedStack ( b) ) if a == b => Ok ( self ) ,
7884 _ => Err ( RequirementConflict ) ,
@@ -82,7 +88,7 @@ impl Requirement {
8288 #[ inline( always) ]
8389 pub fn is_stack ( self ) -> bool {
8490 match self {
85- Requirement :: FixedStack ( ..) => true ,
91+ Requirement :: Stack | Requirement :: FixedStack ( ..) => true ,
8692 Requirement :: Register | Requirement :: FixedReg ( ..) => false ,
8793 Requirement :: Any => false ,
8894 }
@@ -92,7 +98,7 @@ impl Requirement {
9298 pub fn is_reg ( self ) -> bool {
9399 match self {
94100 Requirement :: Register | Requirement :: FixedReg ( ..) => true ,
95- Requirement :: FixedStack ( ..) => false ,
101+ Requirement :: Stack | Requirement :: FixedStack ( ..) => false ,
96102 Requirement :: Any => false ,
97103 }
98104 }
@@ -110,6 +116,7 @@ impl<'a, F: Function> Env<'a, F> {
110116 }
111117 }
112118 OperandConstraint :: Reg | OperandConstraint :: Reuse ( _) => Requirement :: Register ,
119+ OperandConstraint :: Stack => Requirement :: Stack ,
113120 OperandConstraint :: Any => Requirement :: Any ,
114121 }
115122 }
0 commit comments