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)
commitcddcabadf265eec52080a46cf951063e7cb3bf4a
tree6ebc420ca4d82877299b4537babfc5cce31c8dd0
parent79fa3fc84a56dcfc280cf1ef96b80ca1f3ce8c8f
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239012 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/MC/MCSymbolELF.h
lib/MC/ELFObjectWriter.cpp
lib/MC/MCSymbolELF.cpp
lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp