Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 18.86 KB | None | 0 0
  1. ; ModuleID = 'AP_PlusPlus'
  2. source_filename = "AP_PlusPlus"
  3.  
  4. @fmt = private unnamed_addr constant [4 x i8] c"%d\0A\00"
  5. @fmt.1 = private unnamed_addr constant [4 x i8] c"%g\0A\00"
  6. @fmt.2 = private unnamed_addr constant [4 x i8] c"%s\0A\00"
  7. @fmt.3 = private unnamed_addr constant [4 x i8] c"%d\0A\00"
  8. @fmt.4 = private unnamed_addr constant [4 x i8] c"%g\0A\00"
  9. @fmt.5 = private unnamed_addr constant [4 x i8] c"%s\0A\00"
  10.  
  11. declare i32 @printf(i8*, ...)
  12.  
  13. define i1 @list_getbool({ i32, i1* }*, i32) {
  14. entry:
  15.   %list_ptr_alloc = alloca { i32, i1* }*
  16.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  17.   %idx_alloc = alloca i32
  18.   store i32 %1, i32* %idx_alloc
  19.   %list_load = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  20.   %list_array_ptr = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 1
  21.   %array_load = load i1*, i1** %list_array_ptr
  22.   %idx_load = load i32, i32* %idx_alloc
  23.   %list_arry_element_ptr = getelementptr i1, i1* %array_load, i32 %idx_load
  24.   %list_array_element_ptr = load i1, i1* %list_arry_element_ptr
  25.   ret i1 %list_array_element_ptr
  26. }
  27.  
  28. define i32 @list_getint({ i32, i32* }*, i32) {
  29. entry:
  30.   %list_ptr_alloc = alloca { i32, i32* }*
  31.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  32.   %idx_alloc = alloca i32
  33.   store i32 %1, i32* %idx_alloc
  34.   %list_load = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  35.   %list_array_ptr = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 1
  36.   %array_load = load i32*, i32** %list_array_ptr
  37.   %idx_load = load i32, i32* %idx_alloc
  38.   %list_arry_element_ptr = getelementptr i32, i32* %array_load, i32 %idx_load
  39.   %list_array_element_ptr = load i32, i32* %list_arry_element_ptr
  40.   ret i32 %list_array_element_ptr
  41. }
  42.  
  43. define double @list_getfloat({ i32, double* }*, i32) {
  44. entry:
  45.   %list_ptr_alloc = alloca { i32, double* }*
  46.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  47.   %idx_alloc = alloca i32
  48.   store i32 %1, i32* %idx_alloc
  49.   %list_load = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  50.   %list_array_ptr = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 1
  51.   %array_load = load double*, double** %list_array_ptr
  52.   %idx_load = load i32, i32* %idx_alloc
  53.   %list_arry_element_ptr = getelementptr double, double* %array_load, i32 %idx_load
  54.   %list_array_element_ptr = load double, double* %list_arry_element_ptr
  55.   ret double %list_array_element_ptr
  56. }
  57.  
  58. define void @list_setbool({ i32, i1* }*, i32, i1) {
  59. entry:
  60.   %list_ptr_alloc = alloca { i32, i1* }*
  61.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  62.   %list_load = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  63.   %list_array_ptr = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 1
  64.   %list_array_load = load i1*, i1** %list_array_ptr
  65.   %list_arry_next_element_ptr = getelementptr i1, i1* %list_array_load, i32 %1
  66.   store i1 %2, i1* %list_arry_next_element_ptr
  67.   ret void
  68. }
  69.  
  70. define void @list_setint({ i32, i32* }*, i32, i32) {
  71. entry:
  72.   %list_ptr_alloc = alloca { i32, i32* }*
  73.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  74.   %list_load = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  75.   %list_array_ptr = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 1
  76.   %list_array_load = load i32*, i32** %list_array_ptr
  77.   %list_arry_next_element_ptr = getelementptr i32, i32* %list_array_load, i32 %1
  78.   store i32 %2, i32* %list_arry_next_element_ptr
  79.   ret void
  80. }
  81.  
  82. define void @list_setfloat({ i32, double* }*, i32, double) {
  83. entry:
  84.   %list_ptr_alloc = alloca { i32, double* }*
  85.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  86.   %list_load = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  87.   %list_array_ptr = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 1
  88.   %list_array_load = load double*, double** %list_array_ptr
  89.   %list_arry_next_element_ptr = getelementptr double, double* %list_array_load, i32 %1
  90.   store double %2, double* %list_arry_next_element_ptr
  91.   ret void
  92. }
  93.  
  94. define void @list_pushbool({ i32, i1* }*, i1) {
  95. entry:
  96.   %list_ptr_alloc = alloca { i32, i1* }*
  97.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  98.   %val_alloc = alloca i1
  99.   store i1 %1, i1* %val_alloc
  100.   %list_load = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  101.   %list_array_ptr = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 1
  102.   %list_array_load = load i1*, i1** %list_array_ptr
  103.   %list_size = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 0
  104.   %list_size1 = load i32, i32* %list_size
  105.   %list_arry_next_element_ptr = getelementptr i1, i1* %list_array_load, i32 %list_size1
  106.   %inc_size = add i32 %list_size1, 1
  107.   store i32 %inc_size, i32* %list_size
  108.   %val = load i1, i1* %val_alloc
  109.   store i1 %val, i1* %list_arry_next_element_ptr
  110.   ret void
  111. }
  112.  
  113. define void @list_pushint({ i32, i32* }*, i32) {
  114. entry:
  115.   %list_ptr_alloc = alloca { i32, i32* }*
  116.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  117.   %val_alloc = alloca i32
  118.   store i32 %1, i32* %val_alloc
  119.   %list_load = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  120.   %list_array_ptr = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 1
  121.   %list_array_load = load i32*, i32** %list_array_ptr
  122.   %list_size = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 0
  123.   %list_size1 = load i32, i32* %list_size
  124.   %list_arry_next_element_ptr = getelementptr i32, i32* %list_array_load, i32 %list_size1
  125.   %inc_size = add i32 %list_size1, 1
  126.   store i32 %inc_size, i32* %list_size
  127.   %val = load i32, i32* %val_alloc
  128.   store i32 %val, i32* %list_arry_next_element_ptr
  129.   ret void
  130. }
  131.  
  132. define void @list_pushfloat({ i32, double* }*, double) {
  133. entry:
  134.   %list_ptr_alloc = alloca { i32, double* }*
  135.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  136.   %val_alloc = alloca double
  137.   store double %1, double* %val_alloc
  138.   %list_load = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  139.   %list_array_ptr = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 1
  140.   %list_array_load = load double*, double** %list_array_ptr
  141.   %list_size = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 0
  142.   %list_size1 = load i32, i32* %list_size
  143.   %list_arry_next_element_ptr = getelementptr double, double* %list_array_load, i32 %list_size1
  144.   %inc_size = add i32 %list_size1, 1
  145.   store i32 %inc_size, i32* %list_size
  146.   %val = load double, double* %val_alloc
  147.   store double %val, double* %list_arry_next_element_ptr
  148.   ret void
  149. }
  150.  
  151. define i1 @list_popbool({ i32, i1* }*) {
  152. entry:
  153.   %list_ptr_alloc = alloca { i32, i1* }*
  154.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  155.   %list_load = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  156.   %list_array_ptr = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 1
  157.   %list_array_load = load i1*, i1** %list_array_ptr
  158.   %list_size_ptr = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 0
  159.   %list_size = load i32, i32* %list_size_ptr
  160.   %dec_size = sub i32 %list_size, 1
  161.   %list_arry_next_element_ptr = getelementptr i1, i1* %list_array_load, i32 %dec_size
  162.   %list_arry_next_element = load i1, i1* %list_arry_next_element_ptr
  163.   store i32 %dec_size, i32* %list_size_ptr
  164.   ret i1 %list_arry_next_element
  165. }
  166.  
  167. define i32 @list_popint({ i32, i32* }*) {
  168. entry:
  169.   %list_ptr_alloc = alloca { i32, i32* }*
  170.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  171.   %list_load = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  172.   %list_array_ptr = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 1
  173.   %list_array_load = load i32*, i32** %list_array_ptr
  174.   %list_size_ptr = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 0
  175.   %list_size = load i32, i32* %list_size_ptr
  176.   %dec_size = sub i32 %list_size, 1
  177.   %list_arry_next_element_ptr = getelementptr i32, i32* %list_array_load, i32 %dec_size
  178.   %list_arry_next_element = load i32, i32* %list_arry_next_element_ptr
  179.   store i32 %dec_size, i32* %list_size_ptr
  180.   ret i32 %list_arry_next_element
  181. }
  182.  
  183. define double @list_popfloat({ i32, double* }*) {
  184. entry:
  185.   %list_ptr_alloc = alloca { i32, double* }*
  186.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  187.   %list_load = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  188.   %list_array_ptr = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 1
  189.   %list_array_load = load double*, double** %list_array_ptr
  190.   %list_size_ptr = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 0
  191.   %list_size = load i32, i32* %list_size_ptr
  192.   %dec_size = sub i32 %list_size, 1
  193.   %list_arry_next_element_ptr = getelementptr double, double* %list_array_load, i32 %dec_size
  194.   %list_arry_next_element = load double, double* %list_arry_next_element_ptr
  195.   store i32 %dec_size, i32* %list_size_ptr
  196.   ret double %list_arry_next_element
  197. }
  198.  
  199. define i32 @list_sizebool({ i32, i1* }*) {
  200. entry:
  201.   %list_ptr_alloc = alloca { i32, i1* }*
  202.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  203.   %list_load = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  204.   %list_size = getelementptr inbounds { i32, i1* }, { i32, i1* }* %list_load, i32 0, i32 0
  205.   %list_size1 = load i32, i32* %list_size
  206.   ret i32 %list_size1
  207. }
  208.  
  209. define i32 @list_sizeint({ i32, i32* }*) {
  210. entry:
  211.   %list_ptr_alloc = alloca { i32, i32* }*
  212.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  213.   %list_load = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  214.   %list_size = getelementptr inbounds { i32, i32* }, { i32, i32* }* %list_load, i32 0, i32 0
  215.   %list_size1 = load i32, i32* %list_size
  216.   ret i32 %list_size1
  217. }
  218.  
  219. define i32 @list_sizefloat({ i32, double* }*) {
  220. entry:
  221.   %list_ptr_alloc = alloca { i32, double* }*
  222.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  223.   %list_load = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  224.   %list_size = getelementptr inbounds { i32, double* }, { i32, double* }* %list_load, i32 0, i32 0
  225.   %list_size1 = load i32, i32* %list_size
  226.   ret i32 %list_size1
  227. }
  228.  
  229. define void @list_slicebool({ i32, i1* }*, { i32, i1* }*, i32, i32) {
  230. entry:
  231.   %list_ptr_alloc = alloca { i32, i1* }*
  232.   store { i32, i1* }* %0, { i32, i1* }** %list_ptr_alloc
  233.   %list_ptr_ptr = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc
  234.   %list_ptr_alloc2 = alloca { i32, i1* }*
  235.   store { i32, i1* }* %1, { i32, i1* }** %list_ptr_alloc2
  236.   %list_ptr_ptr2 = load { i32, i1* }*, { i32, i1* }** %list_ptr_alloc2
  237.   %idx_alloc = alloca i32
  238.   store i32 %2, i32* %idx_alloc
  239.   %idx_load = load i32, i32* %idx_alloc
  240.   %idx_alloc1 = alloca i32
  241.   store i32 %3, i32* %idx_alloc1
  242.   %idx_load2 = load i32, i32* %idx_alloc1
  243.   %loop_cnt = alloca i32
  244.   store i32 0, i32* %loop_cnt
  245.   %loop_upper_bound = sub i32 %idx_load2, %idx_load
  246.   br label %while
  247.  
  248. while:                                            ; preds = %while_body, %entry
  249.   %loop_cnt4 = load i32, i32* %loop_cnt
  250.   %loop_cond = icmp sle i32 %loop_cnt4, %loop_upper_bound
  251.   br i1 %loop_cond, label %while_body, label %merge
  252.  
  253. while_body:                                       ; preds = %while
  254.   %to_idx = load i32, i32* %loop_cnt
  255.   %from_idx = add i32 %to_idx, %idx_load
  256.   %list_get = call i1 @list_getbool({ i32, i1* }* %list_ptr_ptr, i32 %from_idx)
  257.   call void @list_setbool({ i32, i1* }* %list_ptr_ptr2, i32 %to_idx, i1 %list_get)
  258.   %loop_cnt3 = load i32, i32* %loop_cnt
  259.   %loop_itr = add i32 %loop_cnt3, 1
  260.   store i32 %loop_itr, i32* %loop_cnt
  261.   br label %while
  262.  
  263. merge:                                            ; preds = %while
  264.   ret void
  265. }
  266.  
  267. define void @list_sliceint({ i32, i32* }*, { i32, i32* }*, i32, i32) {
  268. entry:
  269.   %list_ptr_alloc = alloca { i32, i32* }*
  270.   store { i32, i32* }* %0, { i32, i32* }** %list_ptr_alloc
  271.   %list_ptr_ptr = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc
  272.   %list_ptr_alloc2 = alloca { i32, i32* }*
  273.   store { i32, i32* }* %1, { i32, i32* }** %list_ptr_alloc2
  274.   %list_ptr_ptr2 = load { i32, i32* }*, { i32, i32* }** %list_ptr_alloc2
  275.   %idx_alloc = alloca i32
  276.   store i32 %2, i32* %idx_alloc
  277.   %idx_load = load i32, i32* %idx_alloc
  278.   %idx_alloc1 = alloca i32
  279.   store i32 %3, i32* %idx_alloc1
  280.   %idx_load2 = load i32, i32* %idx_alloc1
  281.   %loop_cnt = alloca i32
  282.   store i32 0, i32* %loop_cnt
  283.   %loop_upper_bound = sub i32 %idx_load2, %idx_load
  284.   br label %while
  285.  
  286. while:                                            ; preds = %while_body, %entry
  287.   %loop_cnt4 = load i32, i32* %loop_cnt
  288.   %loop_cond = icmp sle i32 %loop_cnt4, %loop_upper_bound
  289.   br i1 %loop_cond, label %while_body, label %merge
  290.  
  291. while_body:                                       ; preds = %while
  292.   %to_idx = load i32, i32* %loop_cnt
  293.   %from_idx = add i32 %to_idx, %idx_load
  294.   %list_get = call i32 @list_getint({ i32, i32* }* %list_ptr_ptr, i32 %from_idx)
  295.   call void @list_setint({ i32, i32* }* %list_ptr_ptr2, i32 %to_idx, i32 %list_get)
  296.   %loop_cnt3 = load i32, i32* %loop_cnt
  297.   %loop_itr = add i32 %loop_cnt3, 1
  298.   store i32 %loop_itr, i32* %loop_cnt
  299.   br label %while
  300.  
  301. merge:                                            ; preds = %while
  302.   ret void
  303. }
  304.  
  305. define void @list_slicefloat({ i32, double* }*, { i32, double* }*, i32, i32) {
  306. entry:
  307.   %list_ptr_alloc = alloca { i32, double* }*
  308.   store { i32, double* }* %0, { i32, double* }** %list_ptr_alloc
  309.   %list_ptr_ptr = load { i32, double* }*, { i32, double* }** %list_ptr_alloc
  310.   %list_ptr_alloc2 = alloca { i32, double* }*
  311.   store { i32, double* }* %1, { i32, double* }** %list_ptr_alloc2
  312.   %list_ptr_ptr2 = load { i32, double* }*, { i32, double* }** %list_ptr_alloc2
  313.   %idx_alloc = alloca i32
  314.   store i32 %2, i32* %idx_alloc
  315.   %idx_load = load i32, i32* %idx_alloc
  316.   %idx_alloc1 = alloca i32
  317.   store i32 %3, i32* %idx_alloc1
  318.   %idx_load2 = load i32, i32* %idx_alloc1
  319.   %loop_cnt = alloca i32
  320.   store i32 0, i32* %loop_cnt
  321.   %loop_upper_bound = sub i32 %idx_load2, %idx_load
  322.   br label %while
  323.  
  324. while:                                            ; preds = %while_body, %entry
  325.   %loop_cnt4 = load i32, i32* %loop_cnt
  326.   %loop_cond = icmp sle i32 %loop_cnt4, %loop_upper_bound
  327.   br i1 %loop_cond, label %while_body, label %merge
  328.  
  329. while_body:                                       ; preds = %while
  330.   %to_idx = load i32, i32* %loop_cnt
  331.   %from_idx = add i32 %to_idx, %idx_load
  332.   %list_get = call double @list_getfloat({ i32, double* }* %list_ptr_ptr, i32 %from_idx)
  333.   call void @list_setfloat({ i32, double* }* %list_ptr_ptr2, i32 %to_idx, double %list_get)
  334.   %loop_cnt3 = load i32, i32* %loop_cnt
  335.   %loop_itr = add i32 %loop_cnt3, 1
  336.   store i32 %loop_itr, i32* %loop_cnt
  337.   br label %while
  338.  
  339. merge:                                            ; preds = %while
  340.   ret void
  341. }
  342.  
  343. define i32 @main() {
  344. entry:
  345.   %a = alloca { i32, i32* }
  346.   %list.size = getelementptr inbounds { i32, i32* }, { i32, i32* }* %a, i32 0, i32 0
  347.   %tmp = alloca i32
  348.   store i32 0, i32* %tmp
  349.   %tmp1 = load i32, i32* %tmp
  350.   store i32 %tmp1, i32* %list.size
  351.   %list.arry = getelementptr inbounds { i32, i32* }, { i32, i32* }* %a, i32 0, i32 1
  352.   %p = alloca i32, i32 1000
  353.   store i32* %p, i32** %list.arry
  354.   %b = alloca { i32, i32* }
  355.   %list.size2 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %b, i32 0, i32 0
  356.   %tmp3 = alloca i32
  357.   store i32 0, i32* %tmp3
  358.   %tmp4 = load i32, i32* %tmp3
  359.   store i32 %tmp4, i32* %list.size2
  360.   %list.arry5 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %b, i32 0, i32 1
  361.   %p6 = alloca i32, i32 1000
  362.   store i32* %p6, i32** %list.arry5
  363.   %i = alloca i32
  364.   store i32 0, i32* %i
  365.   br label %while
  366.  
  367. while:                                            ; preds = %while_body, %entry
  368.   %i11 = load i32, i32* %i
  369.   %tmp12 = icmp slt i32 %i11, 10
  370.   br i1 %tmp12, label %while_body, label %merge
  371.  
  372. while_body:                                       ; preds = %while
  373.   %i7 = load i32, i32* %i
  374.   %tmp8 = mul i32 %i7, 10
  375.   call void @list_pushint({ i32, i32* }* %a, i32 %tmp8)
  376.   %i9 = load i32, i32* %i
  377.   %tmp10 = add i32 %i9, 1
  378.   store i32 %tmp10, i32* %i
  379.   br label %while
  380.  
  381. merge:                                            ; preds = %while
  382.   %new_list_ptr = alloca { i32, i32* }
  383.   %list.size13 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %new_list_ptr, i32 0, i32 0
  384.   %tmp14 = alloca i32
  385.   store i32 0, i32* %tmp14
  386.   %tmp15 = load i32, i32* %tmp14
  387.   store i32 %tmp15, i32* %list.size13
  388.   %list.arry16 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %new_list_ptr, i32 0, i32 1
  389.   %p17 = alloca i32, i32 1000
  390.   store i32* %p17, i32** %list.arry16
  391.   call void @list_sliceint({ i32, i32* }* %a, { i32, i32* }* %new_list_ptr, i32 3, i32 6)
  392.   %new_list = load { i32, i32* }, { i32, i32* }* %new_list_ptr
  393.   store { i32, i32* } %new_list, { i32, i32* }* %b
  394.   %list_get = call i32 @list_getint({ i32, i32* }* %b, i32 3)
  395.   %printf = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @fmt, i32 0, i32 0), i32 %list_get)
  396.   %new_list_ptr18 = alloca { i32, i32* }
  397.   %list.size19 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %new_list_ptr18, i32 0, i32 0
  398.   %tmp20 = alloca i32
  399.   store i32 0, i32* %tmp20
  400.   %tmp21 = load i32, i32* %tmp20
  401.   store i32 %tmp21, i32* %list.size19
  402.   %list.arry22 = getelementptr inbounds { i32, i32* }, { i32, i32* }* %new_list_ptr18, i32 0, i32 1
  403.   %p23 = alloca i32, i32 1000
  404.   store i32* %p23, i32** %list.arry22
  405.   call void @list_sliceint({ i32, i32* }* %a, { i32, i32* }* %new_list_ptr18, i32 1, i32 4)
  406.   %new_list24 = load { i32, i32* }, { i32, i32* }* %new_list_ptr18
  407.   store { i32, i32* } %new_list24, { i32, i32* }* %b
  408.   %list_get25 = call i32 @list_getint({ i32, i32* }* %b, i32 3)
  409.   %printf26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @fmt, i32 0, i32 0), i32 %list_get25)
  410.   %list_size = call i32 @list_sizeint({ i32, i32* }* %b)
  411.   %printf27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @fmt, i32 0, i32 0), i32 %list_size)
  412.   ret i32 0
  413. }
  414.  
  415. define void @print_test({ i32, i32* } %l, i32 %idx) {
  416. entry:
  417.   %l1 = alloca { i32, i32* }
  418.   %list.size = getelementptr inbounds { i32, i32* }, { i32, i32* }* %l1, i32 0, i32 0
  419.   %tmp = alloca i32
  420.   store i32 0, i32* %tmp
  421.   %tmp2 = load i32, i32* %tmp
  422.   store i32 %tmp2, i32* %list.size
  423.   %list.arry = getelementptr inbounds { i32, i32* }, { i32, i32* }* %l1, i32 0, i32 1
  424.   %p = alloca i32, i32 1000
  425.   store i32* %p, i32** %list.arry
  426.   store { i32, i32* } %l, { i32, i32* }* %l1
  427.   %idx3 = alloca i32
  428.   store i32 %idx, i32* %idx3
  429.   %idx4 = load i32, i32* %idx3
  430.   %list_get = call i32 @list_getint({ i32, i32* }* %l1, i32 %idx4)
  431.   %printf = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @fmt.3, i32 0, i32 0), i32 %list_get)
  432.   %list_size = call i32 @list_sizeint({ i32, i32* }* %l1)
  433.   %printf5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @fmt.3, i32 0, i32 0), i32 %list_size)
  434.   ret void
  435. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement