terminatorInstructions.3.2.ll 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. ; RUN: llvm-dis < %s.bc| FileCheck %s
  2. ; TerminatorOperations.3.2.ll.bc was generated by passing this file to llvm-as-3.2.
  3. ; The test checks that LLVM does not misread terminator instructions from
  4. ; older bitcode files.
  5. define i32 @condbr(i1 %cond){
  6. entry:
  7. ; CHECK: br i1 %cond, label %TrueLabel, label %FalseLabel
  8. br i1 %cond, label %TrueLabel, label %FalseLabel
  9. TrueLabel:
  10. ret i32 1
  11. FalseLabel:
  12. ret i32 0
  13. }
  14. define i32 @uncondbr(){
  15. entry:
  16. ; CHECK: br label %uncondLabel
  17. br label %uncondLabel
  18. uncondLabel:
  19. ret i32 1
  20. }
  21. define i32 @indirectbr(i8* %Addr){
  22. entry:
  23. ; CHECK: indirectbr i8* %Addr, [label %bb1, label %bb2]
  24. indirectbr i8* %Addr, [ label %bb1, label %bb2 ]
  25. bb1:
  26. ret i32 1
  27. bb2:
  28. ret i32 0
  29. }
  30. define void @unreachable(){
  31. entry:
  32. ; CHECK: unreachable
  33. unreachable
  34. ret void
  35. }
  36. define i32 @retInstr(){
  37. entry:
  38. ; CHECK: ret i32 1
  39. ret i32 1
  40. }
  41. define void @retInstr2(){
  42. entry:
  43. ; CHECK: ret void
  44. ret void
  45. }
  46. define i32 @switchInstr(i32 %x){
  47. entry:
  48. ; CHECK: switch i32 %x, label %label3 [
  49. switch i32 %x, label %label3 [
  50. ; CHECK-NEXT: i32 1, label %label1
  51. i32 1, label %label1
  52. ; CHECK-NEXT: i32 2, label %label2
  53. i32 2, label %label2
  54. ]
  55. label1:
  56. ret i32 1
  57. label2:
  58. ret i32 2
  59. label3:
  60. ret i32 0
  61. }