Index: clang/unittests/Tooling/ReplacementsYamlTest.cpp =================================================================== --- clang/unittests/Tooling/ReplacementsYamlTest.cpp +++ clang/unittests/Tooling/ReplacementsYamlTest.cpp @@ -33,13 +33,13 @@ // NOTE: If this test starts to fail for no obvious reason, check whitespace. ASSERT_STREQ("---\n" - "MainSourceFile: /path/to/source.cpp\n" + "MainSourceFile: '/path/to/source.cpp'\n" "Replacements: \n" // Extra whitespace here! - " - FilePath: /path/to/file1.h\n" + " - FilePath: '/path/to/file1.h'\n" " Offset: 232\n" " Length: 56\n" " ReplacementText: 'replacement #1'\n" - " - FilePath: /path/to/file2.h\n" + " - FilePath: '/path/to/file2.h'\n" " Offset: 301\n" " Length: 2\n" " ReplacementText: 'replacement #2'\n" Index: lld/test/mach-o/cstring-sections.yaml =================================================================== --- lld/test/mach-o/cstring-sections.yaml +++ lld/test/mach-o/cstring-sections.yaml @@ -36,25 +36,25 @@ # CHECK: content: [ 61, 62, 63, 00 ] # CHECK: merge: by-content # CHECK: section-choice: custom-required -# CHECK: section-name: __TEXT/__objc_methname +# CHECK: section-name: '__TEXT/__objc_methname' # CHECK: - scope: hidden # CHECK: type: c-string # CHECK: content: [ 64, 65, 66, 00 ] # CHECK: merge: by-content # CHECK: section-choice: custom-required -# CHECK: section-name: __TEXT/__objc_methname +# CHECK: section-name: '__TEXT/__objc_methname' # CHECK: - scope: hidden # CHECK: type: c-string # CHECK: content: [ 61, 62, 63, 00 ] # CHECK: merge: by-content # CHECK: section-choice: custom-required -# CHECK: section-name: __TEXT/__objc_classname +# CHECK: section-name: '__TEXT/__objc_classname' # CHECK: - scope: hidden # CHECK: type: c-string # CHECK: content: [ 67, 68, 69, 00 ] # CHECK: merge: by-content # CHECK: section-choice: custom-required -# CHECK: section-name: __TEXT/__objc_classname +# CHECK: section-name: '__TEXT/__objc_classname' # CHECK: - scope: hidden # CHECK: type: c-string # CHECK: content: [ 61, 62, 63, 00 ] Index: lld/test/mach-o/parse-data-relocs-x86_64.yaml =================================================================== --- lld/test/mach-o/parse-data-relocs-x86_64.yaml +++ lld/test/mach-o/parse-data-relocs-x86_64.yaml @@ -367,6 +367,6 @@ # CHECK: type: unknown # CHECK: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ] # CHECK: section-choice: custom-required -# CHECK: section-name: __DATA/__custom +# CHECK: section-name: '__DATA/__custom' # CHECK: dead-strip: never Index: lld/test/mach-o/parse-data.yaml =================================================================== --- lld/test/mach-o/parse-data.yaml +++ lld/test/mach-o/parse-data.yaml @@ -115,5 +115,5 @@ # CHECK: type: unknown # CHECK: content: [ 01, 02, 03, 04, 05, 06, 07, 08 ] # CHECK: section-choice: custom-required -# CHECK: section-name: __CUST/__custom +# CHECK: section-name: '__CUST/__custom' Index: lld/test/mach-o/sectcreate.yaml =================================================================== --- lld/test/mach-o/sectcreate.yaml +++ lld/test/mach-o/sectcreate.yaml @@ -8,5 +8,5 @@ # CHECK: type: sectcreate # CHECK: content: [ 68, 65, 6C, 6C, 6F, 0A ] # CHECK: section-choice: custom-required -# CHECK: section-name: __DATA/__data +# CHECK: section-name: '__DATA/__data' # CHECK: dead-strip: never Index: llvm/include/llvm/Support/YAMLTraits.h =================================================================== --- llvm/include/llvm/Support/YAMLTraits.h +++ llvm/include/llvm/Support/YAMLTraits.h @@ -578,7 +578,6 @@ // Safe scalar characters. case '_': case '-': - case '/': case '^': case '.': case ',': @@ -595,6 +594,12 @@ // DEL (0x7F) are excluded from the allowed character range. case 0x7F: return QuotingType::Double; + // Forward slash is allowed to be unquoted, but we quote it anyway. We have + // many tests that use FileCheck against YAML output, and this output often + // contains paths. If we quote backslashes but not forward slashes then + // paths will come out either quoted or unquoted depending on which platform + // the test is run on, making FileCheck comparisons difficult. + case '/': default: { // C0 control block (0x0 - 0x1F) is excluded from the allowed character // range. Index: llvm/test/ObjectYAML/MachO/DWARF-BigEndian.yaml =================================================================== --- llvm/test/ObjectYAML/MachO/DWARF-BigEndian.yaml +++ llvm/test/ObjectYAML/MachO/DWARF-BigEndian.yaml @@ -376,8 +376,8 @@ #CHECK: DWARF: #CHECK: debug_str: #CHECK: - 'clang version 4.0.0 (trunk 290181) (llvm/trunk 290209)' -#CHECK: - ../compiler-rt/lib/builtins/absvdi2.c -#CHECK: - /Users/cbieneman/dev/open-source/llvm-build-rel +#CHECK: - '../compiler-rt/lib/builtins/absvdi2.c' +#CHECK: - '/Users/cbieneman/dev/open-source/llvm-build-rel' #CHECK: - int #CHECK: - di_int #CHECK: - long long int Index: llvm/test/ObjectYAML/MachO/DWARF-LittleEndian.yaml =================================================================== --- llvm/test/ObjectYAML/MachO/DWARF-LittleEndian.yaml +++ llvm/test/ObjectYAML/MachO/DWARF-LittleEndian.yaml @@ -365,8 +365,8 @@ #CHECK: DWARF: #CHECK: debug_str: #CHECK: - 'clang version 4.0.0 (trunk 290181) (llvm/trunk 290209)' -#CHECK: - ../compiler-rt/lib/builtins/absvdi2.c -#CHECK: - /Users/cbieneman/dev/open-source/llvm-build-rel +#CHECK: - '../compiler-rt/lib/builtins/absvdi2.c' +#CHECK: - '/Users/cbieneman/dev/open-source/llvm-build-rel' #CHECK: - int #CHECK: - di_int #CHECK: - long long int Index: llvm/test/ObjectYAML/MachO/DWARF-debug_str.yaml =================================================================== --- llvm/test/ObjectYAML/MachO/DWARF-debug_str.yaml +++ llvm/test/ObjectYAML/MachO/DWARF-debug_str.yaml @@ -257,7 +257,7 @@ #CHECK: - '' #CHECK: - 'clang version 4.0.0 (trunk 288677) (llvm/trunk 288676)' #CHECK: - hello_world.c -#CHECK: - /Users/cbieneman/dev/open-source/llvm-build-rel +#CHECK: - '/Users/cbieneman/dev/open-source/llvm-build-rel' #CHECK: - main #CHECK: - argc #CHECK: - argv Index: llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml =================================================================== --- llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml +++ llvm/test/ObjectYAML/MachO/dylib_dylinker_command.yaml @@ -40,7 +40,7 @@ #CHECK: - cmd: LC_LOAD_DYLINKER #CHECK: cmdsize: 32 #CHECK: name: 12 -#CHECK: PayloadString: /usr/lib/dyld +#CHECK: PayloadString: '/usr/lib/dyld' #CHECK: ZeroPadBytes: 7 #CHECK: - cmd: LC_LOAD_DYLIB #CHECK: cmdsize: 48 @@ -58,5 +58,5 @@ #CHECK: timestamp: 2 #CHECK: current_version: 80349697 #CHECK: compatibility_version: 65536 -#CHECK: PayloadString: /usr/lib/libSystem.B.dylib +#CHECK: PayloadString: '/usr/lib/libSystem.B.dylib' #CHECK: ZeroPadBytes: 6 Index: llvm/test/Other/size-remarks.ll =================================================================== --- llvm/test/Other/size-remarks.ll +++ llvm/test/Other/size-remarks.ll @@ -32,7 +32,7 @@ ; CGSCC-NEXT: Name: IRSizeChange ; CGSCC-NEXT: Function: ; CGSCC-NEXT: Args: -; CGSCC-NEXT: - Pass: Function Integration/Inlining +; CGSCC-NEXT: - Pass: 'Function Integration/Inlining' ; CGSCC-NEXT: - String: ': IR instruction count changed from ' ; CGSCC-NEXT: - IRInstrsBefore: '[[ORIG]]' ; CGSCC-NEXT: - String: ' to ' @@ -44,7 +44,7 @@ ; CGSCC-NEXT: Name: FunctionIRSizeChange ; CGSCC-NEXT: Function: ; CGSCC-NEXT: Args: -; CGSCC-NEXT: - Pass: Function Integration/Inlining +; CGSCC-NEXT: - Pass: 'Function Integration/Inlining' ; CGSCC-NEXT: - String: ': Function: ' ; CGSCC-NEXT: - Function: bar ; CGSCC-NEXT: - String: ': IR instruction count changed from ' Index: llvm/test/Transforms/GVN/opt-remarks.ll =================================================================== --- llvm/test/Transforms/GVN/opt-remarks.ll +++ llvm/test/Transforms/GVN/opt-remarks.ll @@ -49,7 +49,7 @@ ; YAML-NEXT: --- !Missed ; YAML-NEXT: Pass: gvn ; YAML-NEXT: Name: LoadClobbered -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 3, Column: 3 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 3, Column: 3 } ; YAML-NEXT: Function: may_alias ; YAML-NEXT: Args: ; YAML-NEXT: - String: 'load of type ' @@ -57,10 +57,10 @@ ; YAML-NEXT: - String: ' not eliminated' ; YAML-NEXT: - String: ' in favor of ' ; YAML-NEXT: - OtherAccess: load -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 1, Column: 13 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 1, Column: 13 } ; YAML-NEXT: - String: ' because it is clobbered by ' ; YAML-NEXT: - ClobberedBy: store -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 2, Column: 10 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 2, Column: 10 } ; YAML-NEXT: ... define i32 @arg(i32* %p, i32 %i) { Index: llvm/test/Transforms/Inline/optimization-remarks-passed-yaml.ll =================================================================== --- llvm/test/Transforms/Inline/optimization-remarks-passed-yaml.ll +++ llvm/test/Transforms/Inline/optimization-remarks-passed-yaml.ll @@ -22,15 +22,15 @@ ; YAML: --- !Passed ; YAML-NEXT: Pass: inline ; YAML-NEXT: Name: Inlined -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 4, Column: 10 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 4, Column: 10 } ; YAML-NEXT: Function: bar ; YAML-NEXT: Hotness: 30 ; YAML-NEXT: Args: ; YAML-NEXT: - Callee: foo -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 1, Column: 0 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 1, Column: 0 } ; YAML-NEXT: - String: ' inlined into ' ; YAML-NEXT: - Caller: bar -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 3, Column: 0 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 3, Column: 0 } ; YAML-NEXT: - String: ' with ' ; YAML-NEXT: - String: '(cost=' ; YAML-NEXT: - Cost: '{{[0-9\-]+}}' Index: llvm/test/Transforms/Inline/optimization-remarks-yaml.ll =================================================================== --- llvm/test/Transforms/Inline/optimization-remarks-yaml.ll +++ llvm/test/Transforms/Inline/optimization-remarks-yaml.ll @@ -52,27 +52,27 @@ ; YAML: --- !Missed ; YAML-NEXT: Pass: inline ; YAML-NEXT: Name: NoDefinition -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 5, Column: 10 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 5, Column: 10 } ; YAML-NEXT: Function: baz ; YAML-NEXT: Hotness: 30 ; YAML-NEXT: Args: ; YAML-NEXT: - Callee: foo ; YAML-NEXT: - String: ' will not be inlined into ' ; YAML-NEXT: - Caller: baz -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 4, Column: 0 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 4, Column: 0 } ; YAML-NEXT: - String: ' because its definition is unavailable' ; YAML-NEXT: ... ; YAML-NEXT: --- !Missed ; YAML-NEXT: Pass: inline ; YAML-NEXT: Name: NoDefinition -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 5, Column: 18 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 5, Column: 18 } ; YAML-NEXT: Function: baz ; YAML-NEXT: Hotness: 30 ; YAML-NEXT: Args: ; YAML-NEXT: - Callee: bar ; YAML-NEXT: - String: ' will not be inlined into ' ; YAML-NEXT: - Caller: baz -; YAML-NEXT: DebugLoc: { File: /tmp/s.c, Line: 4, Column: 0 } +; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 4, Column: 0 } ; YAML-NEXT: - String: ' because its definition is unavailable' ; YAML-NEXT: ... Index: llvm/unittests/Support/YAMLIOTest.cpp =================================================================== --- llvm/unittests/Support/YAMLIOTest.cpp +++ llvm/unittests/Support/YAMLIOTest.cpp @@ -2543,7 +2543,9 @@ // Single quote TestEscaped("@abc@", "'@abc@'"); // No quote - TestEscaped("abc/", "abc/"); + TestEscaped("abc", "abc"); + // Forward slash quoted + TestEscaped("abc/", "'abc/'"); // Double quote non-printable TestEscaped("\01@abc@", "\"\\x01@abc@\""); // Double quote inside single quote