Make PowerOf2's constructor private.

Ban conversion from integers to PowerOf2 even if explicit
to make all places we create PowerOf2 instances visible.

llvm-svn: 233243
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h b/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h
index c1db36c..940ea63 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h
@@ -108,7 +108,7 @@
 /// can support either kind.
 struct Section {
   Section() : type(llvm::MachO::S_REGULAR),
-              attributes(0), alignment(0), address(0) { }
+              attributes(0), alignment(PowerOf2::create(0)), address(0) { }
 
   StringRef       segmentName;
   StringRef       sectionName;
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
index 5b3d942..028c363 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
@@ -297,7 +297,7 @@
           section.type = (SectionType)(read32(&sect->flags, isBig) &
                                        SECTION_TYPE);
           section.attributes  = read32(&sect->flags, isBig) & SECTION_ATTRIBUTES;
-          section.alignment   = PowerOf2(read32(&sect->align, isBig));
+          section.alignment   = PowerOf2::create(read32(&sect->align, isBig));
           section.address     = read64(&sect->addr, isBig);
           const uint8_t *content =
             (const uint8_t *)start + read32(&sect->offset, isBig);
@@ -341,7 +341,7 @@
                                        SECTION_TYPE);
           section.attributes =
               read32((const uint8_t *)&sect->flags, isBig) & SECTION_ATTRIBUTES;
-          section.alignment   = PowerOf2(read32(&sect->align, isBig));
+          section.alignment   = PowerOf2::create(read32(&sect->align, isBig));
           section.address     = read32(&sect->addr, isBig);
           const uint8_t *content =
             (const uint8_t *)start + read32(&sect->offset, isBig);
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
index 3f8a944..15bdb0a 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
@@ -67,9 +67,9 @@
 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(0),
+                 address(0), size(0), alignment(PowerOf2::create(0)),
                  normalizedSectionIndex(0), finalSectionIndex(0) {
-  PowerOf2 align(0);
+  PowerOf2 align = PowerOf2::create(0);
   if (ctxt.sectionAligned(segmentName, sectionName, align)) {
     alignment = align;
   }
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
index 3635c62..79eefd3 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
@@ -61,7 +61,7 @@
   static StringRef input(StringRef scalar, void*, lld::PowerOf2 &result) {
     uint32_t value;
     scalar.getAsInteger(10, value);
-    result = lld::PowerOf2(value);
+    result = lld::PowerOf2::create(value);
     return StringRef();
   }
   static bool mustQuote(StringRef) { return false; }
@@ -290,7 +290,7 @@
     io.mapRequired("section",         sect.sectionName);
     io.mapRequired("type",            sect.type);
     io.mapOptional("attributes",      sect.attributes);
-    io.mapOptional("alignment",       sect.alignment, lld::PowerOf2(0));
+    io.mapOptional("alignment",       sect.alignment, lld::PowerOf2::create(0));
     io.mapRequired("address",         sect.address);
     if (sect.type == llvm::MachO::S_ZEROFILL) {
       // S_ZEROFILL sections use "size:" instead of "content:"
diff --git a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
index cfd3355..e2766ce 100644
--- a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
+++ b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
@@ -509,7 +509,7 @@
     if (scalar.getAsInteger(0, power)) {
       return "malformed alignment power";
     }
-    value.powerOf2 = PowerOf2(llvm::Log2_64(power));
+    value.powerOf2 = PowerOf2::create(llvm::Log2_64(power));
     if (value.modulus >= power) {
       return "malformed alignment, modulus too large for power";
     }