================
@@ -60,39 +74,65 @@ bool compileFromString(StringRef Code, StringRef Standard, 
StringRef FileName) {
   return Compiler.ExecuteAction(Action);
 }
 
+std::string GetMetadata(json::Object *Event) {
+  std::string Metadata = "";
+  if (json::Object *Args = Event->getObject("args")) {
+    if (StringRef Detail = Args->getString("detail").value_or("");
+        !Detail.empty())
+      Metadata += Detail.str();
+    if (StringRef File = Args->getString("filename").value_or("");
+        !File.empty())
+      Metadata += ", " + File.str();
+  }
+  return Metadata;
+}
+
 // Returns pretty-printed trace graph.
 std::string buildTraceGraph(StringRef Json) {
   struct EventRecord {
     int64_t TimestampBegin;
     int64_t TimestampEnd;
-    StringRef Name;
-    StringRef Detail;
+    std::string Name;
+    std::string Metadata;
   };
   std::vector<EventRecord> Events;
 
   // Parse `EventRecord`s from JSON dump.
   Expected<json::Value> Root = json::parse(Json);
   if (!Root)
     return "";
+  std::stack<json::Object *> SourceEvents;
   for (json::Value &TraceEventValue :
        *Root->getAsObject()->getArray("traceEvents")) {
     json::Object *TraceEventObj = TraceEventValue.getAsObject();
 
     int64_t TimestampBegin = TraceEventObj->getInteger("ts").value_or(0);
     int64_t TimestampEnd =
         TimestampBegin + TraceEventObj->getInteger("dur").value_or(0);
-    StringRef Name = TraceEventObj->getString("name").value_or("");
-    StringRef Detail = "";
-    if (json::Object *Args = TraceEventObj->getObject("args"))
-      Detail = Args->getString("detail").value_or("");
+    std::string Name = TraceEventObj->getString("name").value_or("").str();
+    std::string Metadata = GetMetadata(TraceEventObj);
+
+    if (Name == "Source") {
----------------
ilya-biryukov wrote:

I am unsure why we need this change.
Could you explain what happens here?

https://github.com/llvm/llvm-project/pull/98320
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to