summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-04-09 17:04:27 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-04-09 17:04:27 +0000
commitfb065a16690ec1b605e300c502ad71c1d4a4fefb (patch)
treee11f51bc0d6072a5bedc139155c3e972a3dac519
parentaef1966ed6a370d448ec478e358d175e1cd6ff0d (diff)
downloadllvm-fb065a16690ec1b605e300c502ad71c1d4a4fefb.tar.gz
llvm-fb065a16690ec1b605e300c502ad71c1d4a4fefb.tar.bz2
llvm-fb065a16690ec1b605e300c502ad71c1d4a4fefb.tar.xz
Revert "Revert "YAMLIO: Encode ambiguous hex strings explicitly""
Don't quote octal compatible strings if they are only two wide, they aren't ambiguous. This reverts commit r205857 which reverted r205857. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205914 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Support/YAMLTraits.cpp3
-rw-r--r--test/Object/obj2yaml.test2
-rw-r--r--unittests/Support/YAMLIOTest.cpp10
3 files changed, 13 insertions, 2 deletions
diff --git a/lib/Support/YAMLTraits.cpp b/lib/Support/YAMLTraits.cpp
index 38f3ec7c7f..005a810774 100644
--- a/lib/Support/YAMLTraits.cpp
+++ b/lib/Support/YAMLTraits.cpp
@@ -561,8 +561,9 @@ void Output::scalarString(StringRef &S) {
this->outputUpToEndOfLine("''");
return;
}
+ bool isOctalString = S.front() == '0' && S.size() > 2 && !S.startswith("0x");
if (S.find_first_not_of(ScalarSafeChars) == StringRef::npos &&
- !isspace(S.front()) && !isspace(S.back())) {
+ !isspace(S.front()) && !isspace(S.back()) && !isOctalString) {
// If the string consists only of safe characters, print it out without
// quotes.
this->outputUpToEndOfLine(S);
diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test
index 5ab8a15224..bc11f35c10 100644
--- a/test/Object/obj2yaml.test
+++ b/test/Object/obj2yaml.test
@@ -115,7 +115,7 @@ COFF-X86-64-NEXT: SectionData: 48656C6C6F20576F726C642100
COFF-X86-64: - Name: '.CRT$XCU'
COFF-X86-64-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
COFF-X86-64-NEXT: Alignment: 8
-COFF-X86-64-NEXT: SectionData: 0000000000000000
+COFF-X86-64-NEXT: SectionData: '0000000000000000'
COFF-X86-64: Relocations:
COFF-X86-64-NEXT: - VirtualAddress: 0
diff --git a/unittests/Support/YAMLIOTest.cpp b/unittests/Support/YAMLIOTest.cpp
index 52a8f6b88c..0f1951f4fc 100644
--- a/unittests/Support/YAMLIOTest.cpp
+++ b/unittests/Support/YAMLIOTest.cpp
@@ -302,11 +302,13 @@ struct StringTypes {
llvm::StringRef str3;
llvm::StringRef str4;
llvm::StringRef str5;
+ llvm::StringRef str6;
std::string stdstr1;
std::string stdstr2;
std::string stdstr3;
std::string stdstr4;
std::string stdstr5;
+ std::string stdstr6;
};
namespace llvm {
@@ -319,11 +321,13 @@ namespace yaml {
io.mapRequired("str3", st.str3);
io.mapRequired("str4", st.str4);
io.mapRequired("str5", st.str5);
+ io.mapRequired("str6", st.str6);
io.mapRequired("stdstr1", st.stdstr1);
io.mapRequired("stdstr2", st.stdstr2);
io.mapRequired("stdstr3", st.stdstr3);
io.mapRequired("stdstr4", st.stdstr4);
io.mapRequired("stdstr5", st.stdstr5);
+ io.mapRequired("stdstr6", st.stdstr6);
}
};
}
@@ -338,11 +342,13 @@ TEST(YAMLIO, TestReadWriteStringTypes) {
map.str3 = "`ccc";
map.str4 = "@ddd";
map.str5 = "";
+ map.str6 = "0000000004000000";
map.stdstr1 = "'eee";
map.stdstr2 = "\"fff";
map.stdstr3 = "`ggg";
map.stdstr4 = "@hhh";
map.stdstr5 = "";
+ map.stdstr6 = "0000000004000000";
llvm::raw_string_ostream ostr(intermediate);
Output yout(ostr);
@@ -355,11 +361,13 @@ TEST(YAMLIO, TestReadWriteStringTypes) {
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'`ccc'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'@ddd'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("''\n"));
+ EXPECT_NE(llvm::StringRef::npos, flowOut.find("'0000000004000000'\n"));
EXPECT_NE(std::string::npos, flowOut.find("'''eee"));
EXPECT_NE(std::string::npos, flowOut.find("'\"fff'"));
EXPECT_NE(std::string::npos, flowOut.find("'`ggg'"));
EXPECT_NE(std::string::npos, flowOut.find("'@hhh'"));
EXPECT_NE(std::string::npos, flowOut.find("''\n"));
+ EXPECT_NE(std::string::npos, flowOut.find("'0000000004000000'\n"));
{
Input yin(intermediate);
@@ -372,11 +380,13 @@ TEST(YAMLIO, TestReadWriteStringTypes) {
EXPECT_TRUE(map.str3.equals("`ccc"));
EXPECT_TRUE(map.str4.equals("@ddd"));
EXPECT_TRUE(map.str5.equals(""));
+ EXPECT_TRUE(map.str6.equals("0000000004000000"));
EXPECT_TRUE(map.stdstr1 == "'eee");
EXPECT_TRUE(map.stdstr2 == "\"fff");
EXPECT_TRUE(map.stdstr3 == "`ggg");
EXPECT_TRUE(map.stdstr4 == "@hhh");
EXPECT_TRUE(map.stdstr5 == "");
+ EXPECT_TRUE(map.stdstr6 == "0000000004000000");
}
}