<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - clang-cl regression: Assertion failure: "Instruction uses an allocated register" with pointer to member stdcall function"
   href="http://llvm.org/bugs/show_bug.cgi?id=22174">22174</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>clang-cl regression: Assertion failure: "Instruction uses an allocated register" with pointer to member stdcall function
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Register Allocator
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>ehsan@mozilla.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>$ cat sucker.cpp
struct B {
  virtual void __stdcall m_fn2();
};
void foo() { &B::m_fn2; }

$ ~/src/llvm-objdir/bin/clang-cl -m32 -c sucker.cpp
sucker.cpp(4,14) :  warning: expression result unused [-Wunused-value]
void foo() { &B::m_fn2; }
             ^~~~~~~~~
error: ran out of registers during register allocation
Instruction uses an allocated register
UNREACHABLE executed at /home/ehsan/src/llvm/lib/CodeGen/RegAllocFast.cpp:365!
#0 0x1ab9922 llvm::sys::PrintStackTrace(_IO_FILE*)
/home/ehsan/src/llvm/lib/Support/Unix/Signals.inc:423:0
#1 0x1ab9bbd PrintStackTraceSignalHandler(void*)
/home/ehsan/src/llvm/lib/Support/Unix/Signals.inc:481:0
#2 0x1ab87df SignalHandler(int)
/home/ehsan/src/llvm/lib/Support/Unix/Signals.inc:198:0
#3 0x7f86ac96c340 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10340)
#4 0x7f86abb93bb9 gsignal
/build/buildd/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#5 0x7f86abb96fc8 abort /build/buildd/eglibc-2.19/stdlib/abort.c:91:0
#6 0x1a7a405 bindingsErrorHandler(void*, std::string const&, bool)
/home/ehsan/src/llvm/lib/Support/ErrorHandling.cpp:126:0
#7 0x143c8d4 (anonymous namespace)::RAFast::usePhysReg(llvm::MachineOperand&)
/home/ehsan/src/llvm/lib/CodeGen/RegAllocFast.cpp:355:0
#8 0x143f963 (anonymous namespace)::RAFast::AllocateBasicBlock()
/home/ehsan/src/llvm/lib/CodeGen/RegAllocFast.cpp:946:0
#9 0x1440638 (anonymous
namespace)::RAFast::runOnMachineFunction(llvm::MachineFunction&)
/home/ehsan/src/llvm/lib/CodeGen/RegAllocFast.cpp:1101:0
#10 0x13e2357 llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
/home/ehsan/src/llvm/lib/CodeGen/MachineFunctionPass.cpp:34:0
#11 0x172543e llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/ehsan/src/llvm/lib/IR/LegacyPassManager.cpp:1530:0
#12 0x17255ae llvm::FPPassManager::runOnModule(llvm::Module&)
/home/ehsan/src/llvm/lib/IR/LegacyPassManager.cpp:1550:0
#13 0x17258cc (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&)
/home/ehsan/src/llvm/lib/IR/LegacyPassManager.cpp:1608:0
#14 0x1725f70 llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/ehsan/src/llvm/lib/IR/LegacyPassManager.cpp:1715:0
#15 0x172618f llvm::legacy::PassManager::run(llvm::Module&)
/home/ehsan/src/llvm/lib/IR/LegacyPassManager.cpp:1749:0
#16 0x202304d (anonymous
namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction,
llvm::raw_ostream*)
/home/ehsan/src/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:619:0
#17 0x202311c clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions
const&, llvm::StringRef, llvm::Module*, clang::BackendAction,
llvm::raw_ostream*)
/home/ehsan/src/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:635:0
#18 0x2008b6e clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
/home/ehsan/src/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp:179:0
#19 0x2a3d5c0 clang::ParseAST(clang::Sema&, bool, bool)
/home/ehsan/src/llvm/tools/clang/lib/Parse/ParseAST.cpp:153:0
#20 0x1cb5c02 clang::ASTFrontendAction::ExecuteAction()
/home/ehsan/src/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:528:0
#21 0x200afe1 clang::CodeGenAction::ExecuteAction()
/home/ehsan/src/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp:729:0
#22 0x1cb56dd clang::FrontendAction::Execute()
/home/ehsan/src/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:432:0
#23 0x1c7eb86 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
/home/ehsan/src/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:812:0
#24 0x1dc6c2f clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
/home/ehsan/src/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:222:0
#25 0x1018750 cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
/home/ehsan/src/llvm/tools/clang/tools/driver/cc1_main.cpp:110:0
#26 0x1010ef8 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef)
/home/ehsan/src/llvm/tools/clang/tools/driver/driver.cpp:369:0
#27 0x10114da main
/home/ehsan/src/llvm/tools/clang/tools/driver/driver.cpp:415:0
#28 0x7f86abb7eec5 __libc_start_main
/build/buildd/eglibc-2.19/csu/libc-start.c:321:0
#29 0x100df39 _start (/media/storage/src/llvm-objdir/bin/clang-3.6+0x100df39)
Stack dump:
0.    Program arguments: /media/storage/src/llvm-objdir/bin/clang-3.6 -cc1
-triple i386-unknown-windows-msvc -emit-obj -mrelax-all -disable-free
-main-file-name sucker.cpp -mrelocation-model static -mthread-model posix
-mdisable-fp-elim -relaxed-aliasing -fmath-errno -masm-verbose
-mconstructor-aliases -target-cpu pentium4 -D_MT --dependent-lib=libcmt
--dependent-lib=oldnames -fdiagnostics-format msvc -dwarf-column-info
-coverage-file /home/ehsan/src/creduce/obj/creduce/sucker.cpp -resource-dir
/media/storage/src/llvm-objdir/bin/../lib/clang/3.6.0 -internal-isystem
/media/storage/src/llvm-objdir/bin/../lib/clang/3.6.0/include -internal-isystem
C:/Program Files/Microsoft Visual Studio 10.0/VC/include -internal-isystem
C:/Program Files/Microsoft Visual Studio 9.0/VC/include -internal-isystem
C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include
-internal-isystem C:/Program Files/Microsoft Visual Studio 8/VC/include
-internal-isystem C:/Program Files/Microsoft Visual Studio
8/VC/PlatformSDK/Include -std=c++11 -fdeprecated-macro -fdebug-compilation-dir
/home/ehsan/src/creduce/obj/creduce -ferror-limit 19 -fmessage-length 202
-mstackrealign -fms-extensions -fms-compatibility
-fms-compatibility-version=17.00 -fdelayed-template-parsing -fobjc-runtime=gcc
-fdiagnostics-show-option -fcolor-diagnostics -o sucker.obj -x c++ sucker.cpp
1.    <eof> parser at end of file
2.    Code generation
3.    Running pass 'Function Pass Manager' on module 'sucker.cpp'.
4.    Running pass 'Fast Register Allocator' on function '@"\01??_9B@@$BA@AE"'



This does not happen with -O2.  It seems to have regressed in the past few
weeks.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>