Brainfuck to LLVM compiler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 

324 lines
7.9 KiB

; ModuleID = 'asdf'
declare i32 @getchar()
declare i32 @putchar(i32)
define i32 @main() {
%malloccall = tail call i8* @malloc(i32 mul (i32 ptrtoint (i8* getelementptr (i8* null, i32 1) to i32), i32 100))
call void @llvm.memset.p0i8.i32(i8* %malloccall, i8 0, i32 100, i32 1, i1 false)
%1 = getelementptr i8* %malloccall, i32 50
%2 = load i8* %1
%3 = add i8 %2, 1
store i8 %3, i8* %1
%4 = load i8* %1
%5 = add i8 %4, 1
store i8 %5, i8* %1
%6 = load i8* %1
%7 = add i8 %6, 1
store i8 %7, i8* %1
%8 = load i8* %1
%9 = add i8 %8, 1
store i8 %9, i8* %1
%10 = load i8* %1
%11 = add i8 %10, 1
store i8 %11, i8* %1
%12 = load i8* %1
%13 = add i8 %12, 1
store i8 %13, i8* %1
%14 = load i8* %1
%15 = add i8 %14, 1
store i8 %15, i8* %1
%16 = load i8* %1
%17 = add i8 %16, 1
store i8 %17, i8* %1
%18 = load i8* %1
%19 = add i8 %18, 1
store i8 %19, i8* %1
%20 = load i8* %1
%21 = add i8 %20, 1
store i8 %21, i8* %1
%22 = load i8* %1
%23 = icmp ne i8 %22, 0
br i1 %23, label %24, label %79
; <label>:24 ; preds = %24, %0
%25 = getelementptr i8* %1, i32 1
%26 = load i8* %25
%27 = add i8 %26, 1
store i8 %27, i8* %25
%28 = load i8* %25
%29 = add i8 %28, 1
store i8 %29, i8* %25
%30 = load i8* %25
%31 = add i8 %30, 1
store i8 %31, i8* %25
%32 = load i8* %25
%33 = add i8 %32, 1
store i8 %33, i8* %25
%34 = load i8* %25
%35 = add i8 %34, 1
store i8 %35, i8* %25
%36 = load i8* %25
%37 = add i8 %36, 1
store i8 %37, i8* %25
%38 = load i8* %25
%39 = add i8 %38, 1
store i8 %39, i8* %25
%40 = getelementptr i8* %25, i32 1
%41 = load i8* %40
%42 = add i8 %41, 1
store i8 %42, i8* %40
%43 = load i8* %40
%44 = add i8 %43, 1
store i8 %44, i8* %40
%45 = load i8* %40
%46 = add i8 %45, 1
store i8 %46, i8* %40
%47 = load i8* %40
%48 = add i8 %47, 1
store i8 %48, i8* %40
%49 = load i8* %40
%50 = add i8 %49, 1
store i8 %50, i8* %40
%51 = load i8* %40
%52 = add i8 %51, 1
store i8 %52, i8* %40
%53 = load i8* %40
%54 = add i8 %53, 1
store i8 %54, i8* %40
%55 = load i8* %40
%56 = add i8 %55, 1
store i8 %56, i8* %40
%57 = load i8* %40
%58 = add i8 %57, 1
store i8 %58, i8* %40
%59 = load i8* %40
%60 = add i8 %59, 1
store i8 %60, i8* %40
%61 = getelementptr i8* %40, i32 1
%62 = load i8* %61
%63 = add i8 %62, 1
store i8 %63, i8* %61
%64 = load i8* %61
%65 = add i8 %64, 1
store i8 %65, i8* %61
%66 = load i8* %61
%67 = add i8 %66, 1
store i8 %67, i8* %61
%68 = getelementptr i8* %61, i32 1
%69 = load i8* %68
%70 = add i8 %69, 1
store i8 %70, i8* %68
%71 = getelementptr i8* %68, i32 -1
%72 = getelementptr i8* %71, i32 -1
%73 = getelementptr i8* %72, i32 -1
%74 = getelementptr i8* %73, i32 -1
%75 = load i8* %74
%76 = sub i8 %75, 1
store i8 %76, i8* %74
%77 = load i8* %74
%78 = icmp ne i8 %77, 0
br i1 %78, label %24, label %79
; <label>:79 ; preds = %24, %0
%80 = getelementptr i8* %74, i32 1
%81 = load i8* %80
%82 = add i8 %81, 1
store i8 %82, i8* %80
%83 = load i8* %80
%84 = add i8 %83, 1
store i8 %84, i8* %80
%85 = load i8* %80
%86 = sext i8 %85 to i32
%87 = call i32 @putchar(i32 %86)
%88 = getelementptr i8* %80, i32 1
%89 = load i8* %88
%90 = add i8 %89, 1
store i8 %90, i8* %88
%91 = load i8* %88
%92 = sext i8 %91 to i32
%93 = call i32 @putchar(i32 %92)
%94 = load i8* %88
%95 = add i8 %94, 1
store i8 %95, i8* %88
%96 = load i8* %88
%97 = add i8 %96, 1
store i8 %97, i8* %88
%98 = load i8* %88
%99 = add i8 %98, 1
store i8 %99, i8* %88
%100 = load i8* %88
%101 = add i8 %100, 1
store i8 %101, i8* %88
%102 = load i8* %88
%103 = add i8 %102, 1
store i8 %103, i8* %88
%104 = load i8* %88
%105 = add i8 %104, 1
store i8 %105, i8* %88
%106 = load i8* %88
%107 = add i8 %106, 1
store i8 %107, i8* %88
%108 = load i8* %88
%109 = sext i8 %108 to i32
%110 = call i32 @putchar(i32 %109)
%111 = load i8* %88
%112 = sext i8 %111 to i32
%113 = call i32 @putchar(i32 %112)
%114 = load i8* %88
%115 = add i8 %114, 1
store i8 %115, i8* %88
%116 = load i8* %88
%117 = add i8 %116, 1
store i8 %117, i8* %88
%118 = load i8* %88
%119 = add i8 %118, 1
store i8 %119, i8* %88
%120 = load i8* %88
%121 = sext i8 %120 to i32
%122 = call i32 @putchar(i32 %121)
%123 = getelementptr i8* %88, i32 1
%124 = load i8* %123
%125 = add i8 %124, 1
store i8 %125, i8* %123
%126 = load i8* %123
%127 = add i8 %126, 1
store i8 %127, i8* %123
%128 = load i8* %123
%129 = sext i8 %128 to i32
%130 = call i32 @putchar(i32 %129)
%131 = getelementptr i8* %123, i32 -1
%132 = getelementptr i8* %131, i32 -1
%133 = load i8* %132
%134 = add i8 %133, 1
store i8 %134, i8* %132
%135 = load i8* %132
%136 = add i8 %135, 1
store i8 %136, i8* %132
%137 = load i8* %132
%138 = add i8 %137, 1
store i8 %138, i8* %132
%139 = load i8* %132
%140 = add i8 %139, 1
store i8 %140, i8* %132
%141 = load i8* %132
%142 = add i8 %141, 1
store i8 %142, i8* %132
%143 = load i8* %132
%144 = add i8 %143, 1
store i8 %144, i8* %132
%145 = load i8* %132
%146 = add i8 %145, 1
store i8 %146, i8* %132
%147 = load i8* %132
%148 = add i8 %147, 1
store i8 %148, i8* %132
%149 = load i8* %132
%150 = add i8 %149, 1
store i8 %150, i8* %132
%151 = load i8* %132
%152 = add i8 %151, 1
store i8 %152, i8* %132
%153 = load i8* %132
%154 = add i8 %153, 1
store i8 %154, i8* %132
%155 = load i8* %132
%156 = add i8 %155, 1
store i8 %156, i8* %132
%157 = load i8* %132
%158 = add i8 %157, 1
store i8 %158, i8* %132
%159 = load i8* %132
%160 = add i8 %159, 1
store i8 %160, i8* %132
%161 = load i8* %132
%162 = add i8 %161, 1
store i8 %162, i8* %132
%163 = load i8* %132
%164 = sext i8 %163 to i32
%165 = call i32 @putchar(i32 %164)
%166 = getelementptr i8* %132, i32 1
%167 = load i8* %166
%168 = sext i8 %167 to i32
%169 = call i32 @putchar(i32 %168)
%170 = load i8* %166
%171 = add i8 %170, 1
store i8 %171, i8* %166
%172 = load i8* %166
%173 = add i8 %172, 1
store i8 %173, i8* %166
%174 = load i8* %166
%175 = add i8 %174, 1
store i8 %175, i8* %166
%176 = load i8* %166
%177 = sext i8 %176 to i32
%178 = call i32 @putchar(i32 %177)
%179 = load i8* %166
%180 = sub i8 %179, 1
store i8 %180, i8* %166
%181 = load i8* %166
%182 = sub i8 %181, 1
store i8 %182, i8* %166
%183 = load i8* %166
%184 = sub i8 %183, 1
store i8 %184, i8* %166
%185 = load i8* %166
%186 = sub i8 %185, 1
store i8 %186, i8* %166
%187 = load i8* %166
%188 = sub i8 %187, 1
store i8 %188, i8* %166
%189 = load i8* %166
%190 = sub i8 %189, 1
store i8 %190, i8* %166
%191 = load i8* %166
%192 = sext i8 %191 to i32
%193 = call i32 @putchar(i32 %192)
%194 = load i8* %166
%195 = sub i8 %194, 1
store i8 %195, i8* %166
%196 = load i8* %166
%197 = sub i8 %196, 1
store i8 %197, i8* %166
%198 = load i8* %166
%199 = sub i8 %198, 1
store i8 %199, i8* %166
%200 = load i8* %166
%201 = sub i8 %200, 1
store i8 %201, i8* %166
%202 = load i8* %166
%203 = sub i8 %202, 1
store i8 %203, i8* %166
%204 = load i8* %166
%205 = sub i8 %204, 1
store i8 %205, i8* %166
%206 = load i8* %166
%207 = sub i8 %206, 1
store i8 %207, i8* %166
%208 = load i8* %166
%209 = sub i8 %208, 1
store i8 %209, i8* %166
%210 = load i8* %166
%211 = sext i8 %210 to i32
%212 = call i32 @putchar(i32 %211)
%213 = getelementptr i8* %166, i32 1
%214 = load i8* %213
%215 = add i8 %214, 1
store i8 %215, i8* %213
%216 = load i8* %213
%217 = sext i8 %216 to i32
%218 = call i32 @putchar(i32 %217)
%219 = getelementptr i8* %213, i32 1
%220 = load i8* %219
%221 = sext i8 %220 to i32
%222 = call i32 @putchar(i32 %221)
tail call void @free(i8* %malloccall)
ret i32 0
}
declare noalias i8* @malloc(i32)
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
declare void @free(i8*)