[LLVMdev] function failing to run in Jit

Andrew Ferguson andrewf at idlearts.com
Sun Jul 24 20:53:58 PDT 2011


That doesn't work either. 

%1 = sext i32 %a to i64                         
%2 = getelementptr inbounds [1000 x i32]* @array, i64 0, i64 %1 ;   


On Mon, 2011-07-25 at 04:26 +0200, FlyLanguage wrote:
> Try using i64 indices with GEP
> 
> 
> > Is there any reason this generated code won't run in the Jit?
> > I've pretty much got everything else working for my front end
> > which all runs fin in the Jit but I can't get global arrays to work.
> >
> > ; ModuleID = 'test'
> > target datalayout =
> > "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
> > target triple = "i686-pc-linux-gnu"
> >
> > @MyArray = external global [1000 x i32]
> >
> > define i32 @foo(i32 %a, i32 %b) {
> > Entry:
> >    %mul = mul i32 %b, %a
> >    %ptr = getelementptr inbounds [1000 x i32]* @MyArray, i32 0, i32 %a
> >    store i32 %mul, i32* %ptr, align 4
> >    ret i32 %a
> > }
> >
> > Comparing it to the web compiled c equivalent I can't see any relevant
> > difference.
> >
> > ; ModuleID = '/tmp/webcompile/_925_0.bc'
> > target datalayout =
> > "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-linux-gnu"
> >
> > @array = common global [1000 x i32] zeroinitializer, align 32 ;<[1000 x
> > i32]*>  [#uses=1]
> >
> > define i32 @foo(i32 %a, i32 %b) nounwind {
> > entry:
> >    %0 = mul nsw i32 %b, %a                         ;<i32>  [#uses=1]
> >    %1 = sext i32 %a to i64                         ;<i64>  [#uses=1]
> >    %2 = getelementptr inbounds [1000 x i32]* @array, i64 0, i64 %1 ;
> > <i32*>  [#uses=1]
> >    store i32 %0, i32* %2, align 4
> >    ret i32 %a
> > }
> >
> >
> >
> >
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
> 

-- 
Andrew Ferguson
+649 372 6039
www.idlearts.com




More information about the llvm-dev mailing list