summaryrefslogtreecommitdiff
path: root/lib/MC/MCExpr.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-12-16 18:36:25 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-12-16 18:36:25 +0000
commitdd18e28c6247469e93a27afaedd846105d9327ea (patch)
tree24bca2666aee56c8cc6e59dbadf47024b199d14b /lib/MC/MCExpr.cpp
parent56b2eaf450833439b3bf26611c6a23d4a6f7c41f (diff)
downloadllvm-dd18e28c6247469e93a27afaedd846105d9327ea.tar.gz
llvm-dd18e28c6247469e93a27afaedd846105d9327ea.tar.bz2
llvm-dd18e28c6247469e93a27afaedd846105d9327ea.tar.xz
MC/Expr: Add a doxyment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121988 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCExpr.cpp')
-rw-r--r--lib/MC/MCExpr.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp
index 756e7598d5..a3ef71f630 100644
--- a/lib/MC/MCExpr.cpp
+++ b/lib/MC/MCExpr.cpp
@@ -290,6 +290,20 @@ bool MCExpr::EvaluateAsAbsolute(int64_t &Res, const MCAssembler *Asm,
return true;
}
+/// \brief Evaluate the result of an add between (conceptually) two MCValues.
+///
+/// This routine conceptually attempts to construct an MCValue:
+/// Result = (Result_A - Result_B + Result_Cst)
+/// from two MCValue's LHS and RHS where
+/// Result = LHS + RHS
+/// and
+/// Result = (LHS_A - LHS_B + LHS_Cst) + (RHS_A - RHS_B + RHS_Cst).
+///
+/// This routine attempts to aggresively fold the operands such that the result
+/// is representable in an MCValue, but may not always succeed.
+///
+/// \returns True on success, false if the result is not representable in an
+/// MCValue.
static bool EvaluateSymbolicAdd(const MCAssembler *Asm,
const MCAsmLayout *Layout,
const SectionAddrMap *Addrs,