diff --git a/lib/Target/Alpha/AlphaISelPattern.cpp b/lib/Target/Alpha/AlphaISelPattern.cpp
index bab3c6e..5229743 100644
--- a/lib/Target/Alpha/AlphaISelPattern.cpp
+++ b/lib/Target/Alpha/AlphaISelPattern.cpp
@@ -604,37 +604,48 @@
   }
 }
 
-//Find the offset of the arg in it's parent's function
-static int getValueOffset(const Value* v)
+static void getValueInfo(const Value* v, int& type, int& fun, int& offset)
 {
-  if (v == NULL)
-    return 0;
-
-  const Instruction* itarget = dyn_cast<Instruction>(v);
-  const BasicBlock* btarget = itarget->getParent();
-  const Function* ftarget = btarget->getParent();
-
-  //offset due to earlier BBs
-  int i = 1;
-  for(Function::const_iterator ii = ftarget->begin(); &*ii != btarget; ++ii)
-    i += ii->size();
-
-  for(BasicBlock::const_iterator ii = btarget->begin(); &*ii != itarget; ++ii)
-    ++i;
-
-  return i;
-}
-//Find the offset of the function in it's module
-static int getFunctionOffset(const Function* fun)
-{
-  const Module* M = fun->getParent();
-
-  //offset due to earlier BBs
-  int i = 0;
-  for(Module::const_iterator ii = M->begin(); &*ii != fun; ++ii)
-    ++i;
-
-  return i;
+  if (v == NULL) {
+    type = 0;
+    fun = 0;
+    offset = 0;
+  } else if (const GlobalValue* GV = dyn_cast<GlobalValue>(v)) {
+    type = 1;
+    fun = 1;
+    const Module* M = GV->getParent();
+      int i = 0;
+      for(Module::const_global_iterator ii = M->global_begin(); &*ii != GV; ++ii)
+        ++i;
+      offset = i;
+  } else if (const Argument* Arg = dyn_cast<Argument>(v)) {
+    type = 2;
+    const Function* F = Arg->getParent();
+    const Module* M = F->getParent();
+    int i = 0;
+    for(Module::const_iterator ii = M->begin(); &*ii != F; ++ii)
+      ++i;
+    fun = i;
+    i = 0;
+    for(Function::const_arg_iterator ii = F->arg_begin(); &*ii != Arg; ++ii)
+      ++i;
+    offset = i;
+  } else if (const Instruction* I = dyn_cast<Instruction>(v)) {
+    type = 3;
+    const BasicBlock* bb = I->getParent();
+    const Function* F = bb->getParent();
+    const Module* M = F->getParent();
+    int i = 0;
+    for(Module::const_iterator ii = M->begin(); &*ii != F; ++ii)
+      ++i;
+    fun = i;
+    i = 0;
+    for(Function::const_iterator ii = F->begin(); &*ii != bb; ++ii)
+      i += ii->size();
+    for(BasicBlock::const_iterator ii = bb->begin(); &*ii != I; ++ii)
+      ++i;
+    offset = i;
+  }
 }
 
 static int getUID()
@@ -1244,18 +1255,18 @@
           assert(opcode != ISD::SEXTLOAD && "Not zext"); break;
         }
 
-      int i = 0, j = 0;
-      if (EnableAlphaLSMark) {
-        i = getValueOffset(dyn_cast<SrcValueSDNode>(N.getOperand(2))
-                           ->getValue());
-        j = getFunctionOffset(BB->getParent()->getFunction());
-      }
+      int i, j, k;
+      if (EnableAlphaLSMark)
+        getValueInfo(dyn_cast<SrcValueSDNode>(N.getOperand(2))->getValue(),
+                     i, j, k);
+
       if (GlobalAddressSDNode *GASD = 
           dyn_cast<GlobalAddressSDNode>(Address)) {
         if (GASD->getGlobal()->isExternal()) {
           Tmp1 = SelectExpr(Address);
           if (EnableAlphaLSMark)
-            BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+            BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+              .addImm(getUID());
           BuildMI(BB, Opc, 2, Result).addImm(0).addReg(Tmp1);
         } else {
           Tmp1 = MakeReg(MVT::i64);
@@ -1263,7 +1274,8 @@
           BuildMI(BB, Alpha::LDAHr, 2, Tmp1)
             .addGlobalAddress(GASD->getGlobal()).addReg(Alpha::R29);
           if (EnableAlphaLSMark)
-            BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+            BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+              .addImm(getUID());
           BuildMI(BB, GetRelVersion(Opc), 2, Result)
             .addGlobalAddress(GASD->getGlobal()).addReg(Tmp1);
         }
@@ -1274,12 +1286,14 @@
         BuildMI(BB, Alpha::LDAHr, 2, Tmp1).addConstantPoolIndex(CP->getIndex())
           .addReg(Alpha::R29);
         if (EnableAlphaLSMark)
-          BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+          BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+            .addImm(getUID());
         BuildMI(BB, GetRelVersion(Opc), 2, Result)
           .addConstantPoolIndex(CP->getIndex()).addReg(Tmp1);
       } else if(Address.getOpcode() == ISD::FrameIndex) {
         if (EnableAlphaLSMark)
-          BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+          BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+            .addImm(getUID());
         BuildMI(BB, Opc, 2, Result)
           .addFrameIndex(cast<FrameIndexSDNode>(Address)->getIndex())
           .addReg(Alpha::F31);
@@ -1287,7 +1301,8 @@
         long offset;
         SelectAddr(Address, Tmp1, offset);
         if (EnableAlphaLSMark)
-          BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+          BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+            .addImm(getUID());
         BuildMI(BB, Opc, 2, Result).addImm(offset).addReg(Tmp1);
       }
       return Result;
