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.
 
 
 
 

539 lines
14 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 = getelementptr i8* %1, i32 1
%3 = load i8* %2
%4 = add i8 %3, 1
store i8 %4, i8* %2
%5 = load i8* %2
%6 = add i8 %5, 1
store i8 %6, i8* %2
%7 = load i8* %2
%8 = add i8 %7, 1
store i8 %8, i8* %2
%9 = load i8* %2
%10 = add i8 %9, 1
store i8 %10, i8* %2
%11 = load i8* %2
%12 = add i8 %11, 1
store i8 %12, i8* %2
%13 = load i8* %2
%14 = add i8 %13, 1
store i8 %14, i8* %2
%15 = load i8* %2
%16 = add i8 %15, 1
store i8 %16, i8* %2
%17 = load i8* %2
%18 = add i8 %17, 1
store i8 %18, i8* %2
%19 = load i8* %2
%20 = add i8 %19, 1
store i8 %20, i8* %2
%21 = load i8* %2
%22 = icmp ne i8 %21, 0
br i1 %22, label %23, label %46
; <label>:23 ; preds = %23, %0
%24 = getelementptr i8* %2, i32 -1
%25 = load i8* %24
%26 = add i8 %25, 1
store i8 %26, i8* %24
%27 = load i8* %24
%28 = add i8 %27, 1
store i8 %28, i8* %24
%29 = load i8* %24
%30 = add i8 %29, 1
store i8 %30, i8* %24
%31 = load i8* %24
%32 = add i8 %31, 1
store i8 %32, i8* %24
%33 = load i8* %24
%34 = add i8 %33, 1
store i8 %34, i8* %24
%35 = load i8* %24
%36 = add i8 %35, 1
store i8 %36, i8* %24
%37 = load i8* %24
%38 = add i8 %37, 1
store i8 %38, i8* %24
%39 = load i8* %24
%40 = add i8 %39, 1
store i8 %40, i8* %24
%41 = getelementptr i8* %24, i32 1
%42 = load i8* %41
%43 = sub i8 %42, 1
store i8 %43, i8* %41
%44 = load i8* %41
%45 = icmp ne i8 %44, 0
br i1 %45, label %23, label %46
; <label>:46 ; preds = %23, %0
%47 = getelementptr i8* %41, i32 -1
%48 = load i8* %47
%49 = sext i8 %48 to i32
%50 = call i32 @putchar(i32 %49)
%51 = getelementptr i8* %47, i32 1
%52 = load i8* %51
%53 = add i8 %52, 1
store i8 %53, i8* %51
%54 = load i8* %51
%55 = add i8 %54, 1
store i8 %55, i8* %51
%56 = load i8* %51
%57 = add i8 %56, 1
store i8 %57, i8* %51
%58 = load i8* %51
%59 = add i8 %58, 1
store i8 %59, i8* %51
%60 = load i8* %51
%61 = add i8 %60, 1
store i8 %61, i8* %51
%62 = load i8* %51
%63 = add i8 %62, 1
store i8 %63, i8* %51
%64 = load i8* %51
%65 = add i8 %64, 1
store i8 %65, i8* %51
%66 = load i8* %51
%67 = icmp ne i8 %66, 0
br i1 %67, label %68, label %83
; <label>:68 ; preds = %68, %46
%69 = getelementptr i8* %51, i32 -1
%70 = load i8* %69
%71 = add i8 %70, 1
store i8 %71, i8* %69
%72 = load i8* %69
%73 = add i8 %72, 1
store i8 %73, i8* %69
%74 = load i8* %69
%75 = add i8 %74, 1
store i8 %75, i8* %69
%76 = load i8* %69
%77 = add i8 %76, 1
store i8 %77, i8* %69
%78 = getelementptr i8* %69, i32 1
%79 = load i8* %78
%80 = sub i8 %79, 1
store i8 %80, i8* %78
%81 = load i8* %78
%82 = icmp ne i8 %81, 0
br i1 %82, label %68, label %83
; <label>:83 ; preds = %68, %46
%84 = getelementptr i8* %78, i32 -1
%85 = load i8* %84
%86 = add i8 %85, 1
store i8 %86, i8* %84
%87 = load i8* %84
%88 = sext i8 %87 to i32
%89 = call i32 @putchar(i32 %88)
%90 = load i8* %84
%91 = add i8 %90, 1
store i8 %91, i8* %84
%92 = load i8* %84
%93 = add i8 %92, 1
store i8 %93, i8* %84
%94 = load i8* %84
%95 = add i8 %94, 1
store i8 %95, i8* %84
%96 = load i8* %84
%97 = add i8 %96, 1
store i8 %97, i8* %84
%98 = load i8* %84
%99 = add i8 %98, 1
store i8 %99, i8* %84
%100 = load i8* %84
%101 = add i8 %100, 1
store i8 %101, i8* %84
%102 = load i8* %84
%103 = add i8 %102, 1
store i8 %103, i8* %84
%104 = load i8* %84
%105 = sext i8 %104 to i32
%106 = call i32 @putchar(i32 %105)
%107 = load i8* %84
%108 = sext i8 %107 to i32
%109 = call i32 @putchar(i32 %108)
%110 = load i8* %84
%111 = add i8 %110, 1
store i8 %111, i8* %84
%112 = load i8* %84
%113 = add i8 %112, 1
store i8 %113, i8* %84
%114 = load i8* %84
%115 = add i8 %114, 1
store i8 %115, i8* %84
%116 = load i8* %84
%117 = sext i8 %116 to i32
%118 = call i32 @putchar(i32 %117)
%119 = load i8* %84
%120 = icmp ne i8 %119, 0
br i1 %120, label %121, label %126
; <label>:121 ; preds = %121, %83
%122 = load i8* %84
%123 = sub i8 %122, 1
store i8 %123, i8* %84
%124 = load i8* %84
%125 = icmp ne i8 %124, 0
br i1 %125, label %121, label %126
; <label>:126 ; preds = %121, %83
%127 = getelementptr i8* %84, i32 1
%128 = load i8* %127
%129 = add i8 %128, 1
store i8 %129, i8* %127
%130 = load i8* %127
%131 = add i8 %130, 1
store i8 %131, i8* %127
%132 = load i8* %127
%133 = add i8 %132, 1
store i8 %133, i8* %127
%134 = load i8* %127
%135 = add i8 %134, 1
store i8 %135, i8* %127
%136 = load i8* %127
%137 = add i8 %136, 1
store i8 %137, i8* %127
%138 = load i8* %127
%139 = add i8 %138, 1
store i8 %139, i8* %127
%140 = load i8* %127
%141 = add i8 %140, 1
store i8 %141, i8* %127
%142 = load i8* %127
%143 = add i8 %142, 1
store i8 %143, i8* %127
%144 = load i8* %127
%145 = icmp ne i8 %144, 0
br i1 %145, label %146, label %161
; <label>:146 ; preds = %146, %126
%147 = getelementptr i8* %127, i32 -1
%148 = load i8* %147
%149 = add i8 %148, 1
store i8 %149, i8* %147
%150 = load i8* %147
%151 = add i8 %150, 1
store i8 %151, i8* %147
%152 = load i8* %147
%153 = add i8 %152, 1
store i8 %153, i8* %147
%154 = load i8* %147
%155 = add i8 %154, 1
store i8 %155, i8* %147
%156 = getelementptr i8* %147, i32 1
%157 = load i8* %156
%158 = sub i8 %157, 1
store i8 %158, i8* %156
%159 = load i8* %156
%160 = icmp ne i8 %159, 0
br i1 %160, label %146, label %161
; <label>:161 ; preds = %146, %126
%162 = getelementptr i8* %156, i32 -1
%163 = load i8* %162
%164 = sext i8 %163 to i32
%165 = call i32 @putchar(i32 %164)
%166 = getelementptr i8* %162, i32 1
%167 = load i8* %166
%168 = add i8 %167, 1
store i8 %168, i8* %166
%169 = load i8* %166
%170 = add i8 %169, 1
store i8 %170, i8* %166
%171 = load i8* %166
%172 = add i8 %171, 1
store i8 %172, i8* %166
%173 = load i8* %166
%174 = add i8 %173, 1
store i8 %174, i8* %166
%175 = load i8* %166
%176 = add i8 %175, 1
store i8 %176, i8* %166
%177 = load i8* %166
%178 = add i8 %177, 1
store i8 %178, i8* %166
%179 = load i8* %166
%180 = add i8 %179, 1
store i8 %180, i8* %166
%181 = load i8* %166
%182 = add i8 %181, 1
store i8 %182, i8* %166
%183 = load i8* %166
%184 = add i8 %183, 1
store i8 %184, i8* %166
%185 = load i8* %166
%186 = add i8 %185, 1
store i8 %186, i8* %166
%187 = load i8* %166
%188 = add i8 %187, 1
store i8 %188, i8* %166
%189 = load i8* %166
%190 = icmp ne i8 %189, 0
br i1 %190, label %191, label %214
; <label>:191 ; preds = %191, %161
%192 = getelementptr i8* %166, i32 -1
%193 = load i8* %192
%194 = add i8 %193, 1
store i8 %194, i8* %192
%195 = load i8* %192
%196 = add i8 %195, 1
store i8 %196, i8* %192
%197 = load i8* %192
%198 = add i8 %197, 1
store i8 %198, i8* %192
%199 = load i8* %192
%200 = add i8 %199, 1
store i8 %200, i8* %192
%201 = load i8* %192
%202 = add i8 %201, 1
store i8 %202, i8* %192
%203 = load i8* %192
%204 = add i8 %203, 1
store i8 %204, i8* %192
%205 = load i8* %192
%206 = add i8 %205, 1
store i8 %206, i8* %192
%207 = load i8* %192
%208 = add i8 %207, 1
store i8 %208, i8* %192
%209 = getelementptr i8* %192, i32 1
%210 = load i8* %209
%211 = sub i8 %210, 1
store i8 %211, i8* %209
%212 = load i8* %209
%213 = icmp ne i8 %212, 0
br i1 %213, label %191, label %214
; <label>:214 ; preds = %191, %161
%215 = getelementptr i8* %209, i32 -1
%216 = load i8* %215
%217 = sub i8 %216, 1
store i8 %217, i8* %215
%218 = load i8* %215
%219 = sext i8 %218 to i32
%220 = call i32 @putchar(i32 %219)
%221 = load i8* %215
%222 = sub i8 %221, 1
store i8 %222, i8* %215
%223 = load i8* %215
%224 = sub i8 %223, 1
store i8 %224, i8* %215
%225 = load i8* %215
%226 = sub i8 %225, 1
store i8 %226, i8* %215
%227 = load i8* %215
%228 = sub i8 %227, 1
store i8 %228, i8* %215
%229 = load i8* %215
%230 = sub i8 %229, 1
store i8 %230, i8* %215
%231 = load i8* %215
%232 = sub i8 %231, 1
store i8 %232, i8* %215
%233 = load i8* %215
%234 = sub i8 %233, 1
store i8 %234, i8* %215
%235 = load i8* %215
%236 = sub i8 %235, 1
store i8 %236, i8* %215
%237 = load i8* %215
%238 = sext i8 %237 to i32
%239 = call i32 @putchar(i32 %238)
%240 = load i8* %215
%241 = add i8 %240, 1
store i8 %241, i8* %215
%242 = load i8* %215
%243 = add i8 %242, 1
store i8 %243, i8* %215
%244 = load i8* %215
%245 = add i8 %244, 1
store i8 %245, i8* %215
%246 = load i8* %215
%247 = sext i8 %246 to i32
%248 = call i32 @putchar(i32 %247)
%249 = load i8* %215
%250 = sub i8 %249, 1
store i8 %250, i8* %215
%251 = load i8* %215
%252 = sub i8 %251, 1
store i8 %252, i8* %215
%253 = load i8* %215
%254 = sub i8 %253, 1
store i8 %254, i8* %215
%255 = load i8* %215
%256 = sub i8 %255, 1
store i8 %256, i8* %215
%257 = load i8* %215
%258 = sub i8 %257, 1
store i8 %258, i8* %215
%259 = load i8* %215
%260 = sub i8 %259, 1
store i8 %260, i8* %215
%261 = load i8* %215
%262 = sext i8 %261 to i32
%263 = call i32 @putchar(i32 %262)
%264 = load i8* %215
%265 = sub i8 %264, 1
store i8 %265, i8* %215
%266 = load i8* %215
%267 = sub i8 %266, 1
store i8 %267, i8* %215
%268 = load i8* %215
%269 = sub i8 %268, 1
store i8 %269, i8* %215
%270 = load i8* %215
%271 = sub i8 %270, 1
store i8 %271, i8* %215
%272 = load i8* %215
%273 = sub i8 %272, 1
store i8 %273, i8* %215
%274 = load i8* %215
%275 = sub i8 %274, 1
store i8 %275, i8* %215
%276 = load i8* %215
%277 = sub i8 %276, 1
store i8 %277, i8* %215
%278 = load i8* %215
%279 = sub i8 %278, 1
store i8 %279, i8* %215
%280 = load i8* %215
%281 = sext i8 %280 to i32
%282 = call i32 @putchar(i32 %281)
%283 = load i8* %215
%284 = icmp ne i8 %283, 0
br i1 %284, label %285, label %290
; <label>:285 ; preds = %285, %214
%286 = load i8* %215
%287 = sub i8 %286, 1
store i8 %287, i8* %215
%288 = load i8* %215
%289 = icmp ne i8 %288, 0
br i1 %289, label %285, label %290
; <label>:290 ; preds = %285, %214
%291 = getelementptr i8* %215, i32 1
%292 = load i8* %291
%293 = add i8 %292, 1
store i8 %293, i8* %291
%294 = load i8* %291
%295 = add i8 %294, 1
store i8 %295, i8* %291
%296 = load i8* %291
%297 = add i8 %296, 1
store i8 %297, i8* %291
%298 = load i8* %291
%299 = add i8 %298, 1
store i8 %299, i8* %291
%300 = load i8* %291
%301 = add i8 %300, 1
store i8 %301, i8* %291
%302 = load i8* %291
%303 = add i8 %302, 1
store i8 %303, i8* %291
%304 = load i8* %291
%305 = add i8 %304, 1
store i8 %305, i8* %291
%306 = load i8* %291
%307 = add i8 %306, 1
store i8 %307, i8* %291
%308 = load i8* %291
%309 = icmp ne i8 %308, 0
br i1 %309, label %310, label %325
; <label>:310 ; preds = %310, %290
%311 = getelementptr i8* %291, i32 -1
%312 = load i8* %311
%313 = add i8 %312, 1
store i8 %313, i8* %311
%314 = load i8* %311
%315 = add i8 %314, 1
store i8 %315, i8* %311
%316 = load i8* %311
%317 = add i8 %316, 1
store i8 %317, i8* %311
%318 = load i8* %311
%319 = add i8 %318, 1
store i8 %319, i8* %311
%320 = getelementptr i8* %311, i32 1
%321 = load i8* %320
%322 = sub i8 %321, 1
store i8 %322, i8* %320
%323 = load i8* %320
%324 = icmp ne i8 %323, 0
br i1 %324, label %310, label %325
; <label>:325 ; preds = %310, %290
%326 = getelementptr i8* %320, i32 -1
%327 = load i8* %326
%328 = add i8 %327, 1
store i8 %328, i8* %326
%329 = load i8* %326
%330 = sext i8 %329 to i32
%331 = call i32 @putchar(i32 %330)
%332 = load i8* %326
%333 = icmp ne i8 %332, 0
br i1 %333, label %334, label %339
; <label>:334 ; preds = %334, %325
%335 = load i8* %326
%336 = sub i8 %335, 1
store i8 %336, i8* %326
%337 = load i8* %326
%338 = icmp ne i8 %337, 0
br i1 %338, label %334, label %339
; <label>:339 ; preds = %334, %325
%340 = load i8* %326
%341 = add i8 %340, 1
store i8 %341, i8* %326
%342 = load i8* %326
%343 = add i8 %342, 1
store i8 %343, i8* %326
%344 = load i8* %326
%345 = add i8 %344, 1
store i8 %345, i8* %326
%346 = load i8* %326
%347 = add i8 %346, 1
store i8 %347, i8* %326
%348 = load i8* %326
%349 = add i8 %348, 1
store i8 %349, i8* %326
%350 = load i8* %326
%351 = add i8 %350, 1
store i8 %351, i8* %326
%352 = load i8* %326
%353 = add i8 %352, 1
store i8 %353, i8* %326
%354 = load i8* %326
%355 = add i8 %354, 1
store i8 %355, i8* %326
%356 = load i8* %326
%357 = add i8 %356, 1
store i8 %357, i8* %326
%358 = load i8* %326
%359 = add i8 %358, 1
store i8 %359, i8* %326
%360 = load i8* %326
%361 = sext i8 %360 to i32
%362 = call i32 @putchar(i32 %361)
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*)