diff options
author | Pete Cooper <peter_cooper@apple.com> | 2015-06-08 17:17:12 +0000 |
---|---|---|
committer | Pete Cooper <peter_cooper@apple.com> | 2015-06-08 17:17:12 +0000 |
commit | ad9f9c351704fd91e9cfd021bfe1d91976041637 (patch) | |
tree | e38c8aaba3ea4694126eef61eff37c0848a01aa5 /llvm/lib/MC/WinCOFFObjectWriter.cpp | |
parent | a3ab3841c0cce9c4747fae96ef25e5695fc1f856 (diff) | |
download | llvm-ad9f9c351704fd91e9cfd021bfe1d91976041637.zip llvm-ad9f9c351704fd91e9cfd021bfe1d91976041637.tar.gz llvm-ad9f9c351704fd91e9cfd021bfe1d91976041637.tar.bz2 |
Add MCSymbolCOFF class and use it to get and set the COFF type field.
Reviewed by Rafael EspĂndola.
llvm-svn: 239312
Diffstat (limited to 'llvm/lib/MC/WinCOFFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/WinCOFFObjectWriter.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp index ccc791e..3aabce6 100644 --- a/llvm/lib/MC/WinCOFFObjectWriter.cpp +++ b/llvm/lib/MC/WinCOFFObjectWriter.cpp @@ -25,7 +25,7 @@ #include "llvm/MC/MCObjectWriter.h" #include "llvm/MC/MCSection.h" #include "llvm/MC/MCSectionCOFF.h" -#include "llvm/MC/MCSymbol.h" +#include "llvm/MC/MCSymbolCOFF.h" #include "llvm/MC/MCValue.h" #include "llvm/MC/StringTableBuilder.h" #include "llvm/Support/COFF.h" @@ -428,8 +428,8 @@ void WinCOFFObjectWriter::DefineSymbol(const MCSymbol &Symbol, const MCSymbol *Base = Layout.getBaseSymbol(Symbol); coff_symbol->Data.Value = getSymbolValue(Symbol, Layout); - coff_symbol->Data.Type = - (Symbol.getFlags() & COFF::SF_TypeMask) >> COFF::SF_TypeShift; + const MCSymbolCOFF &SymbolCOFF = cast<MCSymbolCOFF>(Symbol); + coff_symbol->Data.Type = SymbolCOFF.getType(); coff_symbol->Data.StorageClass = (Symbol.getFlags() & COFF::SF_ClassMask) >> COFF::SF_ClassShift; @@ -675,8 +675,8 @@ bool WinCOFFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl( // MS LINK expects to be able to replace all references to a function with a // thunk to implement their /INCREMENTAL feature. Make sure we don't optimize // away any relocations to functions. - if ((((SymA.getFlags() & COFF::SF_TypeMask) >> COFF::SF_TypeShift) >> - COFF::SCT_COMPLEX_TYPE_SHIFT) == COFF::IMAGE_SYM_DTYPE_FUNCTION) + uint16_t Type = cast<MCSymbolCOFF>(SymA).getType(); + if ((Type >> COFF::SCT_COMPLEX_TYPE_SHIFT) == COFF::IMAGE_SYM_DTYPE_FUNCTION) return false; return MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(Asm, SymA, FB, InSet, IsPCRel); |