Fix some column padding bugs, reorganize things as suggested by Chris
and eliminate complexity.  Yay!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78243 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 3102bda..ec62822 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -782,6 +782,20 @@
     }
   O << '\n';
 }
+
+/// getOperandColumn - Return the output column number (zero-based)
+/// for operand % "operand."  If TargetAsmInfo has FirstOperandColumn
+/// == 0 or MaxOperandLength == 0, return 0, meaning column alignment
+/// is disabled.
+unsigned AsmPrinter::getOperandColumn(int operand) const {
+  if (TAI->getFirstOperandColumn() > 0 && TAI->getMaxOperandLength() > 0) {
+    return TAI->getFirstOperandColumn()
+      + (TAI->getMaxOperandLength()+1)*(operand-1);
+  }
+  else {
+    return 0;
+  }
+}
     
 /// PadToColumn - This gets called every time a tab is emitted.  If
 /// column padding is turned on, we replace the tab with the
@@ -789,8 +803,8 @@
 /// space, except for the first operand so that initial operands are
 /// always lined up by tabs.
 void AsmPrinter::PadToColumn(unsigned Operand) const {
-  if (TAI->getOperandColumn(Operand) > 0) {
-    O.PadToColumn(TAI->getOperandColumn(Operand), 1);
+  if (getOperandColumn(Operand) > 0) {
+    O.PadToColumn(getOperandColumn(Operand), 1);
   }
   else {
     if (Operand == 1) {