Advertisement
Guest User

Untitled

a guest
May 27th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 1.67 KB | None | 0 0
  1. ; ModuleID = 'xlang compiler'
  2.  
  3. @0 = private unnamed_addr constant [3 x i8] c"%d\00"
  4. @1 = private unnamed_addr constant [3 x i8] c"%d\00"
  5.  
  6. define i32 @fib(i32) {
  7. entry:
  8.   %n = alloca i32
  9.   store i32 %0, i32* %n
  10.   %1 = load i32, i32* %n
  11.   %equalcomparetmp = icmp eq i32 %1, 1
  12.   br i1 %equalcomparetmp, label %then_block, label %else_block
  13.  
  14. then_block:                                       ; preds = %entry
  15.   ret i32 1
  16.   br label %ifcont_block
  17.  
  18. else_block:                                       ; preds = %entry
  19.   %2 = load i32, i32* %n
  20.   %equalcomparetmp1 = icmp eq i32 %2, 0
  21.   br i1 %equalcomparetmp1, label %then_block2, label %else_block3
  22.  
  23. ifcont_block:                                     ; preds = %ifcont_block4, %then_block
  24.   ret i32 0
  25.  
  26. then_block2:                                      ; preds = %else_block
  27.   ret i32 0
  28.   br label %ifcont_block4
  29.  
  30. else_block3:                                      ; preds = %else_block
  31.   %3 = load i32, i32* %n
  32.   %subtmp = sub i32 %3, 1
  33.   %4 = call i32 @fib(i32 %subtmp)
  34.   %5 = load i32, i32* %n
  35.   %subtmp5 = sub i32 %5, 2
  36.   %6 = call i32 @fib(i32 %subtmp5)
  37.   %addtmp = add i32 %4, %6
  38.   ret i32 %addtmp
  39.   br label %ifcont_block4
  40.  
  41. ifcont_block4:                                    ; preds = %else_block3, %then_block2
  42.   br label %ifcont_block
  43. }
  44.  
  45. define i32 @main() {
  46. entry:
  47.   %n = alloca i32
  48.   %0 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @0, i32 0, i32 0), i32* %n)
  49.   %1 = load i32, i32* %n
  50.   %2 = call i32 @fib(i32 %1)
  51.   %3 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @1, i32 0, i32 0), i32 %2)
  52.   ret i32 0
  53. }
  54.  
  55. declare i32 @scanf(i8*, i32*)
  56.  
  57. declare i32 @printf(i8*, i32)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement