Hello<br><br>If I optimize (opt -std-compile-opts ) the following .ll<br><br>; ModuleID = 'call0.ll'<br>target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"<br>
target triple = "i386-mingw32"<br><br>define i32 @t(i32 %a) nounwind {<br>entry:<br> %0 = tail call i32 inttoptr (i32 0 to i32 (i32)*)(i32 %a) nounwind ; <i32> [#uses=1]<br> ret i32 %0<br>}<br>
<br>The call to address 0 gets removed. <br><br>define i32 @t(i32 %a) noreturn nounwind readnone {<br>entry:<br> unreachable<br>}<br><br>How can I prevent that the call is removed, without making the function addr volatile?<br>
Does anyone know which optimization removes it?<br><br>Thanks,<br>Marius Wachtler<br><br><br><br><br>