but why this code don't work:<br><br>; ModuleID = 'sample.lz'<br>@.str1 = internal global [6 x i8] c"world\00"           ; <[6 x i8]*> [#uses=1]<br>
@.str2 = internal global [7 x i8] c"hello \00"          ; <[7 x i8]*> [#uses=1]<br>@.str7 = internal global [7 x i8] c"father\00"          ; <[7 x i8]*> [#uses=1]<br>@.str8 = internal global [8 x i8] c"mother \00"         ; <[8 x i8]*> [#uses=1]
<span class="q"><br><br>declare i32 @puts(i8*)<br><br>declare i8* @strcat(i8*, i8*)<br><br></span>declare i32 @strlen(i8*)<span class="q"><br><br>declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)<br><br>define i32 @main() {
<br>mainBlock:<br></span>        %str3 = getelementptr [7 x i8]* @.str2, i64 0, i64 0            ; <i8*> [#uses=2]
<br>        %str4 = getelementptr [6 x i8]* @.str1, i64 0, i64 0            ; <i8*> [#uses=1]<br>        call i8* @strcat( i8* %str3, i8* %str4 )                ; <i8*>:0 [#uses=0]<br>        %tmp6 = call i32 @puts( i8* %str3 )             ; <i32> [#uses=0]
<br>        %str9 = getelementptr [8 x i8]* @.str8, i64 0, i64 0            ; <i8*> [#uses=2]<br>        %str10 = getelementptr [7 x i8]* @.str7, i64 0, i64 0           ; <i8*> [#uses=1]<br>        call i8* @strcat( i8* %str9, i8* %str10 )               ; <i8*>:1 [#uses=0]
<br>        %tmp12 = call i32 @puts( i8* %str9 )            ; <i32> [#uses=0]<br>        ret i32 0<br>}<br><br>