Advertisement
Guest User

example.ll

a guest
Nov 2nd, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 23.86 KB | None | 0 0
  1. ; ModuleID = 'example.bc'
  2. target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
  3. target triple = "mips--linux-gnu"
  4.  
  5. @str = private unnamed_addr constant [56 x i8] c"This function exists just to examine inlining behaviour\00"
  6.  
  7. ; Function Attrs: nounwind
  8. define void @main_loop(i32 signext %len, i8* noalias nocapture readonly %input_buf, i8* noalias nocapture %output_buf) #0 {
  9.   %1 = icmp sgt i32 %len, 0
  10.   br i1 %1, label %.lr.ph.preheader, label %._crit_edge
  11.  
  12. .lr.ph.preheader:                                 ; preds = %0
  13.   %2 = add i32 %len, -1
  14.   %xtraiter = and i32 %len, 7
  15.   %lcmp.mod = icmp eq i32 %xtraiter, 0
  16.   br i1 %lcmp.mod, label %.lr.ph.preheader.split, label %.lr.ph.prol.preheader
  17.  
  18. .lr.ph.prol.preheader:                            ; preds = %.lr.ph.preheader
  19.   br label %.lr.ph.prol
  20.  
  21. .lr.ph.prol:                                      ; preds = %.lr.ph.prol.preheader, %.lr.ph.prol
  22.   %.04.prol = phi i8* [ %7, %.lr.ph.prol ], [ %input_buf, %.lr.ph.prol.preheader ]
  23.   %.013.prol = phi i8* [ %20, %.lr.ph.prol ], [ %output_buf, %.lr.ph.prol.preheader ]
  24.   %i.02.prol = phi i32 [ %21, %.lr.ph.prol ], [ 0, %.lr.ph.prol.preheader ]
  25.   %prol.iter = phi i32 [ %prol.iter.sub, %.lr.ph.prol ], [ %xtraiter, %.lr.ph.prol.preheader ]
  26.   %3 = getelementptr inbounds i8, i8* %.04.prol, i32 1
  27.   %4 = load i8, i8* %.04.prol, align 1, !tbaa !1
  28.   %5 = getelementptr inbounds i8, i8* %.04.prol, i32 2
  29.   %6 = load i8, i8* %3, align 1, !tbaa !1
  30.   %7 = getelementptr inbounds i8, i8* %.04.prol, i32 3
  31.   %8 = load i8, i8* %5, align 1, !tbaa !1
  32.   %9 = zext i8 %4 to i32
  33.   %10 = add nuw nsw i32 %9, 246
  34.   %11 = trunc i32 %10 to i8
  35.   %12 = zext i8 %6 to i32
  36.   %13 = add nuw nsw i32 %12, 236
  37.   %14 = trunc i32 %13 to i8
  38.   %15 = zext i8 %8 to i32
  39.   %16 = add nuw nsw i32 %15, 226
  40.   %17 = trunc i32 %16 to i8
  41.   %18 = getelementptr inbounds i8, i8* %.013.prol, i32 1
  42.   store i8 %11, i8* %.013.prol, align 1, !tbaa !1
  43.   %19 = getelementptr inbounds i8, i8* %.013.prol, i32 2
  44.   store i8 %14, i8* %18, align 1, !tbaa !1
  45.   %20 = getelementptr inbounds i8, i8* %.013.prol, i32 3
  46.   store i8 %17, i8* %19, align 1, !tbaa !1
  47.   %21 = add nuw nsw i32 %i.02.prol, 1
  48.   %prol.iter.sub = add i32 %prol.iter, -1
  49.   %prol.iter.cmp = icmp eq i32 %prol.iter.sub, 0
  50.   br i1 %prol.iter.cmp, label %.lr.ph.preheader.split.loopexit, label %.lr.ph.prol, !llvm.loop !4
  51.  
  52. .lr.ph.preheader.split.loopexit:                  ; preds = %.lr.ph.prol
  53.   %.lcssa15 = phi i32 [ %21, %.lr.ph.prol ]
  54.   %.lcssa14 = phi i8* [ %20, %.lr.ph.prol ]
  55.   %.lcssa = phi i8* [ %7, %.lr.ph.prol ]
  56.   br label %.lr.ph.preheader.split
  57.  
  58. .lr.ph.preheader.split:                           ; preds = %.lr.ph.preheader.split.loopexit, %.lr.ph.preheader
  59.   %.04.unr = phi i8* [ %input_buf, %.lr.ph.preheader ], [ %.lcssa, %.lr.ph.preheader.split.loopexit ]
  60.   %.013.unr = phi i8* [ %output_buf, %.lr.ph.preheader ], [ %.lcssa14, %.lr.ph.preheader.split.loopexit ]
  61.   %i.02.unr = phi i32 [ 0, %.lr.ph.preheader ], [ %.lcssa15, %.lr.ph.preheader.split.loopexit ]
  62.   %22 = icmp ult i32 %2, 7
  63.   br i1 %22, label %._crit_edge, label %.lr.ph.preheader11
  64.  
  65. .lr.ph.preheader11:                               ; preds = %.lr.ph.preheader.split
  66.   br label %.lr.ph
  67.  
  68. .lr.ph:                                           ; preds = %.lr.ph.preheader11, %.lr.ph
  69.   %.04 = phi i8* [ %153, %.lr.ph ], [ %.04.unr, %.lr.ph.preheader11 ]
  70.   %.013 = phi i8* [ %166, %.lr.ph ], [ %.013.unr, %.lr.ph.preheader11 ]
  71.   %i.02 = phi i32 [ %167, %.lr.ph ], [ %i.02.unr, %.lr.ph.preheader11 ]
  72.   %23 = getelementptr inbounds i8, i8* %.04, i32 1
  73.   %24 = load i8, i8* %.04, align 1, !tbaa !1
  74.   %25 = getelementptr inbounds i8, i8* %.04, i32 2
  75.   %26 = load i8, i8* %23, align 1, !tbaa !1
  76.   %27 = getelementptr inbounds i8, i8* %.04, i32 3
  77.   %28 = load i8, i8* %25, align 1, !tbaa !1
  78.   %29 = zext i8 %24 to i32
  79.   %30 = add nuw nsw i32 %29, 246
  80.   %31 = trunc i32 %30 to i8
  81.   %32 = zext i8 %26 to i32
  82.   %33 = add nuw nsw i32 %32, 236
  83.   %34 = trunc i32 %33 to i8
  84.   %35 = zext i8 %28 to i32
  85.   %36 = add nuw nsw i32 %35, 226
  86.   %37 = trunc i32 %36 to i8
  87.   %38 = getelementptr inbounds i8, i8* %.013, i32 1
  88.   store i8 %31, i8* %.013, align 1, !tbaa !1
  89.   %39 = getelementptr inbounds i8, i8* %.013, i32 2
  90.   store i8 %34, i8* %38, align 1, !tbaa !1
  91.   %40 = getelementptr inbounds i8, i8* %.013, i32 3
  92.   store i8 %37, i8* %39, align 1, !tbaa !1
  93.   %41 = getelementptr inbounds i8, i8* %.04, i32 4
  94.   %42 = load i8, i8* %27, align 1, !tbaa !1
  95.   %43 = getelementptr inbounds i8, i8* %.04, i32 5
  96.   %44 = load i8, i8* %41, align 1, !tbaa !1
  97.   %45 = getelementptr inbounds i8, i8* %.04, i32 6
  98.   %46 = load i8, i8* %43, align 1, !tbaa !1
  99.   %47 = zext i8 %42 to i32
  100.   %48 = add nuw nsw i32 %47, 246
  101.   %49 = trunc i32 %48 to i8
  102.   %50 = zext i8 %44 to i32
  103.   %51 = add nuw nsw i32 %50, 236
  104.   %52 = trunc i32 %51 to i8
  105.   %53 = zext i8 %46 to i32
  106.   %54 = add nuw nsw i32 %53, 226
  107.   %55 = trunc i32 %54 to i8
  108.   %56 = getelementptr inbounds i8, i8* %.013, i32 4
  109.   store i8 %49, i8* %40, align 1, !tbaa !1
  110.   %57 = getelementptr inbounds i8, i8* %.013, i32 5
  111.   store i8 %52, i8* %56, align 1, !tbaa !1
  112.   %58 = getelementptr inbounds i8, i8* %.013, i32 6
  113.   store i8 %55, i8* %57, align 1, !tbaa !1
  114.   %59 = getelementptr inbounds i8, i8* %.04, i32 7
  115.   %60 = load i8, i8* %45, align 1, !tbaa !1
  116.   %61 = getelementptr inbounds i8, i8* %.04, i32 8
  117.   %62 = load i8, i8* %59, align 1, !tbaa !1
  118.   %63 = getelementptr inbounds i8, i8* %.04, i32 9
  119.   %64 = load i8, i8* %61, align 1, !tbaa !1
  120.   %65 = zext i8 %60 to i32
  121.   %66 = add nuw nsw i32 %65, 246
  122.   %67 = trunc i32 %66 to i8
  123.   %68 = zext i8 %62 to i32
  124.   %69 = add nuw nsw i32 %68, 236
  125.   %70 = trunc i32 %69 to i8
  126.   %71 = zext i8 %64 to i32
  127.   %72 = add nuw nsw i32 %71, 226
  128.   %73 = trunc i32 %72 to i8
  129.   %74 = getelementptr inbounds i8, i8* %.013, i32 7
  130.   store i8 %67, i8* %58, align 1, !tbaa !1
  131.   %75 = getelementptr inbounds i8, i8* %.013, i32 8
  132.   store i8 %70, i8* %74, align 1, !tbaa !1
  133.   %76 = getelementptr inbounds i8, i8* %.013, i32 9
  134.   store i8 %73, i8* %75, align 1, !tbaa !1
  135.   %77 = getelementptr inbounds i8, i8* %.04, i32 10
  136.   %78 = load i8, i8* %63, align 1, !tbaa !1
  137.   %79 = getelementptr inbounds i8, i8* %.04, i32 11
  138.   %80 = load i8, i8* %77, align 1, !tbaa !1
  139.   %81 = getelementptr inbounds i8, i8* %.04, i32 12
  140.   %82 = load i8, i8* %79, align 1, !tbaa !1
  141.   %83 = zext i8 %78 to i32
  142.   %84 = add nuw nsw i32 %83, 246
  143.   %85 = trunc i32 %84 to i8
  144.   %86 = zext i8 %80 to i32
  145.   %87 = add nuw nsw i32 %86, 236
  146.   %88 = trunc i32 %87 to i8
  147.   %89 = zext i8 %82 to i32
  148.   %90 = add nuw nsw i32 %89, 226
  149.   %91 = trunc i32 %90 to i8
  150.   %92 = getelementptr inbounds i8, i8* %.013, i32 10
  151.   store i8 %85, i8* %76, align 1, !tbaa !1
  152.   %93 = getelementptr inbounds i8, i8* %.013, i32 11
  153.   store i8 %88, i8* %92, align 1, !tbaa !1
  154.   %94 = getelementptr inbounds i8, i8* %.013, i32 12
  155.   store i8 %91, i8* %93, align 1, !tbaa !1
  156.   %95 = getelementptr inbounds i8, i8* %.04, i32 13
  157.   %96 = load i8, i8* %81, align 1, !tbaa !1
  158.   %97 = getelementptr inbounds i8, i8* %.04, i32 14
  159.   %98 = load i8, i8* %95, align 1, !tbaa !1
  160.   %99 = getelementptr inbounds i8, i8* %.04, i32 15
  161.   %100 = load i8, i8* %97, align 1, !tbaa !1
  162.   %101 = zext i8 %96 to i32
  163.   %102 = add nuw nsw i32 %101, 246
  164.   %103 = trunc i32 %102 to i8
  165.   %104 = zext i8 %98 to i32
  166.   %105 = add nuw nsw i32 %104, 236
  167.   %106 = trunc i32 %105 to i8
  168.   %107 = zext i8 %100 to i32
  169.   %108 = add nuw nsw i32 %107, 226
  170.   %109 = trunc i32 %108 to i8
  171.   %110 = getelementptr inbounds i8, i8* %.013, i32 13
  172.   store i8 %103, i8* %94, align 1, !tbaa !1
  173.   %111 = getelementptr inbounds i8, i8* %.013, i32 14
  174.   store i8 %106, i8* %110, align 1, !tbaa !1
  175.   %112 = getelementptr inbounds i8, i8* %.013, i32 15
  176.   store i8 %109, i8* %111, align 1, !tbaa !1
  177.   %113 = getelementptr inbounds i8, i8* %.04, i32 16
  178.   %114 = load i8, i8* %99, align 1, !tbaa !1
  179.   %115 = getelementptr inbounds i8, i8* %.04, i32 17
  180.   %116 = load i8, i8* %113, align 1, !tbaa !1
  181.   %117 = getelementptr inbounds i8, i8* %.04, i32 18
  182.   %118 = load i8, i8* %115, align 1, !tbaa !1
  183.   %119 = zext i8 %114 to i32
  184.   %120 = add nuw nsw i32 %119, 246
  185.   %121 = trunc i32 %120 to i8
  186.   %122 = zext i8 %116 to i32
  187.   %123 = add nuw nsw i32 %122, 236
  188.   %124 = trunc i32 %123 to i8
  189.   %125 = zext i8 %118 to i32
  190.   %126 = add nuw nsw i32 %125, 226
  191.   %127 = trunc i32 %126 to i8
  192.   %128 = getelementptr inbounds i8, i8* %.013, i32 16
  193.   store i8 %121, i8* %112, align 1, !tbaa !1
  194.   %129 = getelementptr inbounds i8, i8* %.013, i32 17
  195.   store i8 %124, i8* %128, align 1, !tbaa !1
  196.   %130 = getelementptr inbounds i8, i8* %.013, i32 18
  197.   store i8 %127, i8* %129, align 1, !tbaa !1
  198.   %131 = getelementptr inbounds i8, i8* %.04, i32 19
  199.   %132 = load i8, i8* %117, align 1, !tbaa !1
  200.   %133 = getelementptr inbounds i8, i8* %.04, i32 20
  201.   %134 = load i8, i8* %131, align 1, !tbaa !1
  202.   %135 = getelementptr inbounds i8, i8* %.04, i32 21
  203.   %136 = load i8, i8* %133, align 1, !tbaa !1
  204.   %137 = zext i8 %132 to i32
  205.   %138 = add nuw nsw i32 %137, 246
  206.   %139 = trunc i32 %138 to i8
  207.   %140 = zext i8 %134 to i32
  208.   %141 = add nuw nsw i32 %140, 236
  209.   %142 = trunc i32 %141 to i8
  210.   %143 = zext i8 %136 to i32
  211.   %144 = add nuw nsw i32 %143, 226
  212.   %145 = trunc i32 %144 to i8
  213.   %146 = getelementptr inbounds i8, i8* %.013, i32 19
  214.   store i8 %139, i8* %130, align 1, !tbaa !1
  215.   %147 = getelementptr inbounds i8, i8* %.013, i32 20
  216.   store i8 %142, i8* %146, align 1, !tbaa !1
  217.   %148 = getelementptr inbounds i8, i8* %.013, i32 21
  218.   store i8 %145, i8* %147, align 1, !tbaa !1
  219.   %149 = getelementptr inbounds i8, i8* %.04, i32 22
  220.   %150 = load i8, i8* %135, align 1, !tbaa !1
  221.   %151 = getelementptr inbounds i8, i8* %.04, i32 23
  222.   %152 = load i8, i8* %149, align 1, !tbaa !1
  223.   %153 = getelementptr inbounds i8, i8* %.04, i32 24
  224.   %154 = load i8, i8* %151, align 1, !tbaa !1
  225.   %155 = zext i8 %150 to i32
  226.   %156 = add nuw nsw i32 %155, 246
  227.   %157 = trunc i32 %156 to i8
  228.   %158 = zext i8 %152 to i32
  229.   %159 = add nuw nsw i32 %158, 236
  230.   %160 = trunc i32 %159 to i8
  231.   %161 = zext i8 %154 to i32
  232.   %162 = add nuw nsw i32 %161, 226
  233.   %163 = trunc i32 %162 to i8
  234.   %164 = getelementptr inbounds i8, i8* %.013, i32 22
  235.   store i8 %157, i8* %148, align 1, !tbaa !1
  236.   %165 = getelementptr inbounds i8, i8* %.013, i32 23
  237.   store i8 %160, i8* %164, align 1, !tbaa !1
  238.   %166 = getelementptr inbounds i8, i8* %.013, i32 24
  239.   store i8 %163, i8* %165, align 1, !tbaa !1
  240.   %167 = add nsw i32 %i.02, 8
  241.   %exitcond.7 = icmp eq i32 %167, %len
  242.   br i1 %exitcond.7, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !6
  243.  
  244. ._crit_edge.loopexit:                             ; preds = %.lr.ph
  245.   br label %._crit_edge
  246.  
  247. ._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph.preheader.split, %0
  248.   ret void
  249. }
  250.  
  251. ; Function Attrs: nounwind
  252. define void @dummy_function(i32 signext %len, i8* readonly %input_buf, i8* %output_buf) #0 {
  253.   %puts = tail call i32 @puts(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @str, i32 0, i32 0))
  254.   %1 = icmp sgt i32 %len, 0
  255.   br i1 %1, label %.lr.ph.preheader.i, label %main_loop.exit
  256.  
  257. .lr.ph.preheader.i:                               ; preds = %0
  258.   %2 = add i32 %len, -1
  259.   %xtraiter.i = and i32 %len, 7
  260.   %lcmp.mod.i = icmp eq i32 %xtraiter.i, 0
  261.   br i1 %lcmp.mod.i, label %.lr.ph.preheader.split.i, label %.lr.ph.prol.i.preheader
  262.  
  263. .lr.ph.prol.i.preheader:                          ; preds = %.lr.ph.preheader.i
  264.   %3 = and i32 %len, 7
  265.   %4 = mul nuw nsw i32 %3, 3
  266.   %scevgep = getelementptr i8, i8* %output_buf, i32 %4
  267.   br label %.lr.ph.prol.i
  268.  
  269. .lr.ph.prol.i:                                    ; preds = %.lr.ph.prol.i.preheader, %.lr.ph.prol.i
  270.   %.04.prol.i = phi i8* [ %9, %.lr.ph.prol.i ], [ %input_buf, %.lr.ph.prol.i.preheader ]
  271.   %.013.prol.i = phi i8* [ %22, %.lr.ph.prol.i ], [ %output_buf, %.lr.ph.prol.i.preheader ]
  272.   %prol.iter.i = phi i32 [ %prol.iter.sub.i, %.lr.ph.prol.i ], [ %xtraiter.i, %.lr.ph.prol.i.preheader ]
  273.   %5 = getelementptr inbounds i8, i8* %.04.prol.i, i32 1
  274.   %6 = load i8, i8* %.04.prol.i, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  275.   %7 = getelementptr inbounds i8, i8* %.04.prol.i, i32 2
  276.   %8 = load i8, i8* %5, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  277.   %9 = getelementptr inbounds i8, i8* %.04.prol.i, i32 3
  278.   %10 = load i8, i8* %7, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  279.   %11 = zext i8 %6 to i32
  280.   %12 = add nuw nsw i32 %11, 246
  281.   %13 = trunc i32 %12 to i8
  282.   %14 = zext i8 %8 to i32
  283.   %15 = add nuw nsw i32 %14, 236
  284.   %16 = trunc i32 %15 to i8
  285.   %17 = zext i8 %10 to i32
  286.   %18 = add nuw nsw i32 %17, 226
  287.   %19 = trunc i32 %18 to i8
  288.   %20 = getelementptr inbounds i8, i8* %.013.prol.i, i32 1
  289.   store i8 %13, i8* %.013.prol.i, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  290.   %21 = getelementptr inbounds i8, i8* %.013.prol.i, i32 2
  291.   store i8 %16, i8* %20, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  292.   %22 = getelementptr inbounds i8, i8* %.013.prol.i, i32 3
  293.   store i8 %19, i8* %21, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  294.   %prol.iter.sub.i = add i32 %prol.iter.i, -1
  295.   %prol.iter.cmp.i = icmp eq i32 %prol.iter.sub.i, 0
  296.   br i1 %prol.iter.cmp.i, label %.lr.ph.preheader.split.i.loopexit, label %.lr.ph.prol.i, !llvm.loop !4
  297.  
  298. .lr.ph.preheader.split.i.loopexit:                ; preds = %.lr.ph.prol.i
  299.   %scevgep5 = getelementptr i8, i8* %input_buf, i32 %4
  300.   br label %.lr.ph.preheader.split.i
  301.  
  302. .lr.ph.preheader.split.i:                         ; preds = %.lr.ph.preheader.split.i.loopexit, %.lr.ph.preheader.i
  303.   %.04.unr.i = phi i8* [ %input_buf, %.lr.ph.preheader.i ], [ %scevgep5, %.lr.ph.preheader.split.i.loopexit ]
  304.   %.013.unr.i = phi i8* [ %output_buf, %.lr.ph.preheader.i ], [ %scevgep, %.lr.ph.preheader.split.i.loopexit ]
  305.   %i.02.unr.i = phi i32 [ 0, %.lr.ph.preheader.i ], [ %3, %.lr.ph.preheader.split.i.loopexit ]
  306.   %23 = icmp ult i32 %2, 7
  307.   br i1 %23, label %main_loop.exit, label %.lr.ph.i.preheader
  308.  
  309. .lr.ph.i.preheader:                               ; preds = %.lr.ph.preheader.split.i
  310.   br label %.lr.ph.i
  311.  
  312. .lr.ph.i:                                         ; preds = %.lr.ph.i.preheader, %.lr.ph.i
  313.   %.04.i = phi i8* [ %154, %.lr.ph.i ], [ %.04.unr.i, %.lr.ph.i.preheader ]
  314.   %.013.i = phi i8* [ %167, %.lr.ph.i ], [ %.013.unr.i, %.lr.ph.i.preheader ]
  315.   %i.02.i = phi i32 [ %168, %.lr.ph.i ], [ %i.02.unr.i, %.lr.ph.i.preheader ]
  316.   %24 = getelementptr inbounds i8, i8* %.04.i, i32 1
  317.   %25 = load i8, i8* %.04.i, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  318.   %26 = getelementptr inbounds i8, i8* %.04.i, i32 2
  319.   %27 = load i8, i8* %24, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  320.   %28 = getelementptr inbounds i8, i8* %.04.i, i32 3
  321.   %29 = load i8, i8* %26, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  322.   %30 = zext i8 %25 to i32
  323.   %31 = add nuw nsw i32 %30, 246
  324.   %32 = trunc i32 %31 to i8
  325.   %33 = zext i8 %27 to i32
  326.   %34 = add nuw nsw i32 %33, 236
  327.   %35 = trunc i32 %34 to i8
  328.   %36 = zext i8 %29 to i32
  329.   %37 = add nuw nsw i32 %36, 226
  330.   %38 = trunc i32 %37 to i8
  331.   %39 = getelementptr inbounds i8, i8* %.013.i, i32 1
  332.   store i8 %32, i8* %.013.i, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  333.   %40 = getelementptr inbounds i8, i8* %.013.i, i32 2
  334.   store i8 %35, i8* %39, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  335.   %41 = getelementptr inbounds i8, i8* %.013.i, i32 3
  336.   store i8 %38, i8* %40, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  337.   %42 = getelementptr inbounds i8, i8* %.04.i, i32 4
  338.   %43 = load i8, i8* %28, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  339.   %44 = getelementptr inbounds i8, i8* %.04.i, i32 5
  340.   %45 = load i8, i8* %42, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  341.   %46 = getelementptr inbounds i8, i8* %.04.i, i32 6
  342.   %47 = load i8, i8* %44, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  343.   %48 = zext i8 %43 to i32
  344.   %49 = add nuw nsw i32 %48, 246
  345.   %50 = trunc i32 %49 to i8
  346.   %51 = zext i8 %45 to i32
  347.   %52 = add nuw nsw i32 %51, 236
  348.   %53 = trunc i32 %52 to i8
  349.   %54 = zext i8 %47 to i32
  350.   %55 = add nuw nsw i32 %54, 226
  351.   %56 = trunc i32 %55 to i8
  352.   %57 = getelementptr inbounds i8, i8* %.013.i, i32 4
  353.   store i8 %50, i8* %41, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  354.   %58 = getelementptr inbounds i8, i8* %.013.i, i32 5
  355.   store i8 %53, i8* %57, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  356.   %59 = getelementptr inbounds i8, i8* %.013.i, i32 6
  357.   store i8 %56, i8* %58, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  358.   %60 = getelementptr inbounds i8, i8* %.04.i, i32 7
  359.   %61 = load i8, i8* %46, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  360.   %62 = getelementptr inbounds i8, i8* %.04.i, i32 8
  361.   %63 = load i8, i8* %60, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  362.   %64 = getelementptr inbounds i8, i8* %.04.i, i32 9
  363.   %65 = load i8, i8* %62, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  364.   %66 = zext i8 %61 to i32
  365.   %67 = add nuw nsw i32 %66, 246
  366.   %68 = trunc i32 %67 to i8
  367.   %69 = zext i8 %63 to i32
  368.   %70 = add nuw nsw i32 %69, 236
  369.   %71 = trunc i32 %70 to i8
  370.   %72 = zext i8 %65 to i32
  371.   %73 = add nuw nsw i32 %72, 226
  372.   %74 = trunc i32 %73 to i8
  373.   %75 = getelementptr inbounds i8, i8* %.013.i, i32 7
  374.   store i8 %68, i8* %59, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  375.   %76 = getelementptr inbounds i8, i8* %.013.i, i32 8
  376.   store i8 %71, i8* %75, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  377.   %77 = getelementptr inbounds i8, i8* %.013.i, i32 9
  378.   store i8 %74, i8* %76, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  379.   %78 = getelementptr inbounds i8, i8* %.04.i, i32 10
  380.   %79 = load i8, i8* %64, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  381.   %80 = getelementptr inbounds i8, i8* %.04.i, i32 11
  382.   %81 = load i8, i8* %78, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  383.   %82 = getelementptr inbounds i8, i8* %.04.i, i32 12
  384.   %83 = load i8, i8* %80, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  385.   %84 = zext i8 %79 to i32
  386.   %85 = add nuw nsw i32 %84, 246
  387.   %86 = trunc i32 %85 to i8
  388.   %87 = zext i8 %81 to i32
  389.   %88 = add nuw nsw i32 %87, 236
  390.   %89 = trunc i32 %88 to i8
  391.   %90 = zext i8 %83 to i32
  392.   %91 = add nuw nsw i32 %90, 226
  393.   %92 = trunc i32 %91 to i8
  394.   %93 = getelementptr inbounds i8, i8* %.013.i, i32 10
  395.   store i8 %86, i8* %77, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  396.   %94 = getelementptr inbounds i8, i8* %.013.i, i32 11
  397.   store i8 %89, i8* %93, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  398.   %95 = getelementptr inbounds i8, i8* %.013.i, i32 12
  399.   store i8 %92, i8* %94, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  400.   %96 = getelementptr inbounds i8, i8* %.04.i, i32 13
  401.   %97 = load i8, i8* %82, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  402.   %98 = getelementptr inbounds i8, i8* %.04.i, i32 14
  403.   %99 = load i8, i8* %96, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  404.   %100 = getelementptr inbounds i8, i8* %.04.i, i32 15
  405.   %101 = load i8, i8* %98, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  406.   %102 = zext i8 %97 to i32
  407.   %103 = add nuw nsw i32 %102, 246
  408.   %104 = trunc i32 %103 to i8
  409.   %105 = zext i8 %99 to i32
  410.   %106 = add nuw nsw i32 %105, 236
  411.   %107 = trunc i32 %106 to i8
  412.   %108 = zext i8 %101 to i32
  413.   %109 = add nuw nsw i32 %108, 226
  414.   %110 = trunc i32 %109 to i8
  415.   %111 = getelementptr inbounds i8, i8* %.013.i, i32 13
  416.   store i8 %104, i8* %95, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  417.   %112 = getelementptr inbounds i8, i8* %.013.i, i32 14
  418.   store i8 %107, i8* %111, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  419.   %113 = getelementptr inbounds i8, i8* %.013.i, i32 15
  420.   store i8 %110, i8* %112, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  421.   %114 = getelementptr inbounds i8, i8* %.04.i, i32 16
  422.   %115 = load i8, i8* %100, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  423.   %116 = getelementptr inbounds i8, i8* %.04.i, i32 17
  424.   %117 = load i8, i8* %114, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  425.   %118 = getelementptr inbounds i8, i8* %.04.i, i32 18
  426.   %119 = load i8, i8* %116, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  427.   %120 = zext i8 %115 to i32
  428.   %121 = add nuw nsw i32 %120, 246
  429.   %122 = trunc i32 %121 to i8
  430.   %123 = zext i8 %117 to i32
  431.   %124 = add nuw nsw i32 %123, 236
  432.   %125 = trunc i32 %124 to i8
  433.   %126 = zext i8 %119 to i32
  434.   %127 = add nuw nsw i32 %126, 226
  435.   %128 = trunc i32 %127 to i8
  436.   %129 = getelementptr inbounds i8, i8* %.013.i, i32 16
  437.   store i8 %122, i8* %113, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  438.   %130 = getelementptr inbounds i8, i8* %.013.i, i32 17
  439.   store i8 %125, i8* %129, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  440.   %131 = getelementptr inbounds i8, i8* %.013.i, i32 18
  441.   store i8 %128, i8* %130, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  442.   %132 = getelementptr inbounds i8, i8* %.04.i, i32 19
  443.   %133 = load i8, i8* %118, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  444.   %134 = getelementptr inbounds i8, i8* %.04.i, i32 20
  445.   %135 = load i8, i8* %132, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  446.   %136 = getelementptr inbounds i8, i8* %.04.i, i32 21
  447.   %137 = load i8, i8* %134, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  448.   %138 = zext i8 %133 to i32
  449.   %139 = add nuw nsw i32 %138, 246
  450.   %140 = trunc i32 %139 to i8
  451.   %141 = zext i8 %135 to i32
  452.   %142 = add nuw nsw i32 %141, 236
  453.   %143 = trunc i32 %142 to i8
  454.   %144 = zext i8 %137 to i32
  455.   %145 = add nuw nsw i32 %144, 226
  456.   %146 = trunc i32 %145 to i8
  457.   %147 = getelementptr inbounds i8, i8* %.013.i, i32 19
  458.   store i8 %140, i8* %131, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  459.   %148 = getelementptr inbounds i8, i8* %.013.i, i32 20
  460.   store i8 %143, i8* %147, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  461.   %149 = getelementptr inbounds i8, i8* %.013.i, i32 21
  462.   store i8 %146, i8* %148, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  463.   %150 = getelementptr inbounds i8, i8* %.04.i, i32 22
  464.   %151 = load i8, i8* %136, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  465.   %152 = getelementptr inbounds i8, i8* %.04.i, i32 23
  466.   %153 = load i8, i8* %150, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  467.   %154 = getelementptr inbounds i8, i8* %.04.i, i32 24
  468.   %155 = load i8, i8* %152, align 1, !tbaa !1, !alias.scope !7, !noalias !10
  469.   %156 = zext i8 %151 to i32
  470.   %157 = add nuw nsw i32 %156, 246
  471.   %158 = trunc i32 %157 to i8
  472.   %159 = zext i8 %153 to i32
  473.   %160 = add nuw nsw i32 %159, 236
  474.   %161 = trunc i32 %160 to i8
  475.   %162 = zext i8 %155 to i32
  476.   %163 = add nuw nsw i32 %162, 226
  477.   %164 = trunc i32 %163 to i8
  478.   %165 = getelementptr inbounds i8, i8* %.013.i, i32 22
  479.   store i8 %158, i8* %149, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  480.   %166 = getelementptr inbounds i8, i8* %.013.i, i32 23
  481.   store i8 %161, i8* %165, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  482.   %167 = getelementptr inbounds i8, i8* %.013.i, i32 24
  483.   store i8 %164, i8* %166, align 1, !tbaa !1, !alias.scope !10, !noalias !7
  484.   %168 = add nsw i32 %i.02.i, 8
  485.   %exitcond.7.i = icmp eq i32 %168, %len
  486.   br i1 %exitcond.7.i, label %main_loop.exit.loopexit, label %.lr.ph.i, !llvm.loop !6
  487.  
  488. main_loop.exit.loopexit:                          ; preds = %.lr.ph.i
  489.   br label %main_loop.exit
  490.  
  491. main_loop.exit:                                   ; preds = %main_loop.exit.loopexit, %0, %.lr.ph.preheader.split.i
  492.   ret void
  493. }
  494.  
  495. ; Function Attrs: nounwind
  496. declare i32 @puts(i8* nocapture readonly) #1
  497.  
  498. attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="mips32r2" "target-features"="+mips32r2" "unsafe-fp-math"="false" "use-soft-float"="false" }
  499. attributes #1 = { nounwind }
  500.  
  501. !llvm.ident = !{!0}
  502.  
  503. !0 = !{!"Ubuntu clang version 3.8.0-svn251522-1~exp1 (trunk) (based on LLVM 3.8.0)"}
  504. !1 = !{!2, !2, i64 0}
  505. !2 = !{!"omnipotent char", !3, i64 0}
  506. !3 = !{!"Simple C/C++ TBAA"}
  507. !4 = distinct !{!4, !5}
  508. !5 = !{!"llvm.loop.unroll.disable"}
  509. !6 = distinct !{!6, !5}
  510. !7 = !{!8}
  511. !8 = distinct !{!8, !9, !"main_loop: %input_buf"}
  512. !9 = distinct !{!9, !"main_loop"}
  513. !10 = !{!11}
  514. !11 = distinct !{!11, !9, !"main_loop: %output_buf"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement