fix a latent bug my inline asm stuff exposed:

MachineOperand::isIdenticalTo wasn't handling metadata operands.

llvm-svn: 100636
This commit is contained in:
Chris Lattner 2010-04-07 18:03:19 +00:00
parent 3b4abb6792
commit f839ee0c13
2 changed files with 18 additions and 0 deletions

View File

@ -192,6 +192,8 @@ bool MachineOperand::isIdenticalTo(const MachineOperand &Other) const {
return getBlockAddress() == Other.getBlockAddress();
case MachineOperand::MO_MCSymbol:
return getMCSymbol() == Other.getMCSymbol();
case MachineOperand::MO_Metadata:
return getMetadata() == Other.getMetadata();
}
}

View File

@ -92,3 +92,19 @@ foo:
}
; Crash commoning identical asms.
define void @test6(i1 %C) nounwind optsize ssp {
entry:
br i1 %C, label %do.body55, label %do.body92
do.body55: ; preds = %if.else36
call void asm sideeffect "foo", "~{dirflag},~{fpsr},~{flags}"() nounwind, !srcloc !0
ret void
do.body92: ; preds = %if.then66
call void asm sideeffect "foo", "~{dirflag},~{fpsr},~{flags}"() nounwind, !srcloc !1
ret void
}
!0 = metadata !{i32 633550}
!1 = metadata !{i32 634261}