<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;" class="">The original problem should be fixed by r265763 and I recommitted this change in r265764.<div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On Apr 7, 2016, at 5:47 PM, Quentin Colombet via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Mike,</div><div class=""><br class=""></div>I’ve already reverted it in r265755.<div class=""><br class=""></div><div class="">I should push a fixed version shortly. (Although we were reading past the buffer we actually do not use the value).</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">-Quentin</div><div class=""><br class=""></div><div class=""><div class=""><blockquote type="cite" class=""><div class="">On Apr 7, 2016, at 5:29 PM, Mike Aizatsky <<a href="mailto:aizatsky@google.com" class="">aizatsky@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Quentin,</div><div class=""><br class=""></div>It seems that this change breaks a bot by triggering buffer overflow error:<div class=""><br class=""></div><div class=""><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/11741/steps/check-llvm%20asan/logs/stdio" class="">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/11741/steps/check-llvm%20asan/logs/stdio</a><br class=""></div><div class=""><br class=""></div><div class="">Can you confirm?</div><div class=""><br class=""></div><div class=""><div class="">READ of size 4 at 0x000004bc8c90 thread T0</div><div class="">    #0 0x31925b1 in moveToNextID /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/Target/TargetRegisterInfo.h:992:22</div><div class="">    #1 0x31925b1 in operator++ /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/Target/TargetRegisterInfo.h:1049</div><div class="">    #2 0x31925b1 in llvm::TargetRegisterInfo::getAllocatableClass(llvm::TargetRegisterClass const*) const /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/TargetRegisterInfo.cpp:116</div><div class="">    #3 0x3f1ba4b in llvm::InstrEmitter::CreateVirtualRegisters(llvm::SDNode*, llvm::MachineInstrBuilder&, llvm::MCInstrDesc const&, bool, bool, llvm::DenseMap<llvm::SDValue, unsigned int, llvm::DenseMapInfo<llvm::SDValue>, llvm::detail::DenseMapPair<llvm::SDValue, unsigned int> >&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:221:7</div><div class="">    #4 0x3f2745c in llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool, llvm::DenseMap<llvm::SDValue, unsigned int, llvm::DenseMapInfo<llvm::SDValue>, llvm::detail::DenseMapPair<llvm::SDValue, unsigned int> >&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:789:5</div><div class="">    #5 0x3c4e6cc in EmitNode /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.h:121:7</div><div class="">    #6 0x3c4e6cc in llvm::ScheduleDAGSDNodes::EmitSchedule(llvm::MachineInstrBundleIterator<llvm::MachineInstr>&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:845</div><div class="">    #7 0x3e559eb in llvm::SelectionDAGISel::CodeGenAndEmitDAG() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:877:31</div><div class="">    #8 0x3e50482 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1490:7</div><div class="">    #9 0x3e46770 in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:498:3</div><div class="">    #10 0xfd9b4d in (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:75:5</div><div class="">    #11 0x2e10ecf in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/CodeGen/MachineFunctionPass.cpp:60:13</div><div class="">    #12 0x353c84c in llvm::FPPassManager::runOnFunction(llvm::Function&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1550:23</div><div class="">    #13 0x353cde5 in llvm::FPPassManager::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1571:16</div><div class="">    #14 0x353dd12 in runOnModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1627:23</div><div class="">    #15 0x353dd12 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1730</div><div class="">    #16 0x742cda in compileModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/llc/llc.cpp:412:5</div><div class="">    #17 0x742cda in main /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/llc/llc.cpp:218</div><div class="">    #18 0x7f7ddd0d2ec4 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)</div><div class="">    #19 0x654c5e in _start (/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/bin/llc+0x654c5e)</div><div class=""><br class=""></div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Thu, Apr 7, 2016 at 3:22 PM Quentin Colombet via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: qcolombet<br class="">
Date: Thu Apr  7 17:16:56 2016<br class="">
New Revision: 265734<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=265734&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=265734&view=rev</a><br class="">
Log:<br class="">
[TargetRegisterInfo] Refactor the code to use BitMaskClassIterator.<br class="">
<br class="">
Modified:<br class="">
    llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp<br class="">
<br class="">
Modified: llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp?rev=265734&r1=265733&r2=265734&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp?rev=265734&r1=265733&r2=265734&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp (original)<br class="">
+++ llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp Thu Apr  7 17:16:56 2016<br class="">
@@ -112,18 +112,11 @@ TargetRegisterInfo::getAllocatableClass(<br class="">
   if (!RC || RC->isAllocatable())<br class="">
     return RC;<br class="">
<br class="">
-  const unsigned *SubClass = RC->getSubClassMask();<br class="">
-  for (unsigned Base = 0, BaseE = getNumRegClasses();<br class="">
-       Base < BaseE; Base += 32) {<br class="">
-    unsigned Idx = Base;<br class="">
-    for (unsigned Mask = *SubClass++; Mask; Mask >>= 1) {<br class="">
-      unsigned Offset = countTrailingZeros(Mask);<br class="">
-      const TargetRegisterClass *SubRC = getRegClass(Idx + Offset);<br class="">
-      if (SubRC->isAllocatable())<br class="">
-        return SubRC;<br class="">
-      Mask >>= Offset;<br class="">
-      Idx += Offset + 1;<br class="">
-    }<br class="">
+  for (BitMaskClassIterator It(RC->getSubClassMask(), *this); It.isValid();<br class="">
+       ++It) {<br class="">
+    const TargetRegisterClass *SubRC = getRegClass(It.getID());<br class="">
+    if (SubRC->isAllocatable())<br class="">
+      return SubRC;<br class="">
   }<br class="">
   return nullptr;<br class="">
 }<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div><div dir="ltr" class="">-- <br class=""></div>Mike<br class="">Sent from phone
</div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits<br class=""></div></blockquote></div><br class=""></div></body></html>