summaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegAllocFast.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-10-05 19:33:37 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-10-05 19:33:37 +0000
commit87855d3013d9a87a3aeb51508312b76e200baac7 (patch)
treed2199320270a83a7dbd2dafb89182f716896fa87 /lib/CodeGen/RegAllocFast.cpp
parent617ba175da2885aa3e747ee7a00faa5ee4110579 (diff)
downloadllvm-87855d3013d9a87a3aeb51508312b76e200baac7.tar.gz
llvm-87855d3013d9a87a3aeb51508312b76e200baac7.tar.bz2
llvm-87855d3013d9a87a3aeb51508312b76e200baac7.tar.xz
Emit a better error when running out of registers on inline asm.
The most likely case where this error happens is when the user specifies too many register operands. Don't make it look like an internal LLVM bug when we can see that the error is coming from an inline asm instruction. For other instructions we keep the "ran out of registers" error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192041 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocFast.cpp')
-rw-r--r--lib/CodeGen/RegAllocFast.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/CodeGen/RegAllocFast.cpp b/lib/CodeGen/RegAllocFast.cpp
index 400025074c..6c2e60b5c6 100644
--- a/lib/CodeGen/RegAllocFast.cpp
+++ b/lib/CodeGen/RegAllocFast.cpp
@@ -569,7 +569,10 @@ RAFast::LiveRegMap::iterator RAFast::allocVirtReg(MachineInstr *MI,
}
// Nothing we can do. Report an error and keep going with a bad allocation.
- MI->emitError("ran out of registers during register allocation");
+ if (MI->isInlineAsm())
+ MI->emitError("inline assembly requires more registers than available");
+ else
+ MI->emitError("ran out of registers during register allocation");
definePhysReg(MI, *AO.begin(), regFree);
return assignVirtToPhysReg(VirtReg, *AO.begin());
}