@@ -68,11 +68,9 @@ pub fn encode_and_write_metadata(
6868 . unwrap_or_else ( |err| tcx. sess . fatal ( & format ! ( "couldn't create a temp dir: {}" , err) ) ) ;
6969 let metadata_tmpdir = MaybeTempDir :: new ( metadata_tmpdir, tcx. sess . opts . cg . save_temps ) ;
7070 let metadata_filename = metadata_tmpdir. as_ref ( ) . join ( METADATA_FILENAME ) ;
71- let metadata = match metadata_kind {
71+ match metadata_kind {
7272 MetadataKind :: None => {
73- let metadata = EncodedMetadata :: new ( ) ;
74- let _ = emit_metadata ( tcx. sess , metadata. raw_data ( ) , & metadata_tmpdir) ;
75- metadata
73+ let _ = emit_metadata ( tcx. sess , & [ ] , & metadata_tmpdir) ;
7674 }
7775 MetadataKind :: Uncompressed | MetadataKind :: Compressed => {
7876 encode_metadata ( tcx, & metadata_filename)
@@ -82,7 +80,7 @@ pub fn encode_and_write_metadata(
8280 let _prof_timer = tcx. sess . prof . generic_activity ( "write_crate_metadata" ) ;
8381
8482 let need_metadata_file = tcx. sess . opts . output_types . contains_key ( & OutputType :: Metadata ) ;
85- if need_metadata_file {
83+ let metadata_filename = if need_metadata_file {
8684 if let Err ( e) = non_durable_rename ( & metadata_filename, & out_filename) {
8785 tcx. sess . fatal ( & format ! ( "failed to write {}: {}" , out_filename. display( ) , e) ) ;
8886 }
@@ -92,7 +90,12 @@ pub fn encode_and_write_metadata(
9290 . span_diagnostic
9391 . emit_artifact_notification ( & out_filename, "metadata" ) ;
9492 }
95- }
93+ out_filename
94+ } else {
95+ metadata_filename
96+ } ;
97+ let raw_data = std:: fs:: read ( metadata_filename) . unwrap ( ) ;
98+ let metadata = EncodedMetadata :: from_raw_data ( raw_data) ;
9699
97100 let need_metadata_module = metadata_kind == MetadataKind :: Compressed ;
98101
0 commit comments