mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-19 02:42:58 +00:00
Fix for test/CodeGen/PowerPC/2008-10-17-AsmMatchingOperands.ll crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114767 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5be3922321
commit
54584743f3
@ -5434,6 +5434,26 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
||||
for (unsigned i = 0, e = ConstraintOperands.size(); i != e; ++i) {
|
||||
SDISelAsmOperandInfo &OpInfo = ConstraintOperands[i];
|
||||
|
||||
// If this is an output operand with a matching input operand, look up the
|
||||
// matching input. If their types mismatch, e.g. one is an integer, the
|
||||
// other is floating point, or their sizes are different, flag it as an
|
||||
// error.
|
||||
if (OpInfo.hasMatchingInput()) {
|
||||
SDISelAsmOperandInfo &Input = ConstraintOperands[OpInfo.MatchingInput];
|
||||
|
||||
if (OpInfo.ConstraintVT != Input.ConstraintVT) {
|
||||
if ((OpInfo.ConstraintVT.isInteger() !=
|
||||
Input.ConstraintVT.isInteger()) ||
|
||||
(OpInfo.ConstraintVT.getSizeInBits() !=
|
||||
Input.ConstraintVT.getSizeInBits())) {
|
||||
report_fatal_error("Unsupported asm: input constraint"
|
||||
" with a matching output constraint of"
|
||||
" incompatible type!");
|
||||
}
|
||||
Input.ConstraintVT = OpInfo.ConstraintVT;
|
||||
}
|
||||
}
|
||||
|
||||
// Compute the constraint code and ConstraintType to use.
|
||||
TLI.ComputeConstraintToUse(OpInfo, OpInfo.CallOperand, &DAG);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user