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.
197 lines
4.4 KiB
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*)
|
|
|