| Index: src/IceELFObjectWriter.cpp
|
| diff --git a/src/IceELFObjectWriter.cpp b/src/IceELFObjectWriter.cpp
|
| index 202ab0e208d65bea7abd5ed1ad9bfe8729870411..2ea97d76bb4f6ebece56926e7b2ae7191c9f2345 100644
|
| --- a/src/IceELFObjectWriter.cpp
|
| +++ b/src/IceELFObjectWriter.cpp
|
| @@ -115,7 +115,7 @@ ELFObjectWriter::createRelocationSection(const ELFSection *RelatedSection) {
|
| const Elf64_Xword ShEntSize = ELF64 ? sizeof(Elf64_Rela) : sizeof(Elf32_Rel);
|
| static_assert(sizeof(Elf64_Rela) == 24 && sizeof(Elf32_Rel) == 8,
|
| "Elf_Rel/Rela sizes cannot be derived from sizeof");
|
| - const Elf64_Xword ShFlags = 0;
|
| + constexpr Elf64_Xword ShFlags = 0;
|
| ELFRelocationSection *RelSection = createSection<ELFRelocationSection>(
|
| RelSectionName, ShType, ShFlags, ShAlign, ShEntSize);
|
| RelSection->setRelatedSection(RelatedSection);
|
| @@ -218,7 +218,7 @@ void ELFObjectWriter::writeFunctionCode(const IceString &FuncName,
|
| IceString SectionName = ".text";
|
| if (FunctionSections)
|
| SectionName += "." + FuncName;
|
| - const Elf64_Xword ShFlags = SHF_ALLOC | SHF_EXECINSTR;
|
| + constexpr Elf64_Xword ShFlags = SHF_ALLOC | SHF_EXECINSTR;
|
| const Elf64_Xword ShAlign = 1 << Asm->getBundleAlignLog2Bytes();
|
| Section = createSection<ELFTextSection>(SectionName, SHT_PROGBITS, ShFlags,
|
| ShAlign, 0);
|
| @@ -322,12 +322,12 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| Elf64_Xword Align = Var->getAlignment();
|
| ShAddralign = std::max(ShAddralign, Align);
|
| }
|
| - const Elf64_Xword ShEntsize = 0; // non-uniform data element size.
|
| + constexpr Elf64_Xword ShEntsize = 0; // non-uniform data element size.
|
| // Lift this out, so it can be re-used if we do fdata-sections?
|
| switch (ST) {
|
| case ROData: {
|
| const IceString SectionName = MangleSectionName(".rodata", SectionSuffix);
|
| - const Elf64_Xword ShFlags = SHF_ALLOC;
|
| + constexpr Elf64_Xword ShFlags = SHF_ALLOC;
|
| Section = createSection<ELFDataSection>(SectionName, SHT_PROGBITS, ShFlags,
|
| ShAddralign, ShEntsize);
|
| Section->setFileOffset(alignFileOffset(ShAddralign));
|
| @@ -338,7 +338,7 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| }
|
| case Data: {
|
| const IceString SectionName = MangleSectionName(".data", SectionSuffix);
|
| - const Elf64_Xword ShFlags = SHF_ALLOC | SHF_WRITE;
|
| + constexpr Elf64_Xword ShFlags = SHF_ALLOC | SHF_WRITE;
|
| Section = createSection<ELFDataSection>(SectionName, SHT_PROGBITS, ShFlags,
|
| ShAddralign, ShEntsize);
|
| Section->setFileOffset(alignFileOffset(ShAddralign));
|
| @@ -349,7 +349,7 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| }
|
| case BSS: {
|
| const IceString SectionName = MangleSectionName(".bss", SectionSuffix);
|
| - const Elf64_Xword ShFlags = SHF_ALLOC | SHF_WRITE;
|
| + constexpr Elf64_Xword ShFlags = SHF_ALLOC | SHF_WRITE;
|
| Section = createSection<ELFDataSection>(SectionName, SHT_NOBITS, ShFlags,
|
| ShAddralign, ShEntsize);
|
| Section->setFileOffset(alignFileOffset(ShAddralign));
|
| @@ -361,14 +361,14 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| break;
|
| }
|
|
|
| - const uint8_t SymbolType = STT_OBJECT;
|
| + constexpr uint8_t SymbolType = STT_OBJECT;
|
| for (VariableDeclaration *Var : Vars) {
|
| // If the variable declaration does not have an initializer, its symtab
|
| // entry will be created separately.
|
| if (!Var->hasInitializer())
|
| continue;
|
| Elf64_Xword Align = Var->getAlignment();
|
| - const Elf64_Xword MinAlign = 1;
|
| + constexpr Elf64_Xword MinAlign = 1;
|
| Align = std::max(Align, MinAlign);
|
| Section->padToAlignment(Str, Align);
|
| SizeT SymbolSize = Var->getNumBytes();
|
| @@ -405,7 +405,7 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| AssemblerFixup NewFixup;
|
| NewFixup.set_position(Section->getCurrentSize());
|
| NewFixup.set_kind(RelocationKind);
|
| - const bool SuppressMangling = true;
|
| + constexpr bool SuppressMangling = true;
|
| NewFixup.set_value(Ctx.getConstantSym(
|
| Reloc->getOffset(), Reloc->getDeclaration()->mangleName(&Ctx),
|
| SuppressMangling));
|
| @@ -422,9 +422,9 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
|
|
| void ELFObjectWriter::writeInitialELFHeader() {
|
| assert(!SectionNumbersAssigned);
|
| - const Elf64_Off DummySHOffset = 0;
|
| - const SizeT DummySHStrIndex = 0;
|
| - const SizeT DummyNumSections = 0;
|
| + constexpr Elf64_Off DummySHOffset = 0;
|
| + constexpr SizeT DummySHStrIndex = 0;
|
| + constexpr SizeT DummyNumSections = 0;
|
| if (ELF64) {
|
| writeELFHeaderInternal<true>(DummySHOffset, DummySHStrIndex,
|
| DummyNumSections);
|
| @@ -445,7 +445,7 @@ void ELFObjectWriter::writeELFHeaderInternal(Elf64_Off SectionHeaderOffset,
|
| Str.write8(ELFDATA2LSB);
|
| Str.write8(EV_CURRENT);
|
| Str.write8(ELFOSABI_NONE);
|
| - const uint8_t ELF_ABIVersion = 0;
|
| + constexpr uint8_t ELF_ABIVersion = 0;
|
| Str.write8(ELF_ABIVersion);
|
| Str.writeZeroPadding(EI_NIDENT - EI_PAD);
|
|
|
| @@ -495,7 +495,7 @@ template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
|
| // Assume that writing WriteAmt bytes at a time allows us to avoid aligning
|
| // between entries.
|
| assert(WriteAmt % Align == 0);
|
| - const Elf64_Xword ShFlags = SHF_ALLOC | SHF_MERGE;
|
| + constexpr Elf64_Xword ShFlags = SHF_ALLOC | SHF_MERGE;
|
| std::string SecBuffer;
|
| llvm::raw_string_ostream SecStrBuf(SecBuffer);
|
| SecStrBuf << ".rodata.cst" << WriteAmt;
|
| @@ -505,7 +505,7 @@ template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
|
| SizeT OffsetInSection = 0;
|
| // The symbol table entry doesn't need to know the defined symbol's size
|
| // since this is in a section with a fixed Entry Size.
|
| - const SizeT SymbolSize = 0;
|
| + constexpr SizeT SymbolSize = 0;
|
| Section->setFileOffset(alignFileOffset(Align));
|
|
|
| // If the -reorder-pooled-constant option is set to true, we should shuffle
|
| @@ -523,7 +523,7 @@ template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
|
| for (Constant *C : Pool) {
|
| if (!C->getShouldBePooled())
|
| continue;
|
| - auto Const = llvm::cast<ConstType>(C);
|
| + auto *Const = llvm::cast<ConstType>(C);
|
| std::string SymBuffer;
|
| llvm::raw_string_ostream SymStrBuf(SymBuffer);
|
| Const->emitPoolLabel(SymStrBuf, &Ctx);
|
| @@ -572,7 +572,7 @@ void ELFObjectWriter::writeJumpTable(const JumpTableData &JT,
|
| RelSection = createRelocationSection(Section);
|
| RelRODataSections.push_back(RelSection);
|
|
|
| - const uint8_t SymbolType = STT_OBJECT;
|
| + constexpr uint8_t SymbolType = STT_OBJECT;
|
| Section->padToAlignment(Str, PointerSize);
|
| bool IsExternal = Ctx.getFlags().getDisableInternal();
|
| const uint8_t SymbolBinding = IsExternal ? STB_GLOBAL : STB_LOCAL;
|
| @@ -596,7 +596,7 @@ void ELFObjectWriter::writeJumpTable(const JumpTableData &JT,
|
|
|
| void ELFObjectWriter::setUndefinedSyms(const ConstantList &UndefSyms) {
|
| for (const Constant *S : UndefSyms) {
|
| - const auto Sym = llvm::cast<ConstantRelocatable>(S);
|
| + const auto *Sym = llvm::cast<ConstantRelocatable>(S);
|
| const IceString &Name = Sym->getName();
|
| bool BadIntrinsic;
|
| const Intrinsics::FullIntrinsicInfo *Info =
|
|
|