@@ -80,7 +80,7 @@ impl<'tcx> crate::MirPass<'tcx> for Validator {
8080            cfg_checker. fail ( location,  msg) ; 
8181        } 
8282
83-         if  let  MirPhase :: Runtime ( phase )  = body. phase  { 
83+         if  let  MirPhase :: Runtime ( _ )  = body. phase  { 
8484            if  let  ty:: InstanceKind :: Item ( _)  = body. source . instance  { 
8585                if  body. has_free_regions ( )  { 
8686                    cfg_checker. fail ( 
@@ -89,27 +89,6 @@ impl<'tcx> crate::MirPass<'tcx> for Validator {
8989                    ) ; 
9090                } 
9191            } 
92- 
93-             if  phase >= RuntimePhase :: Optimized 
94-                 && body
95-                     . basic_blocks 
96-                     . iter ( ) 
97-                     . filter_map ( |bb| match  & bb. terminator ( ) . kind  { 
98-                         TerminatorKind :: Call  {  func,  .. } 
99-                         | TerminatorKind :: TailCall  {  func,  .. }  => Some ( func) , 
100-                         _ => None , 
101-                     } ) 
102-                     . filter_map ( |func| match  func. ty ( & body. local_decls ,  tcx) . kind ( )  { 
103-                         ty:: FnDef ( did,  ..)  => Some ( did) , 
104-                         _ => None , 
105-                     } ) 
106-                     . any ( |did| matches ! ( tcx. codegen_fn_attrs( did) . inline,  InlineAttr :: Force  {  .. } ) ) 
107-             { 
108-                 cfg_checker. fail ( 
109-                     Location :: START , 
110-                     "`#[rustc_force_inline]`-annotated function not inlined" , 
111-                 ) ; 
112-             } 
11392        } 
11493    } 
11594} 
@@ -388,7 +367,8 @@ impl<'a, 'tcx> Visitor<'tcx> for CfgChecker<'a, 'tcx> {
388367                self . check_edge ( location,  * target,  EdgeKind :: Normal ) ; 
389368                self . check_unwind_edge ( location,  * unwind) ; 
390369            } 
391-             TerminatorKind :: Call  {  args,  .. }  | TerminatorKind :: TailCall  {  args,  .. }  => { 
370+             TerminatorKind :: Call  {  func,  args,  .. } 
371+             | TerminatorKind :: TailCall  {  func,  args,  .. }  => { 
392372                // FIXME(explicit_tail_calls): refactor this & add tail-call specific checks 
393373                if  let  TerminatorKind :: Call  {  target,  unwind,  destination,  .. }  = terminator. kind  { 
394374                    if  let  Some ( target)  = target { 
@@ -441,6 +421,13 @@ impl<'a, 'tcx> Visitor<'tcx> for CfgChecker<'a, 'tcx> {
441421                        } 
442422                    } 
443423                } 
424+ 
425+                 if  let  ty:: FnDef ( did,  ..)  = func. ty ( & self . body . local_decls ,  self . tcx ) . kind ( ) 
426+                     && self . body . phase  >= MirPhase :: Runtime ( RuntimePhase :: Optimized ) 
427+                     && matches ! ( self . tcx. codegen_fn_attrs( did) . inline,  InlineAttr :: Force  {  .. } ) 
428+                 { 
429+                     self . fail ( location,  "`#[rustc_force_inline]`-annotated function not inlined" ) ; 
430+                 } 
444431            } 
445432            TerminatorKind :: Assert  {  target,  unwind,  .. }  => { 
446433                self . check_edge ( location,  * target,  EdgeKind :: Normal ) ; 
0 commit comments