[lld] r233244 - Define an implicit constructor which takes actual alignment value to PowerOf2.
Rui Ueyama
ruiu at google.com
Wed Mar 25 18:44:01 PDT 2015
Author: ruiu
Date: Wed Mar 25 20:44:01 2015
New Revision: 233244
URL: http://llvm.org/viewvc/llvm-project?rev=233244&view=rev
Log:
Define an implicit constructor which takes actual alignment value to PowerOf2.
The new constructor's type is the same, but this one takes not a log2
value but an alignment value itself, so the meaning is totally differnet.
Modified:
lld/trunk/include/lld/Core/DefinedAtom.h
lld/trunk/lib/Driver/DarwinLdDriver.cpp
lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFile.h
lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp
Modified: lld/trunk/include/lld/Core/DefinedAtom.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/DefinedAtom.h?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/DefinedAtom.h (original)
+++ lld/trunk/include/lld/Core/DefinedAtom.h Wed Mar 25 20:44:01 2015
@@ -30,11 +30,10 @@ class Reference;
// Once the conversion is done, this class will be removed.
class PowerOf2 {
public:
- static PowerOf2 create(uint16_t v) { return PowerOf2(v); }
+ PowerOf2(uint16_t v) : _v(v) {}
bool operator==(const PowerOf2 &other) const { return _v == other._v; }
- uint16_t get() const { return 1 << _v; }
+ uint16_t get() const { return _v; }
private:
- explicit PowerOf2(uint16_t v) : _v(v) {}
uint16_t _v;
};
@@ -219,7 +218,7 @@ public:
};
struct Alignment {
- Alignment(int p2, int m = 0) : powerOf2(PowerOf2::create(p2)), modulus(m) {}
+ Alignment(int p2, int m = 0) : powerOf2(1 << p2), modulus(m) {}
Alignment(PowerOf2 p2, int m = 0) : powerOf2(p2), modulus(m) {}
PowerOf2 powerOf2;
Modified: lld/trunk/lib/Driver/DarwinLdDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/DarwinLdDriver.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/Driver/DarwinLdDriver.cpp (original)
+++ lld/trunk/lib/Driver/DarwinLdDriver.cpp Wed Mar 25 20:44:01 2015
@@ -479,7 +479,7 @@ bool DarwinLdDriver::parse(int argc, con
<< alignStr << "' not a valid number\n";
return false;
}
- PowerOf2 align2 = PowerOf2::create(llvm::countTrailingZeros(alignValue));
+ PowerOf2 align2 = 1 << llvm::countTrailingZeros(alignValue);
if (!llvm::isPowerOf2_64(alignValue)) {
diagnostics << "warning: alignment for '-sectalign "
<< segName << " " << sectName
Modified: lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFile.h?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFile.h (original)
+++ lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFile.h Wed Mar 25 20:44:01 2015
@@ -108,7 +108,7 @@ LLVM_YAML_STRONG_TYPEDEF(uint32_t, Secti
/// can support either kind.
struct Section {
Section() : type(llvm::MachO::S_REGULAR),
- attributes(0), alignment(PowerOf2::create(0)), address(0) { }
+ attributes(0), alignment(1), address(0) { }
StringRef segmentName;
StringRef sectionName;
Modified: lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp (original)
+++ lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp Wed Mar 25 20:44:01 2015
@@ -297,7 +297,7 @@ readBinary(std::unique_ptr<MemoryBuffer>
section.type = (SectionType)(read32(§->flags, isBig) &
SECTION_TYPE);
section.attributes = read32(§->flags, isBig) & SECTION_ATTRIBUTES;
- section.alignment = PowerOf2::create(read32(§->align, isBig));
+ section.alignment = 1 << read32(§->align, isBig);
section.address = read64(§->addr, isBig);
const uint8_t *content =
(const uint8_t *)start + read32(§->offset, isBig);
@@ -341,7 +341,7 @@ readBinary(std::unique_ptr<MemoryBuffer>
SECTION_TYPE);
section.attributes =
read32((const uint8_t *)§->flags, isBig) & SECTION_ATTRIBUTES;
- section.alignment = PowerOf2::create(read32(§->align, isBig));
+ section.alignment = 1 << read32(§->align, isBig);
section.address = read32(§->addr, isBig);
const uint8_t *content =
(const uint8_t *)start + read32(§->offset, isBig);
Modified: lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp (original)
+++ lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp Wed Mar 25 20:44:01 2015
@@ -67,9 +67,9 @@ struct SectionInfo {
SectionInfo::SectionInfo(StringRef sg, StringRef sct, SectionType t,
const MachOLinkingContext &ctxt, uint32_t attrs)
: segmentName(sg), sectionName(sct), type(t), attributes(attrs),
- address(0), size(0), alignment(PowerOf2::create(0)),
+ address(0), size(0), alignment(1),
normalizedSectionIndex(0), finalSectionIndex(0) {
- PowerOf2 align = PowerOf2::create(0);
+ PowerOf2 align = 1;
if (ctxt.sectionAligned(segmentName, sectionName, align)) {
alignment = align;
}
Modified: lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp (original)
+++ lld/trunk/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp Wed Mar 25 20:44:01 2015
@@ -61,7 +61,7 @@ struct ScalarTraits<lld::PowerOf2> {
static StringRef input(StringRef scalar, void*, lld::PowerOf2 &result) {
uint32_t value;
scalar.getAsInteger(10, value);
- result = lld::PowerOf2::create(value);
+ result = 1 << value;
return StringRef();
}
static bool mustQuote(StringRef) { return false; }
@@ -290,7 +290,7 @@ struct MappingTraits<Section> {
io.mapRequired("section", sect.sectionName);
io.mapRequired("type", sect.type);
io.mapOptional("attributes", sect.attributes);
- io.mapOptional("alignment", sect.alignment, lld::PowerOf2::create(0));
+ io.mapOptional("alignment", sect.alignment, lld::PowerOf2(1));
io.mapRequired("address", sect.address);
if (sect.type == llvm::MachO::S_ZEROFILL) {
// S_ZEROFILL sections use "size:" instead of "content:"
Modified: lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp (original)
+++ lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp Wed Mar 25 20:44:01 2015
@@ -509,7 +509,7 @@ template <> struct ScalarTraits<lld::Def
if (scalar.getAsInteger(0, power)) {
return "malformed alignment power";
}
- value.powerOf2 = PowerOf2::create(llvm::Log2_64(power));
+ value.powerOf2 = power;
if (value.modulus >= power) {
return "malformed alignment, modulus too large for power";
}
Modified: lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp?rev=233244&r1=233243&r2=233244&view=diff
==============================================================================
--- lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp (original)
+++ lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp Wed Mar 25 20:44:01 2015
@@ -123,7 +123,7 @@ TEST(BinaryWriterTest, obj_relocs_x86_64
text.type = S_REGULAR;
text.attributes = SectionAttr(S_ATTR_PURE_INSTRUCTIONS
| S_ATTR_SOME_INSTRUCTIONS);
- text.alignment = lld::PowerOf2::create(4);
+ text.alignment = 16;
text.address = 0;
const uint8_t textBytes[] = {
0xe8, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05,
@@ -240,7 +240,7 @@ TEST(BinaryWriterTest, obj_relocs_x86) {
text.type = S_REGULAR;
text.attributes = SectionAttr(S_ATTR_PURE_INSTRUCTIONS
| S_ATTR_SOME_INSTRUCTIONS);
- text.alignment = lld::PowerOf2::create(4);
+ text.alignment = 16;
text.address = 0;
const uint8_t textBytes[] = {
0xe8, 0xfb, 0xff, 0xff, 0xff, 0xa1, 0x00, 0x00,
@@ -350,7 +350,7 @@ TEST(BinaryWriterTest, obj_relocs_armv7)
text.type = S_REGULAR;
text.attributes = SectionAttr(S_ATTR_PURE_INSTRUCTIONS
| S_ATTR_SOME_INSTRUCTIONS);
- text.alignment = lld::PowerOf2::create(2);
+ text.alignment = 4;
text.address = 0;
const uint8_t textBytes[] = {
0xff, 0xf7, 0xfe, 0xef, 0x40, 0xf2, 0x05, 0x01,
@@ -479,7 +479,7 @@ TEST(BinaryWriterTest, obj_relocs_ppc) {
text.type = S_REGULAR;
text.attributes = SectionAttr(S_ATTR_PURE_INSTRUCTIONS
| S_ATTR_SOME_INSTRUCTIONS);
- text.alignment = lld::PowerOf2::create(2);
+ text.alignment = 4;
text.address = 0;
const uint8_t textBytes[] = {
0x48, 0x00, 0x00, 0x01, 0x40, 0x82, 0xff, 0xfc,
More information about the llvm-commits
mailing list