Here's some files you might want to look at first. Depending on your project, you might not care about some of these. ~/cecil/compiler: /front-end: /ast: /ast-2-rtl: /basic-parser: /cecil-parser: /evaluator: /rtl-parser: (takes textual inputs files & builds CFGs). parser-file-rtl.cecil parser-rtl-helpers.cecil parser-rtl.cecil scanner-rtl.cecil /typechecker: /internal-representation: /decls: /rtl: (Defines abstract CFG_node, CFG_next & CFG_prev connection hierarchies & some low-level manipulation code. All RTL nodes inherit from 1 instance of CFG_next & 1 instance of CFG_prev) cfg.cecil cfg-manipulate.cecil (Defines a CFG abstraction) cfg-context.cecil (Define various RTL nodes) rtl.cecil rtl-connection.cecil rtl-function-calls.cecil rtl-housekeeping.cecil (rtl_symbols & operators) rtl-operators.cecil rtl-representation.cecil rtl-symbols.cecil (support code. rtl-dataflow defines uses, defs, etc for each RTL node. IF YOU ADD AN RTL NODE, CHECK RTL_DATAFLOW) rtl-dataflow.cecil symbol-set.cecil rtl-table-driven-send-helpers.cecil (pass to expand RTL1 => RTL2) rtl-expansion-pass.cecil (expand RTL2 => RTL3) rtl-expansion-pass-2.cecil rtl-expansion-pass-2-connection.cecil rtl-expansion-pass-2-function-calls.cecil rtl-expansion-pass-2-mem.cecil rtl-expansion-pass-2-ops.cecil /scopes: (keep track of variables, lexical nesting) binding.cecil lexical-id.cecil scope-lightweight.cecil scope.cecil /optimizer: /call-graph: (define a call graph data structure, and some support for building a call-graph. Not all the code for building a call graph from a C program has been implemented) call-graph.cecil call-graph-explicit.cecil /class-analysis: /class-inference: /cse: (defines a mega-cse pass) cmp-fact.cecil cse-pass.cecil cse.cecil dead-store-elim.cecil escape-analysis.cecil simplify.cecil value.cecil /idfa: cfg-traversal-interface.cecil composer.cecil (used to run passes simultaneously) /register-allocation: global-reg-alloc.cecil interference.cecil live-vars.cecil spill-code.cecil spill-needs.cecil /small-passes: (small analysis/optimization passes. Some of these use the idfa framework, some of the simplest do not) alias_analysis.cecil clean-up.cecil cur-scope.cecil dead-assign-elim.cecil delaying.cecil dominators.cecil env-shrinkwrap.cecil mother-of-all-passes.cecil schedule.cecil ucond-branches.cecil weight-analysis.cecil /specialization: /codegen: /alpha: /c-codegen: /generic: /generic-asm: /sparc: /infrastructure: /environment: options-table.cecil utilities.cecil /files: /incremental: compiler-inc.cecil /libraries: /instrumentation: Here's a complete list of the compiler source files: ~/cecil/compiler: compiler.cecil typechecker.cecil /front-end: front-end-base.cecil lang.cecil /ast: ast-iterators.cecil decl.cecil expr.cecil field.cecil method.cecil object.cecil pragmas.cecil precedence-deps.cecil precedence.cecil spec.cecil /ast-2-rtl: ast-2-rtl-decls.cecil ast-2-rtl-helpers.cecil ast-2-rtl-meth.cecil ast-2-rtl.cecil /basic-parser: parser-def.cecil scanner-basic.cecil scanner.cecil token.cecil /cecil-parser: parser-code.cecil parser-comp.cecil parser-meth.cecil parser.cecil scanner-cecil.cecil /evaluator: eval.cecil evaluator.cecil /rtl-parser: parser-file-rtl.cecil parser-rtl-helpers.cecil parser-rtl.cecil scanner-rtl.cecil /typechecker: type-decls.cecil type-deps.cecil type-domains.cecil type-env.cecil type-error.cecil type-exprs.cecil type-headers.cecil type-match.cecil type-msg.cecil type-object.cecil type-passes.cecil type-pattern.cecil type-resend.cecil type-resolve.cecil type-sig.cecil type-stmts.cecil type-subst.cecil typechecker-base.cecil /internal-representation: internal-representation-base.cecil /decls: method-table.cecil object-graph.cecil object-node.cecil object-set.cecil pure-tuple.cecil pure-type.cecil rtl-specific-ast.cecil /rtl: cfg-context.cecil cfg-manipulate-loops.cecil cfg-manipulate.cecil cfg.cecil rtl-connection.cecil rtl-dataflow.cecil rtl-expansion-pass-2-connection.cecil rtl-expansion-pass-2-function-calls.cecil rtl-expansion-pass-2-mem.cecil rtl-expansion-pass-2-ops.cecil rtl-expansion-pass-2.cecil rtl-expansion-pass.cecil rtl-function-calls.cecil rtl-housekeeping.cecil rtl-operators.cecil rtl-representation.cecil rtl-symbols.cecil rtl-table-driven-send-helpers.cecil rtl.cecil symbol-set.cecil /scopes: binding.cecil lexical-id.cecil resolve.cecil scope-lightweight.cecil scope-lookup.cecil scope.cecil /optimizer: optimizer-base.cecil /call-graph: call-graph-PIC.cecil call-graph-dot.cecil call-graph-explicit.cecil call-graph.cecil /class-analysis: class-analysis.cecil experiment.cecil inlining-mechanism.cecil method-cache.cecil method-tuple-cache.cecil pure-type-mapping-info.cecil static-cone-test.cecil static-inlining.cecil static-type-test.cecil type-predict.cecil typegroup.cecil /class-inference: interproc-0CFA.cecil interproc-CPA.cecil interproc-access.cecil interproc-ast.cecil interproc-contours.cecil interproc-fields.cecil interproc-iterative.cecil interproc-kCFA.cecil interproc-prims.cecil interproc-static-types.cecil interproc-types.cecil interproc.cecil /cse: cmp-fact.cecil cse-pass.cecil cse.cecil dead-store-elim.cecil escape-analysis.cecil simplify.cecil value.cecil /idfa: cfg-traversal-continue.cecil cfg-traversal-implementation.cecil cfg-traversal-interface.cecil cfg-traversal-lowlevel.cecil composer.cecil /register-allocation: global-reg-alloc.cecil interference.cecil live-vars.cecil spill-code.cecil spill-needs.cecil /small-passes: alias_analysis.cecil clean-up.cecil cur-scope.cecil dead-assign-elim.cecil delaying.cecil dominators.cecil env-shrinkwrap.cecil exposed.cecil mother-of-all-passes.cecil ping-envs.cecil schedule.cecil splitting-combined.cecil splitting.cecil ucond-branches.cecil weight-analysis.cecil /specialization: specialize-alg.cecil specialize.cecil /codegen: codegen-base.cecil /alpha: arch-spec-alpha.cecil /c-codegen: c-codegen-connection.cecil c-codegen-func.cecil c-codegen-housekeeping.cecil c-codegen-names.cecil c-codegen-rtl.cecil /generic: arch-spec.cecil codegen-cfg.cecil codegen-rtl-meth.cecil codegen-rtl-traversal.cecil file-info-codegen.cecil object-codegen.cecil pic-allocation.cecil scope-codegen.cecil /generic-asm: asm-codegen-names.cecil assembler.cecil stack-manager.cecil /sparc: arch-spec-sparc.cecil codegen-sparc-connection.cecil codegen-sparc-func.cecil codegen-sparc-housekeeping.cecil codegen-sparc-misc.cecil codegen-sparc.cecil /infrastructure: infrastructure-base.cecil /environment: class_browser.cecil compiler-def.cecil compiler-main.cecil compiler-make.cecil compiler-misc.cecil compiler-params.cecil debug.cecil error-handling.cecil options-misc.cecil options-table.cecil utilities.cecil /files: compile-stream.cecil compiler-save.cecil db-makefile.cecil db-selectors.cecil db.cecil file-info.cecil /incremental: compiler-inc.cecil dependencies.cecil incremental.cecil object-deps.cecil sig-table.cecil var-table.cecil /libraries: libraries-base.cecil libraries-check.cecil libraries-def.cecil libraries-misc-rel.cecil libraries-pragma.cecil libraries-rel.cecil libraries-work.cecil rec-dag-traversal.cecil /instrumentation: dependency-factoring.cecil dependency-stats-header-files.cecil dependency-stats.cecil field-stats.cecil instrumentation-base.cecil interproc-stats.cecil specialize-stats.cecil