diff --git a/test/MC/AsmParser/exprs.s b/test/MC/AsmParser/exprs.s
index 1627d9e..14bafd5 100644
--- a/test/MC/AsmParser/exprs.s
+++ b/test/MC/AsmParser/exprs.s
@@ -3,7 +3,13 @@
 // greps).
         
 // RUN: llvm-mc %s > %t
-        
+
+        .text
+g:
+h:
+j:
+k:      
+        .data
         .byte !1 + 2
         .byte !0
         .byte ~0
@@ -36,4 +42,14 @@
 
         .set c, 10
         .byte c + 1
+
+        d = e + 10
+        .long d
+
+        f = g - h + 5
+        .long f
+
+        i = (j + 10) - (k + 2)
+        .long i
+        
         
\ No newline at end of file
diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp
index 9330728..4c6c4cc 100644
--- a/tools/llvm-mc/AsmParser.cpp
+++ b/tools/llvm-mc/AsmParser.cpp
@@ -144,11 +144,12 @@
 bool AsmParser::ParseAbsoluteExpression(int64_t &Res) {
   AsmExpr *Expr;
   
+  SMLoc StartLoc = Lexer.getLoc();
   if (ParseExpression(Expr))
     return true;
 
   if (!Expr->EvaluateAsAbsolute(Ctx, Res))
-    return TokError("expected absolute expression");
+    return Error(StartLoc, "expected absolute expression");
 
   return false;
 }
@@ -156,11 +157,12 @@
 bool AsmParser::ParseRelocatableExpression(MCValue &Res) {
   AsmExpr *Expr;
   
+  SMLoc StartLoc = Lexer.getLoc();
   if (ParseExpression(Expr))
     return true;
 
   if (!Expr->EvaluateAsRelocatable(Ctx, Res))
-    return TokError("expected relocatable expression");
+    return Error(StartLoc, "expected relocatable expression");
 
   return false;
 }
@@ -525,8 +527,8 @@
   // FIXME: Use better location, we should use proper tokens.
   SMLoc EqualLoc = Lexer.getLoc();
 
-  int64_t Value;
-  if (ParseAbsoluteExpression(Value))
+  MCValue Value;
+  if (ParseRelocatableExpression(Value))
     return true;
   
   if (Lexer.isNot(asmtok::EndOfStatement))
@@ -549,7 +551,7 @@
     return Error(EqualLoc, "invalid assignment to external symbol");
 
   // Do the assignment.
-  Out.EmitAssignment(Sym, MCValue::get(Value), IsDotSet);
+  Out.EmitAssignment(Sym, Value, IsDotSet);
 
   return false;
 }
@@ -651,11 +653,11 @@
 bool AsmParser::ParseDirectiveValue(unsigned Size) {
   if (Lexer.isNot(asmtok::EndOfStatement)) {
     for (;;) {
-      int64_t Expr;
-      if (ParseAbsoluteExpression(Expr))
+      MCValue Expr;
+      if (ParseRelocatableExpression(Expr))
         return true;
 
-      Out.EmitValue(MCValue::get(Expr), Size);
+      Out.EmitValue(Expr, Size);
 
       if (Lexer.is(asmtok::EndOfStatement))
         break;
@@ -746,8 +748,8 @@
 /// ParseDirectiveOrg
 ///  ::= .org expression [ , expression ]
 bool AsmParser::ParseDirectiveOrg() {
-  int64_t Offset;
-  if (ParseAbsoluteExpression(Offset))
+  MCValue Offset;
+  if (ParseRelocatableExpression(Offset))
     return true;
 
   // Parse optional fill expression.
@@ -765,8 +767,10 @@
   }
 
   Lexer.Lex();
-  
-  Out.EmitValueToOffset(MCValue::get(Offset), FillExpr);
+
+  // FIXME: Only limited forms of relocatable expressions are accepted here, it
+  // has to be relative to the current section.
+  Out.EmitValueToOffset(Offset, FillExpr);
 
   return false;
 }
