+
+fn collect_translation_items<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>) {
+ let time_passes = ccx.sess().time_passes();
+
+ let collection_mode = match ccx.sess().opts.debugging_opts.print_trans_items {
+ Some(ref s) => {
+ let mode_string = s.to_lowercase();
+ let mode_string = mode_string.trim();
+ if mode_string == "eager" {
+ TransItemCollectionMode::Eager
+ } else {
+ if mode_string != "lazy" {
+ let message = format!("Unknown codegen-item collection mode '{}'. \
+ Falling back to 'lazy' mode.",
+ mode_string);
+ ccx.sess().warn(&message);
+ }
+
+ TransItemCollectionMode::Lazy
+ }
+ }
+ None => TransItemCollectionMode::Lazy
+ };
+
+ let items = time(time_passes, "translation item collection", || {
+ collector::collect_crate_translation_items(&ccx, collection_mode)
+ });
+
+ if ccx.sess().opts.debugging_opts.print_trans_items.is_some() {
+ let mut item_keys: Vec<_> = items.iter()
+ .map(|i| i.to_string(ccx))
+ .collect();
+ item_keys.sort();
+
+ for item in item_keys {
+ println!("TRANS_ITEM {}", item);
+ }
+
+ let mut ccx_map = ccx.translation_items().borrow_mut();
+
+ for cgi in items {
+ ccx_map.insert(cgi, TransItemState::PredictedButNotGenerated);
+ }
+ }
+}