[PATCH] D34448: bug33527 - Linker::LinkOnlyNeeded should import AppendingLinkage globals

Benoit Belley via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 26 17:04:38 PDT 2017


belleyb updated this revision to Diff 104044.
belleyb marked an inline comment as done.
belleyb added a comment.

Converted the test cases to Lit + llvm-link + FileCheck (instead of unit tests).


https://reviews.llvm.org/D34448

Files:
  include/llvm/Support/FormatVariadic.h
  unittests/Support/FormatVariadicTest.cpp


Index: unittests/Support/FormatVariadicTest.cpp
===================================================================
--- unittests/Support/FormatVariadicTest.cpp
+++ unittests/Support/FormatVariadicTest.cpp
@@ -553,6 +553,19 @@
             formatv("{0,=34:X-}", fmt_repeat(fmt_pad(N, 1, 3), 5)).str());
 }
 
+TEST(FormatVariadicTest, CopyConstructor) {
+  auto fmt = formatv("{0} {1}", 1, 2);
+  auto fmt2 = fmt;
+  std::string S = fmt2;
+  EXPECT_EQ("1 2", S);
+}
+
+TEST(FormatVariadicTest, MoveConstructor) {
+  auto fmt = formatv("{0} {1}", 1, 2);
+  auto fmt2 = std::move(fmt);
+  std::string S = fmt2;
+  EXPECT_EQ("1 2", S);
+}
 TEST(FormatVariadicTest, ImplicitConversions) {
   std::string S = formatv("{0} {1}", 1, 2);
   EXPECT_EQ("1 2", S);
Index: include/llvm/Support/FormatVariadic.h
===================================================================
--- include/llvm/Support/FormatVariadic.h
+++ include/llvm/Support/FormatVariadic.h
@@ -94,6 +94,19 @@
     Adapters.reserve(ParamCount);
   }
 
+  formatv_object_base(formatv_object_base const &rhs)
+      : Fmt(rhs.Fmt), Adapters(), // Adapters are initialized by formatv_object
+        Replacements(rhs.Replacements) {
+    Adapters.reserve(rhs.Adapters.size());
+  };
+
+  formatv_object_base(formatv_object_base &&rhs)
+      : Fmt(std::move(rhs.Fmt)),
+        Adapters(), // Adapters are initialized by formatv_object
+        Replacements(std::move(rhs.Replacements)) {
+    Adapters.reserve(rhs.Adapters.size());
+  };
+
   void format(raw_ostream &S) const {
     for (auto &R : Replacements) {
       if (R.Type == ReplacementType::Empty)
@@ -149,6 +162,17 @@
         Parameters(std::move(Params)) {
     Adapters = apply_tuple(create_adapters(), Parameters);
   }
+
+  formatv_object(formatv_object const &rhs)
+      : formatv_object_base(rhs), Parameters(rhs.Parameters) {
+    Adapters = apply_tuple(create_adapters(), Parameters);
+  }
+
+  formatv_object(formatv_object &&rhs)
+      : formatv_object_base(std::move(rhs)),
+        Parameters(std::move(rhs.Parameters)) {
+    Adapters = apply_tuple(create_adapters(), Parameters);
+  }
 };
 
 // \brief Format text given a format string and replacement parameters.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D34448.104044.patch
Type: text/x-patch
Size: 2201 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170627/6552ba73/attachment.bin>


More information about the llvm-commits mailing list