<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
We have encountered a problem when using multiple aliases in IR and would like feedback as to whether this use is expected to work properly.</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
The following IR is causing a failure in llc when lowering to an object file:</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div>
<div><font face="Calibri,sans-serif">; RUN: llc double-alias.ll -filetype=obj -o double-alias.o </font></div>
<div><font face="Calibri,sans-serif">@bar = global i32 0</font></div>
<div><font face="Calibri,sans-serif">@foo2 = alias i32, i32* @bar</font></div>
<div><font face="Calibri,sans-serif">@foo3 = alias i32, i32* @foo2</font></div>
<div><font face="Calibri,sans-serif">@baz = global i32* @foo3</font></div>
</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px;">
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
</blockquote>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
Is redirection through multiple aliases supposed to work? If @baz is modified to reference @foo2 instead of @foo3, the IR lowers to an object file successfully.</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
Without asserts enabled, the following error is seen:</div>
<div>
<div><font face="Calibri,sans-serif">LLVM ERROR: unable to evaluate offset to undefined symbol '_foo2'</font></div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
With asserts enabled, the following assert is seen:</div>
<div>
<div>
<div><font face="Calibri,sans-serif">Assertion failed: ((SymbolContents == SymContentsUnset || SymbolContents == SymContentsOffset) && "Cannot get offset for a common/variable symbol"), function getOffset, file /llvm-3.8-rc1/src/include/llvm/MC/MCSymbol.h,
 line 317.</font></div>
<div><font face="Calibri,sans-serif">0  llc                      0x00000001111c2a5e llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 46</font></div>
<div><font face="Calibri,sans-serif">1  llc                      0x00000001111c2e99 PrintStackTraceSignalHandler(void*) + 25</font></div>
<div><font face="Calibri,sans-serif">2  llc                      0x00000001111bf729 llvm::sys::RunSignalHandlers() + 425</font></div>
<div><font face="Calibri,sans-serif">3  llc                      0x00000001111c31e2 SignalHandler(int) + 354</font></div>
<div><font face="Calibri,sans-serif">4  libsystem_platform.dylib 0x00007fff885c2eaa _sigtramp + 26</font></div>
<div><font face="Calibri,sans-serif">5  llc                      0x0000000111e06635 ErrorCategory + 87253</font></div>
<div><font face="Calibri,sans-serif">6  llc                      0x00000001111c2ebb raise + 27</font></div>
<div><font face="Calibri,sans-serif">7  llc                      0x00000001111c2f62 abort + 18</font></div>
<div><font face="Calibri,sans-serif">8  llc                      0x00000001111c2f4e __assert_rtn + 126</font></div>
<div><font face="Calibri,sans-serif">9  llc                      0x0000000110bb988e llvm::MCSymbol::getOffset() const + 126</font></div>
<div><font face="Calibri,sans-serif">10 llc                      0x0000000110bbc25d getLabelOffset(llvm::MCAsmLayout const&, llvm::MCSymbol const&, bool, unsigned long long&) + 221</font></div>
<div><font face="Calibri,sans-serif">11 llc                      0x0000000110bba362 getSymbolOffsetImpl(llvm::MCAsmLayout const&, llvm::MCSymbol const&, bool, unsigned long long&) + 322</font></div>
<div><font face="Calibri,sans-serif">12 llc                      0x0000000110bba456 llvm::MCAsmLayout::getSymbolOffset(llvm::MCSymbol const&) const + 38</font></div>
<div><font face="Calibri,sans-serif">13 llc                      0x0000000110b82f21 llvm::MCAssembler::evaluateFixup(llvm::MCAsmLayout const&, llvm::MCFixup const&, llvm::MCFragment const*, llvm::MCValue&, unsigned long long&) const + 625</font></div>
<div><font face="Calibri,sans-serif">14 llc                      0x0000000110b85036 llvm::MCAssembler::handleFixup(llvm::MCAsmLayout const&, llvm::MCFragment&, llvm::MCFixup const&) + 182</font></div>
<div><font face="Calibri,sans-serif">15 llc                      0x0000000110b85a7f llvm::MCAssembler::layout(llvm::MCAsmLayout&) + 2223</font></div>
<div><font face="Calibri,sans-serif">16 llc                      0x0000000110b85f33 llvm::MCAssembler::Finish() + 83</font></div>
<div><font face="Calibri,sans-serif">17 llc                      0x0000000110bd07ff llvm::MCObjectStreamer::FinishImpl() + 191</font></div>
<div><font face="Calibri,sans-serif">18 llc                      0x0000000110bc2017 (anonymous namespace)::MCMachOStreamer::FinishImpl() + 807</font></div>
<div><font face="Calibri,sans-serif">19 llc                      0x0000000110bdba35 llvm::MCStreamer::Finish() + 149</font></div>
<div><font face="Calibri,sans-serif">20 llc                      0x0000000110296a21 llvm::AsmPrinter::doFinalization(llvm::Module&) + 5425</font></div>
<div><font face="Calibri,sans-serif">21 llc                      0x0000000110a4e5d4 llvm::FPPassManager::doFinalization(llvm::Module&) + 84</font></div>
<div><font face="Calibri,sans-serif">22 llc                      0x0000000110a4f7f3 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) + 3603</font></div>
<div><font face="Calibri,sans-serif">23 llc                      0x0000000110a4e766 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 342</font></div>
<div><font face="Calibri,sans-serif">24 llc                      0x0000000110a4fd81 llvm::legacy::PassManager::run(llvm::Module&) + 33</font></div>
<div><font face="Calibri,sans-serif">25 llc                      0x000000010eece223 compileModule(char**, llvm::LLVMContext&) + 19363</font></div>
<div><font face="Calibri,sans-serif">26 llc                      0x000000010eec9621 main + 225</font></div>
<div><font face="Calibri,sans-serif">27 libdyld.dylib            0x00007fff85f6a5ad start + 1</font></div>
<div><font face="Calibri,sans-serif">28 libdyld.dylib            0x0000000000000005 start + 2047433305</font></div>
<div><font face="Calibri,sans-serif">Stack dump:</font></div>
<div><font face="Calibri,sans-serif">0.<span class="Apple-tab-span" style="white-space:pre">
</span>Program arguments: /llvm-3.8-rc1/build/bin/llc double-alias.ll -filetype=obj -o double-alias.o </font></div>
<div><font face="Calibri,sans-serif">Illegal instruction: 4</font></div>
</div>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<div><br>
</div>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
Thanks for the help,</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
 Jason </div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; font-size: 14px;">
<div id="MAC_OUTLOOK_SIGNATURE"></div>
</div>
</body>
</html>