Serialize remark argument as a mapping to get proper quotation for the value.
authorAdam Nemet <anemet@apple.com>
Tue, 4 Oct 2016 17:05:04 +0000 (17:05 +0000)
committerAdam Nemet <anemet@apple.com>
Tue, 4 Oct 2016 17:05:04 +0000 (17:05 +0000)
llvm-svn: 283231

llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp
llvm/test/Transforms/Inline/optimization-remarks-passed-yaml.ll
llvm/test/Transforms/Inline/optimization-remarks-yaml.ll

index bfb1976..d4359a8 100644 (file)
@@ -110,18 +110,12 @@ template <> struct MappingTraits<DebugLoc> {
   static const bool flow = true;
 };
 
-template <> struct ScalarTraits<DiagnosticInfoOptimizationBase::Argument> {
-  static void output(const DiagnosticInfoOptimizationBase::Argument &Arg,
-                     void *, llvm::raw_ostream &out) {
-    out << Arg.Key << ": " << Arg.Val;
-  }
-
-  static StringRef input(StringRef scalar, void *,
-                         DiagnosticInfoOptimizationBase::Argument &Arg) {
-    llvm_unreachable("input not yet implemented");
+// Implement this as a mapping for now to get proper quotation for the value.
+template <> struct MappingTraits<DiagnosticInfoOptimizationBase::Argument> {
+  static void mapping(IO &io, DiagnosticInfoOptimizationBase::Argument &A) {
+    assert(io.outputting() && "input not yet implemented");
+    io.mapRequired(A.Key.data(), A.Val);
   }
-
-  static bool mustQuote(StringRef) { return false; }
 };
 
 } // end namespace yaml
index dff7343..60d0758 100644 (file)
 ; YAML-NEXT: Hotness:         30
 ; YAML-NEXT: Args:
 ; YAML-NEXT:   - Callee: foo
-; YAML-NEXT:   - String:  can be inlined into
+; YAML-NEXT:   - String: ' can be inlined into '
 ; YAML-NEXT:   - Caller: bar
-; YAML-NEXT:   - String:  with cost=
-; YAML-NEXT:   - Cost: {{[0-9]+}}
-; YAML-NEXT:   - String:  (threshold=
-; YAML-NEXT:   - Threshold: {{[0-9]+}}
-; YAML-NEXT:   - String: )
+; YAML-NEXT:   - String: ' with cost='
+; YAML-NEXT:   - Cost: '{{[0-9]+}}'
+; YAML-NEXT:   - String: ' (threshold='
+; YAML-NEXT:   - Threshold: '{{[0-9]+}}'
+; YAML-NEXT:   - String: ')'
 ; YAML-NEXT: ...
 ; YAML-NEXT: --- !Passed
 ; YAML-NEXT: Pass:            inline
@@ -39,7 +39,7 @@
 ; YAML-NEXT: Hotness:         30
 ; YAML-NEXT: Args:
 ; YAML-NEXT:   - Callee: foo
-; YAML-NEXT:   - String:  inlined into
+; YAML-NEXT:   - String: ' inlined into '
 ; YAML-NEXT:   - Caller: bar
 ; YAML-NEXT: ...
 
index 1ba2e0a..b3ee9fa 100644 (file)
@@ -22,9 +22,9 @@
 ; YAML-NEXT: Hotness:         30
 ; YAML-NEXT: Args:
 ; YAML-NEXT:   - Callee: foo
-; YAML-NEXT:   - String:  will not be inlined into
+; YAML-NEXT:   - String: ' will not be inlined into '
 ; YAML-NEXT:   - Caller: baz
-; YAML-NEXT:   - String:  because its definition is unavailable
+; YAML-NEXT:   - String: ' because its definition is unavailable'
 ; YAML-NEXT: ...
 ; YAML-NEXT: --- !Missed
 ; YAML-NEXT: Pass:            inline
@@ -34,9 +34,9 @@
 ; YAML-NEXT: Hotness:         30
 ; YAML-NEXT: Args:
 ; YAML-NEXT:   - Callee: bar
-; YAML-NEXT:   - String:  will not be inlined into
+; YAML-NEXT:   - String: ' will not be inlined into '
 ; YAML-NEXT:   - Caller: baz
-; YAML-NEXT:   - String:  because its definition is unavailable
+; YAML-NEXT:   - String: ' because its definition is unavailable'
 ; YAML-NEXT: ...
 
 ; ModuleID = '/tmp/s.c'