Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[inline asm] Assertion failed: "Interval does not exist for register" / LLVM ERROR: Ran out of registers during register allocation! #5124

Closed
llvmbot opened this issue Aug 22, 2009 · 6 comments
Labels
bugzilla Issues migrated from bugzilla

Comments

@llvmbot
Copy link
Collaborator

llvmbot commented Aug 22, 2009

Bugzilla Link 4752
Resolution FIXED
Resolved on Jul 07, 2010 13:30
Version unspecified
OS Linux
Attachments ZIP archive with C and BC files
Reporter LLVM Bugzilla Contributor

Extended Description

Two errors, depending on optimization level. LLVM r79531.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Sep 17, 2009

No crash with -regalloc=simple, but wrong is generated.

@llvmbot
Copy link
Collaborator Author

llvmbot commented Sep 17, 2009

Wrong code, I mean. :)

@llvmbot
Copy link
Collaborator Author

llvmbot commented Feb 9, 2010

Is this still broken with tot?

@llvmbot
Copy link
Collaborator Author

llvmbot commented Feb 13, 2010

In r96110:

$ llc -regalloc=linearscan bug-O1.bc
llc: /tmp/llvm/lib/CodeGen/RegAllocLinearScan.cpp:1183: void::RALinScan::assignRegOrStackSlotAtInterval(llvm::LiveInterval*): Assertion `false && "Ran out of registers during register allocation!"' failed.
0 llc 0x08764913
Stack dump:
0. Program arguments: llc -regalloc=linearscan bug-O1.bc

  1. Running pass 'Linear Scan Register Allocator' on function '@g'
    Aborted

$ llc -regalloc=local bug-O1.bc
LLVM ERROR: Ran out of registers during register allocation!
Please check your inline asm statement for invalid constraints:
INLINEASM <es:push $0
call ${1:a}
pop %edx>, 11, %EBP, 11, %EBP, 14, %AX<earlyclobber,def,dead>, 14, %BX<earlyclobber,def,dead>, 14, %CX<earlyclobber,def,dead>, 14, %DX<earlyclobber,def,dead>, 14, %SI<earlyclobber,def,dead>, 14, %DI<earlyclobber,def,dead>, 14, %EFLAGS<earlyclobber,def,dead>

$ llc -regalloc=pbqp bug-O1.bc
llc: /tmp/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1668: std::vector<llvm::LiveInterval*, std::allocatorllvm::LiveInterval* > llvm::LiveIntervals::addIntervalsForSpills(const llvm::LiveInterval&, llvm::SmallVectorImplllvm::LiveInterval*&, const llvm::MachineLoopInfo*, llvm::VirtRegMap&): Assertion `li.weight != (__builtin_huge_valf()) && "attempt to spill already spilled interval!"' failed.
0 llc 0x08764913
Stack dump:
0. Program arguments: llc -regalloc=pbqp bug-O1.bc

  1. Running pass 'PBQP Register Allocator' on function '@g'
    Aborted

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jun 28, 2010

I believe this is fixed as of 106893. (Note that &f is not valid with "i" in PIC modes, as the address cannot be computed at linktime.)

@llvmbot
Copy link
Collaborator Author

llvmbot commented Jul 7, 2010

&f should actually work with "i" in RIP-relative mode, which is default on Darwin x86-64. Fixed in 107727.

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 3, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla
Projects
None yet
Development

No branches or pull requests

1 participant