Fix miscompilations in the SparcV9 backend that were induced by this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20041011/019311.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17130 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index d23252e..d9a865e 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -153,10 +153,20 @@
   }
 
   MachineOperand(Value *V, MachineOperandType OpTy, UseType UseTy,
+		 bool isPCRelative = false)
+    : flags(UseTy | (isPCRelative?PCRELATIVE:0)), opType(OpTy) {
+    assert(OpTy != MachineOperand::MO_GlobalAddress);
+    zeroContents();
+    contents.value = V;
+    extra.regNum = -1;
+  }
+
+  MachineOperand(GlobalValue *V, MachineOperandType OpTy, UseType UseTy,
 		 bool isPCRelative = false, int Offset = 0)
     : flags(UseTy | (isPCRelative?PCRELATIVE:0)), opType(OpTy) {
+    assert(OpTy == MachineOperand::MO_GlobalAddress);
     zeroContents ();
-    contents.value = V;
+    contents.value = (Value*)V;
     extra.offset = Offset;
   }
 
@@ -642,7 +652,7 @@
     assert(!OperandsComplete() &&
            "Trying to add an operand to a machine instr that is already done!");
     operands.push_back(
-      MachineOperand((Value*)GV, MachineOperand::MO_GlobalAddress,
+      MachineOperand(GV, MachineOperand::MO_GlobalAddress,
                      MachineOperand::Use, isPCRelative, Offset));
   }