Don't crash when a glue node contains an internal CopyToReg

This is necessary to support the existing ppc lowering code for indirect calls.
Fixes PR12071.

llvm-svn: 151373
This commit is contained in:
Hal Finkel 2012-02-24 17:53:59 +00:00
parent 3a08c1cd3b
commit b9a3d61894
2 changed files with 15 additions and 0 deletions

View File

@ -766,6 +766,9 @@ EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned,
if (F->getOpcode() == ISD::CopyFromReg) {
UsedRegs.push_back(cast<RegisterSDNode>(F->getOperand(1))->getReg());
continue;
} else if (F->getOpcode() == ISD::CopyToReg) {
// Skip CopyToReg nodes that are internal to the glue chain.
continue;
}
// Collect declared implicit uses.
const MCInstrDesc &MCID = TII->get(F->getMachineOpcode());

View File

@ -0,0 +1,12 @@
; RUN: llc < %s -march=ppc64 | FileCheck %s
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
define void @test1() {
entry:
%call.i75 = call zeroext i8 undef(i8* undef, i8 zeroext 10)
unreachable
}
; CHECK: @test1