mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
Remove getFunctionAlignment from TargetELFInfo and use new MachineFunction alignment method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74686 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2c3f00cd94
commit
3d62a412fb
@ -89,10 +89,6 @@ namespace llvm {
|
||||
: (hasRelocationAddend() ? 12 : 8);
|
||||
}
|
||||
|
||||
/// getFunctionAlignment - Returns the alignment for function 'F', targets
|
||||
/// with different alignment constraints should overload this method
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
/// getRelocationType - Returns the target specific ELF Relocation type.
|
||||
/// 'MachineRelTy' contains the object code independent relocation type
|
||||
virtual unsigned getRelocationType(unsigned MachineRelTy) const = 0;
|
||||
|
@ -40,10 +40,11 @@ void ELFCodeEmitter::startFunction(MachineFunction &MF) {
|
||||
BufferBegin = &BD[0];
|
||||
BufferEnd = BufferBegin + BD.capacity();
|
||||
|
||||
// Align the output buffer with function alignment, and
|
||||
// upgrade the section alignment if required
|
||||
unsigned Align =
|
||||
TM.getELFWriterInfo()->getFunctionAlignment(MF.getFunction());
|
||||
// Get the function alignment in bytes
|
||||
unsigned Align = (1 << MF.getAlignment());
|
||||
|
||||
// Align the section size with the function alignment, so the function can
|
||||
// start in a aligned offset, also update the section alignment if needed.
|
||||
if (ES->Align < Align) ES->Align = Align;
|
||||
ES->Size = (ES->Size + (Align-1)) & (-Align);
|
||||
|
||||
|
@ -24,13 +24,3 @@ TargetELFWriterInfo::TargetELFWriterInfo(TargetMachine &tm) : TM(tm) {
|
||||
|
||||
TargetELFWriterInfo::~TargetELFWriterInfo() {}
|
||||
|
||||
/// getFunctionAlignment - Returns the alignment for function 'F', targets
|
||||
/// with different alignment constraints should overload this method
|
||||
unsigned TargetELFWriterInfo::getFunctionAlignment(const Function *F) const {
|
||||
const TargetData *TD = TM.getTargetData();
|
||||
unsigned FnAlign = F->getAlignment();
|
||||
unsigned TDAlign = TD->getPointerABIAlignment();
|
||||
unsigned Align = std::max(FnAlign, TDAlign);
|
||||
assert(!(Align & (Align-1)) && "Alignment is not a power of two!");
|
||||
return Align;
|
||||
}
|
||||
|
@ -59,18 +59,6 @@ unsigned X86ELFWriterInfo::getRelocationType(unsigned MachineRelTy) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned X86ELFWriterInfo::getFunctionAlignment(const Function *F) const {
|
||||
unsigned FnAlign = 4;
|
||||
|
||||
if (F->hasFnAttr(Attribute::OptimizeForSize))
|
||||
FnAlign = 1;
|
||||
|
||||
if (F->getAlignment())
|
||||
FnAlign = Log2_32(F->getAlignment());
|
||||
|
||||
return (1 << FnAlign);
|
||||
}
|
||||
|
||||
long int X86ELFWriterInfo::getAddendForRelTy(unsigned RelTy) const {
|
||||
if (is64Bit) {
|
||||
switch(RelTy) {
|
||||
|
@ -41,10 +41,6 @@ namespace llvm {
|
||||
X86ELFWriterInfo(TargetMachine &TM);
|
||||
virtual ~X86ELFWriterInfo();
|
||||
|
||||
/// getFunctionAlignment - Returns the alignment for function 'F', targets
|
||||
/// with different alignment constraints should overload this method
|
||||
virtual unsigned getFunctionAlignment(const Function *F) const;
|
||||
|
||||
/// getRelocationType - Returns the target specific ELF Relocation type.
|
||||
/// 'MachineRelTy' contains the object code independent relocation type
|
||||
virtual unsigned getRelocationType(unsigned MachineRelTy) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user