Print <def,read-undef> to avoid confusion.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 20 Apr 2012 21:45:33 +0000 (21:45 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 20 Apr 2012 21:45:33 +0000 (21:45 +0000)
The <undef> flag on a def operand only applies to partial register
redefinitions. Only print the flag when relevant, and print it as
<def,read-undef> to make it clearer what it means.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155239 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineInstr.cpp

index e553a0463a2af6c631b378a7fbde4981c172859c..46ea00383ba4b1dbd8b7f68c4eba83e111c23a90 100644 (file)
@@ -255,6 +255,10 @@ void MachineOperand::print(raw_ostream &OS, const TargetMachine *TM) const {
           OS << "imp-";
         OS << "def";
         NeedComma = true;
+        // <def,read-undef> only makes sense when getSubReg() is set.
+        // Don't clutter the output otherwise.
+        if (isUndef() && getSubReg())
+          OS << ",read-undef";
       } else if (isImplicit()) {
           OS << "imp-use";
           NeedComma = true;
@@ -271,7 +275,7 @@ void MachineOperand::print(raw_ostream &OS, const TargetMachine *TM) const {
           OS << "dead";
           NeedComma = true;
         }
-        if (isUndef()) {
+        if (isUndef() && isUse()) {
           if (NeedComma) OS << ',';
           OS << "undef";
           NeedComma = true;