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.
 
 
 
 

68 lines
1.6 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 = add i8 %22, 1
store i8 %23, i8* %1
%24 = load i8* %1
%25 = icmp ne i8 %24, 0
br i1 %25, label %26, label %34
; <label>:26 ; preds = %26, %0
%27 = load i8* %1
%28 = sext i8 %27 to i32
%29 = call i32 @putchar(i32 %28)
%30 = load i8* %1
%31 = sub i8 %30, 1
store i8 %31, i8* %1
%32 = load i8* %1
%33 = icmp ne i8 %32, 0
br i1 %33, label %26, label %34
; <label>:34 ; preds = %26, %0
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*)