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.
 
 
 
 

197 lines
4.4 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 = call i32 @getchar()
%3 = trunc i32 %2 to i8
store i8 %3, i8* %1
%4 = load i8* %1
%5 = sub i8 %4, 1
store i8 %5, i8* %1
%6 = load i8* %1
%7 = sub i8 %6, 1
store i8 %7, i8* %1
%8 = load i8* %1
%9 = sub i8 %8, 1
store i8 %9, i8* %1
%10 = load i8* %1
%11 = sub i8 %10, 1
store i8 %11, i8* %1
%12 = load i8* %1
%13 = sub i8 %12, 1
store i8 %13, i8* %1
%14 = load i8* %1
%15 = sub i8 %14, 1
store i8 %15, i8* %1
%16 = load i8* %1
%17 = sub i8 %16, 1
store i8 %17, i8* %1
%18 = load i8* %1
%19 = sub i8 %18, 1
store i8 %19, i8* %1
%20 = load i8* %1
%21 = sub i8 %20, 1
store i8 %21, i8* %1
%22 = load i8* %1
%23 = sub i8 %22, 1
store i8 %23, i8* %1
%24 = load i8* %1
%25 = icmp ne i8 %24, 0
br i1 %25, label %26, label %98
; <label>:26 ; preds = %26, %0
%27 = load i8* %1
%28 = sub i8 %27, 1
store i8 %28, i8* %1
%29 = load i8* %1
%30 = sub i8 %29, 1
store i8 %30, i8* %1
%31 = load i8* %1
%32 = sub i8 %31, 1
store i8 %32, i8* %1
%33 = load i8* %1
%34 = sub i8 %33, 1
store i8 %34, i8* %1
%35 = load i8* %1
%36 = sub i8 %35, 1
store i8 %36, i8* %1
%37 = load i8* %1
%38 = sub i8 %37, 1
store i8 %38, i8* %1
%39 = load i8* %1
%40 = sub i8 %39, 1
store i8 %40, i8* %1
%41 = load i8* %1
%42 = sub i8 %41, 1
store i8 %42, i8* %1
%43 = load i8* %1
%44 = sub i8 %43, 1
store i8 %44, i8* %1
%45 = load i8* %1
%46 = sub i8 %45, 1
store i8 %46, i8* %1
%47 = load i8* %1
%48 = sub i8 %47, 1
store i8 %48, i8* %1
%49 = load i8* %1
%50 = sub i8 %49, 1
store i8 %50, i8* %1
%51 = load i8* %1
%52 = sub i8 %51, 1
store i8 %52, i8* %1
%53 = load i8* %1
%54 = sub i8 %53, 1
store i8 %54, i8* %1
%55 = load i8* %1
%56 = sub i8 %55, 1
store i8 %56, i8* %1
%57 = load i8* %1
%58 = sub i8 %57, 1
store i8 %58, i8* %1
%59 = load i8* %1
%60 = sub i8 %59, 1
store i8 %60, i8* %1
%61 = load i8* %1
%62 = sub i8 %61, 1
store i8 %62, i8* %1
%63 = load i8* %1
%64 = sub i8 %63, 1
store i8 %64, i8* %1
%65 = load i8* %1
%66 = sub i8 %65, 1
store i8 %66, i8* %1
%67 = load i8* %1
%68 = sub i8 %67, 1
store i8 %68, i8* %1
%69 = load i8* %1
%70 = sub i8 %69, 1
store i8 %70, i8* %1
%71 = load i8* %1
%72 = sext i8 %71 to i32
%73 = call i32 @putchar(i32 %72)
%74 = call i32 @getchar()
%75 = trunc i32 %74 to i8
store i8 %75, i8* %1
%76 = load i8* %1
%77 = sub i8 %76, 1
store i8 %77, i8* %1
%78 = load i8* %1
%79 = sub i8 %78, 1
store i8 %79, i8* %1
%80 = load i8* %1
%81 = sub i8 %80, 1
store i8 %81, i8* %1
%82 = load i8* %1
%83 = sub i8 %82, 1
store i8 %83, i8* %1
%84 = load i8* %1
%85 = sub i8 %84, 1
store i8 %85, i8* %1
%86 = load i8* %1
%87 = sub i8 %86, 1
store i8 %87, i8* %1
%88 = load i8* %1
%89 = sub i8 %88, 1
store i8 %89, i8* %1
%90 = load i8* %1
%91 = sub i8 %90, 1
store i8 %91, i8* %1
%92 = load i8* %1
%93 = sub i8 %92, 1
store i8 %93, i8* %1
%94 = load i8* %1
%95 = sub i8 %94, 1
store i8 %95, i8* %1
%96 = load i8* %1
%97 = icmp ne i8 %96, 0
br i1 %97, label %26, label %98
; <label>:98 ; preds = %26, %0
%99 = load i8* %1
%100 = add i8 %99, 1
store i8 %100, i8* %1
%101 = load i8* %1
%102 = add i8 %101, 1
store i8 %102, i8* %1
%103 = load i8* %1
%104 = add i8 %103, 1
store i8 %104, i8* %1
%105 = load i8* %1
%106 = add i8 %105, 1
store i8 %106, i8* %1
%107 = load i8* %1
%108 = add i8 %107, 1
store i8 %108, i8* %1
%109 = load i8* %1
%110 = add i8 %109, 1
store i8 %110, i8* %1
%111 = load i8* %1
%112 = add i8 %111, 1
store i8 %112, i8* %1
%113 = load i8* %1
%114 = add i8 %113, 1
store i8 %114, i8* %1
%115 = load i8* %1
%116 = add i8 %115, 1
store i8 %116, i8* %1
%117 = load i8* %1
%118 = add i8 %117, 1
store i8 %118, i8* %1
%119 = load i8* %1
%120 = sext i8 %119 to i32
%121 = call i32 @putchar(i32 %120)
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*)