Slow "llvm module passes"

701dc18
Opened by Mathieu Poumeyrol at 2020-01-31 22:55:42

This crate https://github.com/snipsco/rustling-ontology takes a very long time to compile, more than I would expect. -Z time-passes show this culprit:" time: 269.113 llvm module passes [0]" accounting for ~95% of the compilation time.

From my understanding, it is atypical, so maybe there is something interesting there. I'm not too sure how to investigate more.

  1. Does this happen in both debug mode and release mode?

    bstrie at 2017-06-08 17:05:57

  2. These figures are for a release build. For a debug build, the "llvm module pass" is really small (the codegen pass dominates).

    The crate in question is actually the one called rustling_ontology_rules.

    In debug:

      time: 0.760	llvm function passes [0]
      time: 0.867	llvm module passes [0]
      time: 20.146	codegen passes [0]
      time: 0.001	codegen passes [0]
    time: 23.594	LLVM passes
    

    In release:

    time: 0.000	serialize dep graph
      time: 3.487	llvm function passes [0]
      time: 249.185	llvm module passes [0]
      time: 19.885	codegen passes [0]
      time: 0.001	codegen passes [0]
    time: 273.740	LLVM passes
    

    Note that @nikomatsakis suggestion on IRC, that is -C codegen-units helps a lot alleviating the pain. It still shows some very out-of-balance repartition (with 8 for instance).

    Mathieu Poumeyrol at 2017-06-08 18:43:00