@@ -1298,7 +1313,8 @@
     has_sym = true;
 
     if (EnableAlphaLSMark)
-      BuildMI(BB, Alpha::MEMLABEL, 3).addImm(0).addImm(1).addImm(getUID());
+      BuildMI(BB, Alpha::MEMLABEL, 4).addImm(0).addImm(0).addImm(0)
+        .addImm(getUID());
 
     BuildMI(BB, Alpha::LDQl, 2, Result)
       .addGlobalAddress(cast<GlobalAddressSDNode>(N)->getGlobal())
@@ -2268,19 +2284,18 @@
         }
       }
 
-      int i = 0, j = 0;
-      if (EnableAlphaLSMark) {
-        i = 
-          getValueOffset(dyn_cast<SrcValueSDNode>(N.getOperand(3))->getValue());
-        j = getFunctionOffset(BB->getParent()->getFunction());
-      }
+      int i, j, k;
+      if (EnableAlphaLSMark) 
+        getValueInfo(dyn_cast<SrcValueSDNode>(N.getOperand(3))->getValue(), 
+                     i, j, k);
 
       if (GlobalAddressSDNode *GASD = 
           dyn_cast<GlobalAddressSDNode>(Address)) {
         if (GASD->getGlobal()->isExternal()) {
           Tmp2 = SelectExpr(Address);
           if (EnableAlphaLSMark)
-            BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+            BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+              .addImm(getUID());
           BuildMI(BB, Opc, 3).addReg(Tmp1).addImm(0).addReg(Tmp2);
         } else {
           Tmp2 = MakeReg(MVT::i64);
@@ -2288,13 +2303,15 @@
           BuildMI(BB, Alpha::LDAHr, 2, Tmp2)
             .addGlobalAddress(GASD->getGlobal()).addReg(Alpha::R29);
           if (EnableAlphaLSMark)
-            BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+            BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+              .addImm(getUID());
           BuildMI(BB, GetRelVersion(Opc), 3).addReg(Tmp1)
             .addGlobalAddress(GASD->getGlobal()).addReg(Tmp2);
         }
       } else if(Address.getOpcode() == ISD::FrameIndex) {
         if (EnableAlphaLSMark)
-          BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+          BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+            .addImm(getUID());
         BuildMI(BB, Opc, 3).addReg(Tmp1)
           .addFrameIndex(cast<FrameIndexSDNode>(Address)->getIndex())
           .addReg(Alpha::F31);
@@ -2302,7 +2319,8 @@
         long offset;
         SelectAddr(Address, Tmp2, offset);
         if (EnableAlphaLSMark)
-          BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+          BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+            .addImm(getUID());
         BuildMI(BB, Opc, 3).addReg(Tmp1).addImm(offset).addReg(Tmp2);
       }
       return;
diff --git a/lib/Target/Alpha/AlphaInstrInfo.td b/lib/Target/Alpha/AlphaInstrInfo.td
index b7489fb..9f63eca 100644
--- a/lib/Target/Alpha/AlphaInstrInfo.td
+++ b/lib/Target/Alpha/AlphaInstrInfo.td
@@ -31,7 +31,8 @@
 def ADJUSTSTACKDOWN : PseudoInstAlpha<(ops ), "ADJDOWN">;
 def ALTENT : PseudoInstAlpha<(ops s64imm:$TARGET), "$TARGET:\n">;
 def PCLABEL : PseudoInstAlpha<(ops s64imm:$num), "PCMARKER_$num:\n">;
-def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k), "LSMARKER$$$i$$$j$$$k:\n">;
+def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k, s64imm:$m),
+         "LSMARKER$$$i$$$j$$$k$$$m:\n">;
 
 //*****************
 //These are shortcuts, the assembler expands them
