+
+ template<typename T>
+ bool resolve(Stage &, unsigned &, unsigned);
+
+ /** Resolves various references between nodes. Flags can be specified to
+ request resolving particular aspects. Resolving may ripple into other
+ aspects as necessary. */
+ void resolve(Stage &, unsigned = RESOLVE_ALL);
+
+ /** Checks the validity of the module. If the return value is false, the
+ module's diagnostics list will contain additional information of errors. */
+ bool validate(Stage &);
+
+ static bool diagnostic_line_order(const Diagnostic &, const Diagnostic &);
+
+ /** Applies optimizations to a stage. The return value indicates which
+ stage should be optimized next. */
+ OptimizeResult optimize(Stage &);
+
+ /** Performs final adjustments on a stage after compilation. */