Bring back r239006 with a fix.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 4 Jun 2015 05:59:23 +0000 (05:59 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 4 Jun 2015 05:59:23 +0000 (05:59 +0000)
commit8c006ee385ad27cf7e68b7d48626c123432b438b
tree299557710cbdac7feea4e929ed9b1a97a31d7cf1
parentaf5f51f6a8e8fa5427b0c464931b307dcaaa4520
Bring back r239006 with a fix.

The fix is just that getOther had not been updated for packing the st_other
values in fewer bits and could return spurious values:

-  unsigned Other = (getFlags() & (0x3f << ELF_STO_Shift)) >> ELF_STO_Shift;
+  unsigned Other = (getFlags() & (0x7 << ELF_STO_Shift)) >> ELF_STO_Shift;

Original message:

Pack the MCSymbolELF bit fields into MCSymbol's Flags.

This reduces MCSymolfELF from 64 bytes to 56 bytes on x86_64.

While at it, also make getOther/setOther easier to use by accepting unshifted
STO_* values.

llvm-svn: 239012
llvm/include/llvm/MC/MCSymbolELF.h
llvm/lib/MC/ELFObjectWriter.cpp
llvm/lib/MC/MCSymbolELF.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp