@@ -12,13 +12,12 @@ use rustc_hir::def_id::LOCAL_CRATE;
12
12
use rustc_middle:: arena:: Arena ;
13
13
use rustc_middle:: dep_graph:: DepGraph ;
14
14
use rustc_middle:: ty:: { GlobalCtxt , TyCtxt } ;
15
- use rustc_serialize:: opaque:: FileEncodeResult ;
16
15
use rustc_session:: Session ;
17
16
use rustc_session:: config:: { self , OutputFilenames , OutputType } ;
18
17
19
18
use crate :: errors:: FailedWritingFile ;
20
19
use crate :: interface:: { Compiler , Result } ;
21
- use crate :: { errors , passes} ;
20
+ use crate :: passes;
22
21
23
22
/// Represent the result of a query.
24
23
///
@@ -90,8 +89,10 @@ impl<'tcx> Queries<'tcx> {
90
89
}
91
90
}
92
91
93
- pub fn finish ( & self ) -> FileEncodeResult {
94
- if let Some ( gcx) = self . gcx_cell . get ( ) { gcx. finish ( ) } else { Ok ( 0 ) }
92
+ pub fn finish ( & ' tcx self ) {
93
+ if let Some ( gcx) = self . gcx_cell . get ( ) {
94
+ gcx. finish ( ) ;
95
+ }
95
96
}
96
97
97
98
pub fn parse ( & self ) -> Result < QueryResult < ' _ , ast:: Crate > > {
@@ -209,29 +210,10 @@ impl Compiler {
209
210
let queries = Queries :: new ( self ) ;
210
211
let ret = f ( & queries) ;
211
212
212
- // NOTE: intentionally does not compute the global context if it hasn't been built yet,
213
- // since that likely means there was a parse error.
214
- if let Some ( Ok ( gcx) ) = & mut * queries. gcx . result . borrow_mut ( ) {
215
- let gcx = gcx. get_mut ( ) ;
216
- // We assume that no queries are run past here. If there are new queries
217
- // after this point, they'll show up as "<unknown>" in self-profiling data.
218
- {
219
- let _prof_timer =
220
- queries. compiler . sess . prof . generic_activity ( "self_profile_alloc_query_strings" ) ;
221
- gcx. enter ( rustc_query_impl:: alloc_self_profile_query_strings) ;
222
- }
223
-
224
- self . sess . time ( "serialize_dep_graph" , || gcx. enter ( rustc_incremental:: save_dep_graph) ) ;
225
-
226
- gcx. enter ( rustc_query_impl:: query_key_hash_verify_all) ;
227
- }
228
-
229
213
// The timer's lifetime spans the dropping of `queries`, which contains
230
214
// the global context.
231
215
_timer = self . sess . timer ( "free_global_ctxt" ) ;
232
- if let Err ( ( path, error) ) = queries. finish ( ) {
233
- self . sess . dcx ( ) . emit_fatal ( errors:: FailedWritingFile { path : & path, error } ) ;
234
- }
216
+ queries. finish ( ) ;
235
217
236
218
ret
237
219
}
0 commit comments