[LLVMdev] problem with loopinfo

Chris Lattner sabre at nondot.org
Thu Jun 15 15:35:54 PDT 2006


On Thu, 15 Jun 2006, Wei Jiang wrote:
> hi,
>    The loopinfo pass failed to recognize the Tripcount of a simple program constructed by me, can you help me to figure out why this happened? Thanks.
>    The C program and corresponding .ll files are shown below. I used llvm1.7 to develop my own pass, and want to use the loop information.

What passes are you running before your pass?  trip count information is 
generally only available after the "indvars" pass runs.

-Chris

> Test.c:
> #include "stdio.h"
> #define N 40
> void func1() {
>  int a[N];
>  int i,j;
>  for (i=0; i<N; i++) {
>      if (i==0)
>        a[i] = i*N;
>      else
>        a[i] = i*i;
>  }
> }
>
> Test.ll:
> void %func1() {
> entry:
>        %a = alloca [40 x int]          ; <[40 x int]*> [#uses=1]
>        br label %no_exit
>
> no_exit:                ; preds = %else, %then, %entry
>        %i.0.0 = phi int [ 0, %entry ], [ %inc9, %then ], [ %inc, %else ]       ; <int> [#uses=7]
>        %tmp.4 = seteq int %i.0.0, 0            ; <bool> [#uses=1]
>        %tmp.7 = getelementptr [40 x int]* %a, int 0, int %i.0.0                ; <int*> [#uses=2]
>        br bool %tmp.4, label %then, label %else
>
> then:           ; preds = %no_exit
>        %tmp.9 = mul int %i.0.0, 40             ; <int> [#uses=1]
>        store int %tmp.9, int* %tmp.7
>        %inc9 = add int %i.0.0, 1               ; <int> [#uses=2]
>        %tmp.112 = setlt int %inc9, 40          ; <bool> [#uses=1]
>        br bool %tmp.112, label %no_exit, label %return
>
> else:           ; preds = %no_exit
>        %tmp.14 = mul int %i.0.0, %i.0.0                ; <int> [#uses=1]
>        store int %tmp.14, int* %tmp.7
>        %inc = add int %i.0.0, 1                ; <int> [#uses=2]
>        %tmp.1 = setlt int %inc, 40             ; <bool> [#uses=1]
>        br bool %tmp.1, label %no_exit, label %return
>
> return:         ; preds = %else, %then
>        ret void
> }
>

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/



More information about the llvm-dev mailing list