[LLVMdev] Writing instructions to file

bhavani krishnan bhavi63 at yahoo.com
Mon Nov 17 20:30:43 PST 2008


Hello all,
I am instrumenting the code such that I write the results of some instructions to file. As you can see below, I am writing the results of add instruction to the file. The IR generated for writeToFile is also posted below. My problem is that it is writing to the file in format bytes  and it is not human-readable. How do I make it write human readable strings to the file?

define i32 @add(i32 %a, i32 %b) nounwind  {
entry:
	%tmp3 = add i32 %b, %a		; <i32> [#uses=2]
	alloca i32		; <i32*>:0 [#uses=2]
	store i32 %tmp3, i32* %0, align 4
	bitcast i32* %0 to i8*		; <i8*>:1 [#uses=1]
	tail call void @writeToFile( i8* %1 )
	ret i32 %tmp3
}

define void @writeToFile(i8* %str) {
entry:
	%tmp = tail call %struct.FILE* @fopen( i8* getelementptr ([8 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([2 x i8]* @.str1, i32 0, i32 0) )		; <%struct.FILE*> [#uses=3]
	%tmp2 = icmp eq %struct.FILE* %tmp, null		; <i1> [#uses=1]
	br i1 %tmp2, label %bb, label %bb5

bb:		; preds = %entry
	%tmp4 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([20 x i8]* @.str2, i32 0, i32 0) )		; <i32> [#uses=0]
	ret void

bb5:		; preds = %entry
	%tmp8 = tail call i32 (%struct.FILE*, i8*, ...)* @fprintf( %struct.FILE* %tmp, i8* %str )		; <i32> [#uses=0]
	%tmp10 = tail call i32 @fclose( %struct.FILE* %tmp )		; <i32> [#uses=0]
	ret void
}

declare %struct.FILE* @fopen(i8*, i8*)

declare i32 @printf(i8*, ...)

declare i32 @fprintf(%struct.FILE*, i8*, ...)

declare i32 @fclose(%struct.FILE*)

Thanks,
Bhavani



      



More information about the llvm-dev mailing list