<div dir="ltr">How are you going to use this in LLD?</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 31, 2016 at 2:18 PM, George Rimar <span dir="ltr"><<a href="mailto:grimar@accesssoftek.com" target="_blank">grimar@accesssoftek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">grimar created this revision.<br>
grimar added reviewers: rafael, dblaikie, ruiu, davide.<br>
grimar added subscribers: llvm-commits, grimar.<br>
<br>
This is useful when need to defer the construction,<br>
e.g. using Regex as a member of class.<br>
<br>
<a href="https://reviews.llvm.org/D24101" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D24101</a><br>
<br>
Files:<br>
  include/llvm/Support/Regex.h<br>
  lib/Support/Regex.cpp<br>
  unittests/Support/RegexTest.<wbr>cpp<br>
<br>
Index: unittests/Support/RegexTest.<wbr>cpp<br>
==============================<wbr>==============================<wbr>=======<br>
--- unittests/Support/RegexTest.<wbr>cpp<br>
+++ unittests/Support/RegexTest.<wbr>cpp<br>
@@ -100,7 +100,7 @@<br>
<br>
   EXPECT_EQ("aber", Regex("[0-9]+").sub("\\", "a1234ber", &Error));<br>
   EXPECT_EQ(Error, "replacement string contained trailing backslash");<br>
-<br>
+<br>
   // Backreferences<br>
   EXPECT_EQ("aa1234bber", Regex("a[0-9]+b").sub("a\\0b", "a1234ber", &Error));<br>
   EXPECT_EQ("", Error);<br>
@@ -153,4 +153,13 @@<br>
   EXPECT_TRUE(r2.match("916"));<br>
 }<br>
<br>
+TEST_F(RegexTest, NoArgConstructor) {<br>
+  std::string Error;<br>
+  Regex r1;<br>
+  EXPECT_FALSE(r1.isValid(Error)<wbr>);<br>
+  EXPECT_EQ("invalid regular expression", Error);<br>
+  r1 = Regex("abc");<br>
+  EXPECT_TRUE(r1.isValid(Error))<wbr>;<br>
+}<br>
+<br>
 }<br>
Index: lib/Support/Regex.cpp<br>
==============================<wbr>==============================<wbr>=======<br>
--- lib/Support/Regex.cpp<br>
+++ lib/Support/Regex.cpp<br>
@@ -19,6 +19,8 @@<br>
 #include <string><br>
 using namespace llvm;<br>
<br>
+Regex::Regex() : error(REG_BADPAT), preg(nullptr) {}<br>
+<br>
 Regex::Regex(StringRef regex, unsigned Flags) {<br>
   unsigned flags = 0;<br>
   preg = new llvm_regex();<br>
Index: include/llvm/Support/Regex.h<br>
==============================<wbr>==============================<wbr>=======<br>
--- include/llvm/Support/Regex.h<br>
+++ include/llvm/Support/Regex.h<br>
@@ -43,6 +43,7 @@<br>
       BasicRegex=4<br>
     };<br>
<br>
+    Regex();<br>
     /// Compiles the given regular expression \p Regex.<br>
     Regex(StringRef Regex, unsigned Flags = NoFlags);<br>
     Regex(const Regex &) = delete;<br>
<br>
<br>
</blockquote></div><br></div>