<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - Assertion `BasePtr == FramePtr && "Expected the FP as base register"' failed."
   href="https://bugs.llvm.org/show_bug.cgi?id=43718">43718</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Assertion `BasePtr == FramePtr && "Expected the FP as base register"' failed.
          </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>Linux
          </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>Backend: X86
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>nick@wasmer.io
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>craig.topper@gmail.com, llvm-bugs@lists.llvm.org, llvm-dev@redking.me.uk, spatel+llvm@rotateright.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Setting code model to large and enabling AVX trigger a crash in the
"Prologue/Epilogue Insertion & Frame Finalization" backend pass.

$ llc -code-model=large -mattr=+avx b.ll
llc: /home/nick/llvm-upstream/llvm/lib/Target/X86/X86RegisterInfo.cpp:763:
virtual void
llvm::X86RegisterInfo::eliminateFrameIndex(llvm::MachineBasicBlock::iterator,
int, unsigned int, llvm::RegScavenger*) const: Assertion `BasePtr == FramePtr
&& "Expected the FP as base register"' failed.
Stack dump:
0.      Program arguments: llvm-upstream/build/bin/llc -code-model=large
-mattr=+avx b.ll 
1.      Running pass 'Function Pass Manager' on module 'b.ll'.
2.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on
function '@fn1774'
 #0 0x000055b7fcc5e4a0 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/home/nick/llvm-upstream/llvm/lib/Support/Unix/Signals.inc:532:22
 #1 0x000055b7fcc5e533 PrintStackTraceSignalHandler(void*)
/home/nick/llvm-upstream/llvm/lib/Support/Unix/Signals.inc:593:1
 #2 0x000055b7fcc5c6d8 llvm::sys::RunSignalHandlers()
/home/nick/llvm-upstream/llvm/lib/Support/Signals.cpp:68:20
 #3 0x000055b7fcc5df1d SignalHandler(int)
/home/nick/llvm-upstream/llvm/lib/Support/Unix/Signals.inc:384:1
 #4 0x00007ff88e555510 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x13510)
 #5 0x00007ff88e030081 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3a081)
 #6 0x00007ff88e01b535 abort (/lib/x86_64-linux-gnu/libc.so.6+0x25535)
 #7 0x00007ff88e01b40f (/lib/x86_64-linux-gnu/libc.so.6+0x2540f)
 #8 0x00007ff88e028b92 (/lib/x86_64-linux-gnu/libc.so.6+0x32b92)
 #9 0x000055b7fb52dee4
llvm::X86RegisterInfo::eliminateFrameIndex(llvm::MachineInstrBundleIterator<llvm::MachineInstr,
false>, int, unsigned int, llvm::RegScavenger*) const
/home/nick/llvm-upstream/llvm/lib/Target/X86/X86RegisterInfo.cpp:764:52
#10 0x000055b7fc01c540 (anonymous
namespace)::PEI::replaceFrameIndices(llvm::MachineBasicBlock*,
llvm::MachineFunction&, int&)
/home/nick/llvm-upstream/llvm/lib/CodeGen/PrologEpilogInserter.cpp:1279:7
#11 0x000055b7fc01bca2 (anonymous
namespace)::PEI::replaceFrameIndices(llvm::MachineFunction&)
/home/nick/llvm-upstream/llvm/lib/CodeGen/PrologEpilogInserter.cpp:1161:26
#12 0x000055b7fc01832d (anonymous
namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&)
/home/nick/llvm-upstream/llvm/lib/CodeGen/PrologEpilogInserter.cpp:269:41
#13 0x000055b7fbe675c0
llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
/home/nick/llvm-upstream/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:33
#14 0x000055b7fc379547 llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/nick/llvm-upstream/llvm/lib/IR/LegacyPassManager.cpp:1648:20
#15 0x000055b7fc3797ac llvm::FPPassManager::runOnModule(llvm::Module&)
/home/nick/llvm-upstream/llvm/lib/IR/LegacyPassManager.cpp:1684:13
#16 0x000055b7fc379bd6 (anonymous
namespace)::MPPassManager::runOnModule(llvm::Module&)
/home/nick/llvm-upstream/llvm/lib/IR/LegacyPassManager.cpp:1749:20
#17 0x000055b7fc37a338 llvm::legacy::PassManagerImpl::run(llvm::Module&)
/home/nick/llvm-upstream/llvm/lib/IR/LegacyPassManager.cpp:1862:13
#18 0x000055b7fc37a535 llvm::legacy::PassManager::run(llvm::Module&)
/home/nick/llvm-upstream/llvm/lib/IR/LegacyPassManager.cpp:1894:1
#19 0x000055b7fb4b7486 compileModule(char**, llvm::LLVMContext&)
/home/nick/llvm-upstream/llvm/tools/llc/llc.cpp:605:66
#20 0x000055b7fb4b5bff main
/home/nick/llvm-upstream/llvm/tools/llc/llc.cpp:355:35
#21 0x00007ff88e01cbbb __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x26bbb)
#22 0x000055b7fb4b402a _start (llvm-upstream/build/bin/llc+0x2ea702a)

The same b.ll file is a big strange, but this is the shortest I could get:

; ModuleID = 'b.bc'
source_filename = "module"
target triple = "x86_64-unknown-linux-gnu"

declare void @llvm.experimental.stackmap(i64, i32, ...)

define void @fn1774(i8* %0, i64 %base160) {
entry:
  %local9 = alloca i32, align 4
  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 3280, i32 0, i32*
nonnull %local9)
  %s188 = add i64 0, %base160
  %s190 = add i64 %s188, 24
  %s191 = inttoptr i64 %s190 to i64*
  store i64 -99999, i64* %s191, align 4
  %s194 = add i64 0, %base160
  %s196 = add i64 %s194, 32
  %s197 = inttoptr i64 %s196 to i64*
  store i64 -99999, i64* %s197, align 4
  %s200 = add i64 0, %base160
  %s202 = add i64 %s200, 40
  %s203 = inttoptr i64 %s202 to i64*
  store i64 -99999, i64* %s203, align 4
  %s206 = add i64 0, %base160
  %s208 = add i64 %s206, 48
  %s209 = inttoptr i64 %s208 to i64*
  store i64 0, i64* %s209, align 4
  %s236 = call i32 undef(i8* nonnull %0)
  %s262 = add i64 0, %base160
  %s264 = add i64 %s262, 24
  %s265 = inttoptr i64 %s264 to i64*
  store i64 -99999, i64* %s265, align 4
  %s268 = add i64 0, %base160
  %s270 = add i64 %s268, 32
  %s271 = inttoptr i64 %s270 to i64*
  store i64 -99999, i64* %s271, align 4
  %s274 = add i64 0, %base160
  %s276 = add i64 %s274, 40
  %s277 = inttoptr i64 %s276 to i64*
  store i64 -99999, i64* %s277, align 4
  %s280 = add i64 0, %base160
  %s282 = add i64 %s280, 48
  %s283 = inttoptr i64 %s282 to i64*
  store i64 0, i64* %s283, align 4
  unreachable
}</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>