コード生成が出来るようになりました

とりあえず、コード生成が出来るようになりました。コード生成が正しいかどうかはこれから確かめます。
さっきの、foo, bar, bazはこんな感じに生成されます。

追記 見たら、全然正しくないです。まだまだ、苦労は続きそうです。

; ModuleID = 'yarv2llvm'

declare void @abort()

define i32 @""(i32) {
bb:

bb1:		; No predecessors!
	ret i32 3649550
}

declare float @sqrtf(float)

define i32 @foo(i32) {
bb:
	%1 = alloca float		; <float*> [#uses=4]
	%2 = alloca float		; <float*> [#uses=5]
	%3 = alloca float		; <float*> [#uses=5]
	%4 = alloca float		; <float*> [#uses=6]
	%5 = alloca i32		; <i32*> [#uses=2]
	%6 = alloca float		; <float*> [#uses=1]
	%7 = alloca float		; <float*> [#uses=1]
	%8 = alloca float		; <float*> [#uses=1]

bb1:		; No predecessors!
	%9 = load float* %8		; <float> [#uses=1]
	store float %9, float* %4
	%10 = load float* %7		; <float> [#uses=1]
	store float %10, float* %3
	%11 = load float* %6		; <float> [#uses=1]
	store float %11, float* %2
	%12 = load float* %4		; <float> [#uses=1]
	%13 = fcmp ueq float %12, 0.000000e+00		; <i1> [#uses=1]
	br i1 %13, label %bb3, label %bb2

bb2:		; preds = %bb1
	%14 = load i32* %5		; <i32> [#uses=1]
	%15 = add i32 %14, 1		; <i32> [#uses=1]
	store i32 %15, i32* %5
	%16 = load float* %3		; <float> [#uses=1]
	%17 = load float* %1		; <float> [#uses=1]
	%18 = fdiv float %16, %17		; <float> [#uses=1]
	store float %18, float* %3
	%19 = load float* %2		; <float> [#uses=1]
	%20 = load float* %1		; <float> [#uses=1]
	%21 = fdiv float %19, %20		; <float> [#uses=2]
	store float %21, float* %2
	ret float %21

bb3:		; preds = %bb1
	%22 = load float* %4		; <float> [#uses=1]
	%23 = load float* %4		; <float> [#uses=1]
	%24 = mul float %22, %23		; <float> [#uses=1]
	%25 = load float* %3		; <float> [#uses=1]
	%26 = load float* %3		; <float> [#uses=1]
	%27 = mul float %25, %26		; <float> [#uses=1]
	%28 = add float %24, %27		; <float> [#uses=1]
	%29 = load float* %2		; <float> [#uses=1]
	%30 = load float* %2		; <float> [#uses=1]
	%31 = mul float %29, %30		; <float> [#uses=1]
	%32 = add float %28, %31		; <float> [#uses=1]
	%33 = call float @sqrtf(float %32)		; <float> [#uses=1]
	store float %33, float* %1
	%34 = load float* %4		; <float> [#uses=1]
	%35 = load float* %1		; <float> [#uses=1]
	%36 = fdiv float %34, %35		; <float> [#uses=1]
	store float %36, float* %4
}

define i32 @bar(i32) {
bb:
	%1 = alloca i32		; <i32*> [#uses=1]

bb1:		; No predecessors!
	%2 = load i32* %1		; <i32> [#uses=1]
	%3 = add i32 %2, 1		; <i32> [#uses=1]
	ret i32 %3
}

define i32 @baz(i32) {
bb:
	%1 = alloca float		; <float*> [#uses=1]

bb1:		; No predecessors!
	%2 = load float* %1		; <float> [#uses=1]
	%3 = call float @sqrtf(float %2)		; <float> [#uses=1]
	ret float %3
}