diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index d974069b826..c3f6563d199 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -634,8 +634,7 @@ X86Operand *X86AsmParser::ParseIntelBracExpression(unsigned Size) {
 	Scale = Val;
       } else if (getLexer().is(AsmToken::RBrac)) {
 	const MCExpr *ValExpr = MCConstantExpr::Create(Val, getContext());
-	Disp = isPlus ? MCUnaryExpr::CreatePlus(ValExpr, getContext()) :
-	  MCUnaryExpr::CreateMinus(ValExpr, getContext());
+	Disp = isPlus ? ValExpr : MCUnaryExpr::CreateMinus(ValExpr, getContext());
       } else
 	return ErrorOperand(PlusLoc, "unexpected token after +");
     }
diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s
index 2a54b320c5b..2966dd7822d 100644
--- a/test/MC/X86/intel-syntax.s
+++ b/test/MC/X86/intel-syntax.s
@@ -7,6 +7,8 @@ _test:
 _main:
 // CHECK:	movl	$257, -4(%rsp)
 	mov	DWORD PTR [RSP - 4], 257
+// CHECK:	movl	$258, 4(%rsp)
+	mov	DWORD PTR [RSP + 4], 258
 // CHECK:	movq	$123, -16(%rsp)
 	mov	QWORD PTR [RSP - 16], 123
 // CHECK:	movb	$97, -17(%rsp)