aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-08-11 17:47:52 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-08-11 17:47:52 +0000
commit6b7e0850a849ca4fff63bf6a031b37e754c5ffc7 (patch)
tree1061474cc93a41108e8b53f6b1bb38058c193cbf
parentaca6b328677fe567e2e7293600aa8a724ab92219 (diff)
downloadexternal_llvm-6b7e0850a849ca4fff63bf6a031b37e754c5ffc7.zip
external_llvm-6b7e0850a849ca4fff63bf6a031b37e754c5ffc7.tar.gz
external_llvm-6b7e0850a849ca4fff63bf6a031b37e754c5ffc7.tar.bz2
llvm-mc: Fix a crash on invalid due to a typo in relocatable expression
evaluation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78692 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/MC/AsmParser/exprs-invalid.s8
-rw-r--r--tools/llvm-mc/AsmExpr.cpp2
2 files changed, 9 insertions, 1 deletions
diff --git a/test/MC/AsmParser/exprs-invalid.s b/test/MC/AsmParser/exprs-invalid.s
new file mode 100644
index 0000000..4accc39
--- /dev/null
+++ b/test/MC/AsmParser/exprs-invalid.s
@@ -0,0 +1,8 @@
+// RUN: not llvm-mc -triple i386-unknown-unknown %s 2> %t
+// RUN: FileCheck -input-file %t %s
+
+ .text
+a:
+ .data
+// CHECK: expected relocatable expression
+ .long -(0 + a)
diff --git a/tools/llvm-mc/AsmExpr.cpp b/tools/llvm-mc/AsmExpr.cpp
index c3362e4..fbb0c53 100644
--- a/tools/llvm-mc/AsmExpr.cpp
+++ b/tools/llvm-mc/AsmExpr.cpp
@@ -81,7 +81,7 @@ bool AsmExpr::EvaluateAsRelocatable(MCContext &Ctx, MCValue &Res) const {
break;
case AsmUnaryExpr::Minus:
/// -(a - b + const) ==> (b - a - const)
- if (Value.getSymA() && !Value.getSymA())
+ if (Value.getSymA() && !Value.getSymB())
return false;
Res = MCValue::get(Value.getSymB(), Value.getSymA(),
-Value.getConstant());