<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt">Hi, <div><br></div><div>Building the following C code I get a call instruction that has no noreturn attribute, while the function itself does have it. </div>
<div><div><br></div><div>void foo(void **b) {</div><div> __builtin_longjmp(b, 1);</div><div>}</div></div><div><br></div><div><br></div><div><div>define void @_Z3fooPPv(i8** %b) noreturn nounwind uwtable {</div><div>entry:</div>
<div> %0 = bitcast i8** %b to i8*</div><div> tail call void @llvm.eh.sjlj.longjmp(i8* %0) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</div>
<div> unreachable</div><div>}</div></div><div><br></div><div><div>declare void @llvm.eh.sjlj.longjmp(i8*) noreturn nounwind <<<<<<<<<<<<<<<<<</div></div><div><br></div>
<div><br></div><div>I've hit this in asan where it checks the noreturn attribute in the call instruction, but not in the function object. </div><div>Who is wrong here? Should asan also check noreturn in the called function? </div>
<div><br></div><div>Thanks, </div><div><br></div><div>--kcc </div><div><br></div></div>