mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Verify that there is no kill flag on tied operands on two-address instructions.
This extra check is not trigged when runnning "make check" on top-of-tree. Change error message to better match llvm_unreachable() grammar. Don't call llvm_unreachable() when writing error messages to a file, but keep going. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75860 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5d77cad60b
commit
f7d3e696a5
@ -219,11 +219,10 @@ MachineVerifier::runOnMachineFunction(MachineFunction &MF)
|
||||
|
||||
if (OutFileName)
|
||||
OutFile.close();
|
||||
|
||||
if (foundErrors) {
|
||||
else if (foundErrors) {
|
||||
std::string msg;
|
||||
raw_string_ostream Msg(msg);
|
||||
Msg << "\nStopping with " << foundErrors << " machine code errors.";
|
||||
Msg << "Found " << foundErrors << " machine code errors.";
|
||||
llvm_report_error(Msg.str());
|
||||
}
|
||||
|
||||
@ -353,8 +352,12 @@ MachineVerifier::visitMachineOperand(const MachineOperand *MO, unsigned MONum)
|
||||
if (MO->isUse()) {
|
||||
if (MO->isKill()) {
|
||||
addRegWithSubRegs(regsKilled, Reg);
|
||||
// Tied operands on two-address instuctions MUST NOT have a <kill> flag.
|
||||
if (MI->isRegTiedToDefOperand(MONum))
|
||||
report("Illegal kill flag on two-address instruction operand",
|
||||
MO, MONum);
|
||||
} else {
|
||||
// TwoAddress instr modyfying a reg is treated as kill+def.
|
||||
// TwoAddress instr modifying a reg is treated as kill+def.
|
||||
unsigned defIdx;
|
||||
if (MI->isRegTiedToDefOperand(MONum, &defIdx) &&
|
||||
MI->getOperand(defIdx).getReg() == Reg)
|
||||
|
Loading…
Reference in New Issue
Block a user