module volt.llvm.toplevel
Backend | LLVM Backend

Code handling control flow and toplevel contstructs.

Code Map

//! Code handling control flow and toplevel contstructs.
module volt.llvm.toplevel;


//! Visits a module and turn it into code.
class LlvmVisitor : NullVisitor
{
public:
	struct Block
	{
	public:
		_case: ir.SwitchCase;
		block: LLVMBasicBlockRef;
	}


public:
	state: State;
	mod: LLVMModuleRef;
	b: LLVMBuilderRef;


public:
	this(lv: State) { }
	fn compile(m: ir.Module) { }
	fn enter(func: ir.Function) Status { }
	fn enter(var: ir.Variable) Status { }
	fn enter(ret: ir.ReturnStatement) Status { }
	fn enter(exps: ir.ExpStatement) Status { }
	fn enter(ss: ir.SwitchStatement) Status { }
	fn enter(t: ir.TryStatement) Status { }
	fn handleTryNoEH(t: ir.TryStatement) { }
	fn handleTryPosixEH(t: ir.TryStatement) { }
	fn enter(ifs: ir.IfStatement) Status { }
	fn enter(w: ir.WhileStatement) Status { }
	fn enter(d: ir.DoStatement) Status { }
	fn enter(f: ir.ForStatement) Status { }
	fn enter(bs: ir.BlockStatement) Status { }
	fn visit(cs: ir.ContinueStatement) Status { }
	fn visit(bs: ir.BreakStatement) Status { }
	fn leave(gs: ir.GotoStatement) Status { }
	fn leave(t: ir.ThrowStatement) Status { }
	fn leave(m: ir.Module) Status { }
	fn doNewBlock(b: LLVMBasicBlockRef, bs: ir.BlockStatement, fall: LLVMBasicBlockRef) { }
	fn handleScopeSuccessTo(loc: Location, to: State.PathState) { }
	fn handleScopedFunction(func: ir.Function, llvmFunc: LLVMValueRef) { }
	fn handleScopedFunctionPosixAndNone(func: ir.Function, llvmFunc: LLVMValueRef) { }
	fn fillInLandingPad(landingPad: LLVMBasicBlockRef, setCleanup: bool, catchPath: State.PathState) { }
	fn enter(m: ir.Module) Status { }
	fn leave(v: ir.Variable) Status { }
	fn leave(f: ir.Function) Status { }
	fn leave(i: ir.IfStatement) Status { }
	fn leave(e: ir.ExpStatement) Status { }
	fn leave(b: ir.BlockStatement) Status { }
	fn leave(r: ir.ReturnStatement) Status { }
}
class LlvmVisitor : NullVisitor

Visits a module and turn it into code.