X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FMC%2FMCValue.cpp;h=9dfc56ef23d1f42c9f0c5ea4e532ab45161304af;hb=08f77a9f422e96110d8400e4caaf6a51be49a1f3;hp=21d9e2102e2d35dae21fb87ae59f74e971b533af;hpb=4266ae806798f1e8982a53bb9babe1e508adfc68;p=oota-llvm.git diff --git a/lib/MC/MCValue.cpp b/lib/MC/MCValue.cpp index 21d9e2102e2..9dfc56ef23d 100644 --- a/lib/MC/MCValue.cpp +++ b/lib/MC/MCValue.cpp @@ -10,6 +10,7 @@ #include "llvm/MC/MCValue.h" #include "llvm/MC/MCExpr.h" #include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; @@ -41,3 +42,20 @@ void MCValue::dump() const { print(dbgs(), nullptr); } #endif + +MCSymbolRefExpr::VariantKind MCValue::getAccessVariant() const { + const MCSymbolRefExpr *B = getSymB(); + if (B) { + if (B->getKind() != MCSymbolRefExpr::VK_None) + llvm_unreachable("unsupported"); + } + + const MCSymbolRefExpr *A = getSymA(); + if (!A) + return MCSymbolRefExpr::VK_None; + + MCSymbolRefExpr::VariantKind Kind = A->getKind(); + if (Kind == MCSymbolRefExpr::VK_WEAKREF) + return MCSymbolRefExpr::VK_None; + return Kind; +}