[LLVMdev] trouble with getelementptr
Nick Lewycky
nicholas at mxc.ca
Sat Jan 5 16:47:05 PST 2008
Hi Zalunin,
Try including a NULL. :) The c"foo" notation does not implicitly add one
for you. Besides that, your use of getelementptr looks correct.
c"\22hello, cruel world\22\00"
As for freeing memory, don't free global strings. They're deliberately
put in a read-only memory area initialized when the binary starts up.
You can free memory that you malloc, using the instructions of the same
name.
Nick
Zalunin Pavel wrote:
> Hello,
> I have next code:
> ;begin
> ; ModuleID = 'sample.lz'
> @.str1 = internal constant [20 x i8] c"\22hello, cruel
> world\22" ; <[20 x i8]*> [#uses=1]
> @.str4 = internal constant [9 x i8] c"\22hello, \22" ; <[9 x
> i8]*> [#uses=1]
> @.str7 = internal constant [7 x i8] c"\22heya!\22" ; <[7 x
> i8]*> [#uses=1]
> declare i32 @puts(i8*)
>
> declare i8 @strcat(i8*, i8*)
>
> define i32 @main() {
> mainBlock:
> %tmp2 = getelementptr [20 x i8]* @.str1, i64 0, i64 0
> ; <i8*> [#uses=1]
> %tmp3 = call i32 @puts( i8* %tmp2 ) ; <i32> [#uses=0]
> %tmp5 = getelementptr [9 x i8]* @.str4, i64 0, i64 0
> ; <i8*> [#uses=1]
> %tmp6 = call i32 @puts( i8* %tmp5 ) ; <i32> [#uses=0]
> %tmp8 = getelementptr [7 x i8]* @.str7, i64 0, i64 0
> ; <i8*> [#uses=1]
> %tmp9 = call i32 @puts( i8* %tmp8 ) ; <i32> [#uses=0]
> ret i32 0
> }
>
> ;end
>
> llvm-as test.ll -o test.ll.bc
> llc test.ll.bc -o test.ll.s
> gcc test.ll.s -o test.ll.native
>
> After running a see next:
>
> whiter4bbit at LiZa /home/whiter4bbit/programming
> /study/yapis/liza $ ./test.ll.native
> "hello, cruel world""hello, ""heya!"
> "hello, ""heya!"
> "heya!"
>
> It isn't a target result:) target is:
>
> whiter4bbit at LiZa /home/whiter4bbit/programming/study/yapis/liza $
> ./test.ll.native
> "hello, cruel world"
> "hello, "
> "heya!"
>
> what is the trouble here?
> I think about freeing memory after using getelementptr, is it right?(and
> if it right can anybody answer 'how?')
> Help me please...
>
> Best regards, Zalunin Pavel
More information about the llvm-dev
mailing list