11use  std:: ops:: RangeInclusive ; 
22
3- use  rustc_middle:: mir:: { self ,  BasicBlock ,  CallReturnPlaces ,  Location ,  TerminatorEdges } ; 
3+ use  rustc_middle:: mir:: { 
4+     self ,  BasicBlock ,  CallReturnPlaces ,  Location ,  SwitchTargetValue ,  TerminatorEdges , 
5+ } ; 
46
57use  super :: visitor:: ResultsVisitor ; 
6- use  super :: { Analysis ,  Effect ,  EffectIndex ,  Results ,   SwitchIntTarget } ; 
8+ use  super :: { Analysis ,  Effect ,  EffectIndex ,  Results } ; 
79
810pub  trait  Direction  { 
911    const  IS_FORWARD :  bool ; 
@@ -112,14 +114,10 @@ impl Direction for Backward {
112114
113115                mir:: TerminatorKind :: SwitchInt  {  targets :  _,  ref  discr }  => { 
114116                    if  let  Some ( mut  data)  = analysis. get_switch_int_data ( block,  discr)  { 
115-                         let  values = & body. basic_blocks . switch_sources ( ) [ & ( block,  pred) ] ; 
116-                         let  targets =
117-                             values. iter ( ) . map ( |& value| SwitchIntTarget  {  value,  target :  block } ) ; 
118- 
119117                        let  mut  tmp = analysis. bottom_value ( body) ; 
120-                         for  target  in  targets  { 
121-                             tmp. clone_from ( & exit_state) ; 
122-                             analysis. apply_switch_int_edge_effect ( & mut  data,  & mut  tmp,  target ) ; 
118+                         for  & value  in  & body . basic_blocks . switch_sources ( ) [ & ( block ,  pred ) ]  { 
119+                             tmp. clone_from ( exit_state) ; 
120+                             analysis. apply_switch_int_edge_effect ( & mut  data,  & mut  tmp,  value ) ; 
123121                            propagate ( pred,  & tmp) ; 
124122                        } 
125123                    }  else  { 
@@ -292,12 +290,9 @@ impl Direction for Forward {
292290                if  let  Some ( mut  data)  = analysis. get_switch_int_data ( block,  discr)  { 
293291                    let  mut  tmp = analysis. bottom_value ( body) ; 
294292                    for  ( value,  target)  in  targets. iter ( )  { 
295-                         tmp. clone_from ( & exit_state) ; 
296-                         analysis. apply_switch_int_edge_effect ( 
297-                             & mut  data, 
298-                             & mut  tmp, 
299-                             SwitchIntTarget  {  value :  Some ( value) ,  target } , 
300-                         ) ; 
293+                         tmp. clone_from ( exit_state) ; 
294+                         let  value = SwitchTargetValue :: Normal ( value) ; 
295+                         analysis. apply_switch_int_edge_effect ( & mut  data,  & mut  tmp,  value) ; 
301296                        propagate ( target,  & tmp) ; 
302297                    } 
303298
@@ -308,7 +303,7 @@ impl Direction for Forward {
308303                    analysis. apply_switch_int_edge_effect ( 
309304                        & mut  data, 
310305                        exit_state, 
311-                         SwitchIntTarget   {   value :   None ,   target :  otherwise  } , 
306+                         SwitchTargetValue :: Otherwise , 
312307                    ) ; 
313308                    propagate ( otherwise,  exit_state) ; 
314309                }  else  { 
0 commit comments