summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp
diff options
context:
space:
mode:
authorFrancis Visoiu Mistrih <francisvm@yahoo.com>2019-07-24 16:36:35 +0000
committerFrancis Visoiu Mistrih <francisvm@yahoo.com>2019-07-24 16:36:35 +0000
commitc5cc9efa075b6fcd8cfe16d59764dcbebc949b8c (patch)
treeebf1b2ea26344a71bcd96d7e7b19afb8b25d76d2 /llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp
parent419f1a4185d551594dc453b258bc4b8417edcfeb (diff)
downloadbcm5719-llvm-c5cc9efa075b6fcd8cfe16d59764dcbebc949b8c.tar.gz
bcm5719-llvm-c5cc9efa075b6fcd8cfe16d59764dcbebc949b8c.zip
[Remarks] Simplify the creation of remark serializers
Introduce two new functions to create a serializer, and add support for more combinations to the YAMLStrTabSerializer. llvm-svn: 366919
Diffstat (limited to 'llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp')
-rw-r--r--llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp54
1 files changed, 48 insertions, 6 deletions
diff --git a/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp
index 629811a8ba1..e1340b4f2e0 100644
--- a/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp
+++ b/llvm/unittests/Remarks/YAMLRemarksSerializerTest.cpp
@@ -8,21 +8,32 @@
#include "llvm/Remarks/Remark.h"
#include "llvm/Remarks/YAMLRemarkSerializer.h"
+#include "llvm/Support/Error.h"
#include "gtest/gtest.h"
using namespace llvm;
-static void check(const remarks::Remark &R, StringRef Expected,
- Optional<StringRef> ExpectedStrTab = None) {
+static void check(const remarks::Remark &R, StringRef ExpectedR,
+ Optional<StringRef> ExpectedStrTab = None,
+ Optional<remarks::StringTable> StrTab = None) {
std::string Buf;
raw_string_ostream OS(Buf);
bool UseStrTab = ExpectedStrTab.hasValue();
- std::unique_ptr<remarks::Serializer> S =
- UseStrTab ? llvm::make_unique<remarks::YAMLStrTabSerializer>(OS)
- : llvm::make_unique<remarks::YAMLSerializer>(OS);
+ Expected<std::unique_ptr<remarks::Serializer>> MaybeS = [&] {
+ if (UseStrTab) {
+ if (StrTab)
+ return createRemarkSerializer(remarks::Format::YAMLStrTab, OS,
+ std::move(*StrTab));
+ else
+ return createRemarkSerializer(remarks::Format::YAMLStrTab, OS);
+ } else
+ return createRemarkSerializer(remarks::Format::YAML, OS);
+ }();
+ EXPECT_FALSE(errorToBool(MaybeS.takeError()));
+ std::unique_ptr<remarks::Serializer> S = std::move(*MaybeS);
S->emit(R);
- EXPECT_EQ(OS.str(), Expected);
+ EXPECT_EQ(OS.str(), ExpectedR);
if (ExpectedStrTab) {
Buf.clear();
EXPECT_TRUE(S->StrTab);
@@ -88,3 +99,34 @@ TEST(YAMLRemarks, SerializerRemarkStrTab) {
"...\n",
StringRef("pass\0name\0func\0path\0value\0valuedebug\0argpath\0", 45));
}
+
+TEST(YAMLRemarks, SerializerRemarkParsedStrTab) {
+ StringRef StrTab("pass\0name\0func\0path\0value\0valuedebug\0argpath\0", 45);
+ 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",
+ StrTab, remarks::StringTable(remarks::ParsedStringTable(StrTab)));
+}
OpenPOWER on IntegriCloud