diff options
author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-23 18:09:12 +0000 |
---|---|---|
committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-07-23 18:09:12 +0000 |
commit | 78c92d2ec3a54a92ad644c9b52a295f963432aa5 (patch) | |
tree | 85397a192890a0f3461fb947867f9bfad568d9b0 | |
parent | 37944130f950ffb8f14cb7fe1a8ba3ca0d9f097c (diff) | |
download | bcm5719-llvm-78c92d2ec3a54a92ad644c9b52a295f963432aa5.tar.gz bcm5719-llvm-78c92d2ec3a54a92ad644c9b52a295f963432aa5.zip |
[Remarks] Add unit tests for YAML serialization
Add tests for both the string table and non string table case.
llvm-svn: 366832
-rw-r--r-- | llvm/lib/Remarks/RemarkStringTable.cpp | 3 | ||||
-rw-r--r-- | llvm/unittests/Remarks/CMakeLists.txt | 1 | ||||
-rw-r--r-- | llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp | 89 |
3 files changed, 90 insertions, 3 deletions
diff --git a/llvm/lib/Remarks/RemarkStringTable.cpp b/llvm/lib/Remarks/RemarkStringTable.cpp index 984aa5b33b4..90a90e5757f 100644 --- a/llvm/lib/Remarks/RemarkStringTable.cpp +++ b/llvm/lib/Remarks/RemarkStringTable.cpp @@ -29,9 +29,6 @@ std::pair<unsigned, StringRef> StringTable::add(StringRef Str) { } void StringTable::serialize(raw_ostream &OS) const { - // Emit the number of strings. - uint64_t StrTabSize = SerializedSize; - support::endian::write(OS, StrTabSize, support::little); // Emit the sequence of strings. for (StringRef Str : serialize()) { OS << Str; diff --git a/llvm/unittests/Remarks/CMakeLists.txt b/llvm/unittests/Remarks/CMakeLists.txt index d74960e0558..91d9702f93d 100644 --- a/llvm/unittests/Remarks/CMakeLists.txt +++ b/llvm/unittests/Remarks/CMakeLists.txt @@ -6,4 +6,5 @@ set(LLVM_LINK_COMPONENTS add_llvm_unittest(RemarksTests RemarksStrTabParsingTest.cpp YAMLRemarksParsingTest.cpp + YAMLRemarksSerializerTest.cpp ) diff --git a/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp new file mode 100644 index 00000000000..f0587bb23ee --- /dev/null +++ b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp @@ -0,0 +1,89 @@ +//===- unittest/Support/YAMLRemarksSerializerTest.cpp --------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "llvm/Remarks/Remark.h" +#include "llvm/Remarks/RemarkSerializer.h" +#include "gtest/gtest.h" + +using namespace llvm; + +static void check(const remarks::Remark &R, StringRef Expected, + Optional<StringRef> ExpectedStrTab = None) { + std::string Buf; + raw_string_ostream OS(Buf); + remarks::UseStringTable UseStrTab = ExpectedStrTab.hasValue() + ? remarks::UseStringTable::Yes + : remarks::UseStringTable::No; + remarks::YAMLSerializer S(OS, UseStrTab); + S.emit(R); + EXPECT_EQ(OS.str(), Expected); + if (ExpectedStrTab) { + Buf.clear(); + EXPECT_TRUE(S.StrTab); + S.StrTab->serialize(OS); + EXPECT_EQ(OS.str(), *ExpectedStrTab); + } +} + +TEST(YAMLRemarks, SerializerRemark) { + remarks::Remark R; + R.RemarkType = remarks::Type::Missed; + R.PassName = "pass"; + R.RemarkName = "name"; + R.FunctionName = "func"; + R.Loc = remarks::RemarkLocation{"path", 3, 4}; + R.Hotness = 5; + R.Args.emplace_back(); + R.Args.back().Key = "key"; + R.Args.back().Val = "value"; + R.Args.emplace_back(); + R.Args.back().Key = "keydebug"; + R.Args.back().Val = "valuedebug"; + R.Args.back().Loc = remarks::RemarkLocation{"argpath", 6, 7}; + check(R, "--- !Missed\n" + "Pass: pass\n" + "Name: name\n" + "DebugLoc: { File: path, Line: 3, Column: 4 }\n" + "Function: func\n" + "Hotness: 5\n" + "Args:\n" + " - key: value\n" + " - keydebug: valuedebug\n" + " DebugLoc: { File: argpath, Line: 6, Column: 7 }\n" + "...\n"); +} + +TEST(YAMLRemarks, SerializerRemarkStrTab) { + remarks::Remark R; + R.RemarkType = remarks::Type::Missed; + R.PassName = "pass"; + R.RemarkName = "name"; + R.FunctionName = "func"; + R.Loc = remarks::RemarkLocation{"path", 3, 4}; + R.Hotness = 5; + R.Args.emplace_back(); + R.Args.back().Key = "key"; + R.Args.back().Val = "value"; + R.Args.emplace_back(); + R.Args.back().Key = "keydebug"; + R.Args.back().Val = "valuedebug"; + R.Args.back().Loc = remarks::RemarkLocation{"argpath", 6, 7}; + check(R, + "--- !Missed\n" + "Pass: 0\n" + "Name: 1\n" + "DebugLoc: { File: 3, Line: 3, Column: 4 }\n" + "Function: 2\n" + "Hotness: 5\n" + "Args:\n" + " - key: 4\n" + " - keydebug: 5\n" + " DebugLoc: { File: 6, Line: 6, Column: 7 }\n" + "...\n", + StringRef("pass\0name\0func\0path\0value\0valuedebug\0argpath\0", 45)); +} |