<div>Hi:</div><div>So I have a library function called fooo() in a source file B.c and an external A.c file that is referencing a function fooo() in it.</div><div>foo is returning a pointer to a structure</div><div><br></div><div>A.ll:</div><div>%struct._bar= type { %struct._foo, i32, i32 (%struct.doo*, %struct.doo*, %struct.doo*)* }</div><div>declare i8* @fooo() #2</div><div><br></div><div>B.ll:</div><div><div>%struct._bar= type { %struct._foo, i32, i32 (%struct.doo*, %struct.doo*, %struct.doo*)* }</div><div>define noalias %struct._bar* @fooo() #2{</div><div>   ..........</div><div>}</div></div><div><br></div><div><br></div><div>I am implementing a transform pass that operates on the merged version of A.ll and B.ll , since they have different implementations llvm-link is inserting extra bitcasts and thus various passes failed to operate, for example the Inliner pass.</div><div>Is there anything else I could do to achieve what I need? Cheers</div><div><br></div><div><includetail><!--<![endif]--></includetail></div>