<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>I'm working on the across the subprogram call optimization, and let's say the following llvm IR,<BR> <BR> @ng0 = internal global [2 x i32] [i32 2, i32 0], align 4<BR> <BR>  %t7 = alloca [16 x i8], align 16<br>  %add.ptr = getelementptr inbounds i8* %t1, i64 40<br>  %call = call i8* @handle_value(i8* %add.ptr, i32 3) #3<br>  %arraydecay = getelementptr inbounds [8 x i8]* %t3, i64 0, i64 0<br>  %arraydecay1 = getelementptr inbounds [16 x i8]* %t4, i64 0, i64 0<br> call void @select_value(i8* %arraydecay, i32 1, i32 1, i8* %call, i8* %arraydecay1, i8* null, i32 1, i32 2, i32 1, i8* bitcast ([2 x i32]* @ng0 to i8*), i32 32, i32 1) #3<br>  %call3 = call i8* @handle_value(i8* %add.ptr, i32 3) #3<BR> <BR>; Function Attrs: nounwind readonly<br>declare i8* @handle_value(i8* nocapture, i32) #1<BR>; Function Attrs: nounwind<br>declare void @select_value(i8*, i32, i32, i8* nocapture readonly, i8* nocapture readonly, i8*, i32, i32, i32, i8*, i32, i32) #2 //select value will only write to the first parameter, other parameter is readonly<BR> <BR>For the above case, the second handle_value function call should be replaced with %call with cse or gvn optimization.<BR> <BR>Is anything I can do to optimize this case?<BR> <BR>thanks<br><BR>                                        </div></body>
</html>