<div dir="ltr"><div>Hello,</div><div><br></div><div>I recently hit an issue when JIT'ing my generated IR using llvm::orc::LLJIT. My IR contains the following definition of a global variable:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>$_ZZ23TestStaticVarInFunctionbE1x = comdat any<br>@_ZZ23TestStaticVarInFunctionbE1x = linkonce_odr dso_local global i32 123, comdat, align 4</div></blockquote><div><br></div><div>And in my host process, there exists the same symbol. I would expect LLJIT to resolve the global variable above to the address inside the host process, since it has linkage 'linkonce_odr'. However, it turns out that LLJIT resolved it as if it were a conventional global variable definition and gave it its own address (I have added 'GetForCurrentProcess' generator for symbol resolution of course). <br></div><div><br></div><div>I can workaround this issue by making the symbol a declaration (drop the initializer, comdat and make the linkage external), but I'm wondering if it is expected behavior that LLJIT does not respect linkonce_odr specifier, since the documentation says LLJIT's symbol resolution should work as if I were running a normal linker. </div><div><br></div><div>Best,</div><div>Haoran<br></div><div><br></div><div><br></div></div>