;DEPENDENCY DECLARATIONS declare i32 @printf(i8*, ...) declare i32 @sprintf(i8*,i8*, ...) declare i8* @strcat(i8*,i8*) declare i8* @strcpy(i8*,i8*) declare i32 @strcmp(i8*,i8*) @.str.newline = constant [2 x i8] c"\0A\00" @.str.int = constant [3 x i8] c"%d\00" @.str.double = constant [4 x i8] c"%lf\00" @.str.space = constant [2 x i8] c" \00" ;GLOBAL DECLARATIONS @.str.0 = constant [13 x i8] c"Hello world!\00" ;GLOBAL INITIALIZATIONS OF GLOBAL VARIABLES THAT ARE STRINGS OR ARRAYS OF STRINGS define void @globalinit(){ ret void } define void @main (){ call void () @globalinit() %1 = getelementptr inbounds [13 x i8], [13 x i8]* @.str.0 , i32 0, i32 0 %2 = call i32 (i8*, ...) @printf(i8* %1) %3= call i32 (i8*, ...) @printf(i8* getelementptr inbounds([2 x i8],[2 x i8]* @.str.space,i32 0,i32 0)) %4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds([2 x i8], [2 x i8]* @.str.newline, i32 0, i32 0)) ret void }