// REQUIRES: system-windows // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-win32 -ffile-prefix-map=%p=A:\UNLIKELY_PATH\empty -c -o - %s | FileCheck %s // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-win32 -fmacro-prefix-map=%p=A:\UNLIKELY_PATH\empty -c -o - %s | FileCheck %s // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-win32 -fmacro-prefix-map=%p=A:\UNLIKELY_PATH=empty -c -o - %s | FileCheck %s -check-prefix CHECK-EVIL // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-win32 -fmacro-prefix-map=%p/iNPUTS\=A:\UNLIKELY_PATH_INC\ -fmacro-prefix-map=%p/=A:\UNLIKELY_PATH_BASE\ -c -o - %s | FileCheck %s -check-prefix CHECK-CASE // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-win32 -fmacro-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE // RUN: %clang -E -target x86_64-pc-win32 -ffile-prefix-map=%p=A:\UNLIKELY_PATH\empty -c -o - %s | FileCheck %s --check-prefix CHECK-REPRODUCIBLE // RUN: %clang -E -target x86_64-pc-win32 -fmacro-prefix-map=%p=A:\UNLIKELY_PATH\empty -c -o - %s | FileCheck %s --check-prefix CHECK-REPRODUCIBLE // RUN: %clang -E -target x86_64-pc-win32 -fmacro-prefix-map=%p=A:\UNLIKELY_PATH=empty -c -o - %s | FileCheck %s -check-prefix CHECK-EVIL-REPRODUCIBLE // RUN: %clang -E -target x86_64-pc-win32 -fmacro-prefix-map=%p/iNPUTS\=A:\UNLIKELY_PATH_INC\ -fmacro-prefix-map=%p/=A:\UNLIKELY_PATH_BASE\ -c -o - %s | FileCheck %s -check-prefix CHECK-CASE-REPRODUCIBLE // RUN: %clang -E -target x86_64-pc-win32 -fmacro-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE-REPRODUCIBLE // RUN: %clang -E -target x86_64-pc-linux-gnu -fmacro-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE // RUN: %clang -E -target x86_64-pc-linux-gnu -ffile-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE // Clang defaults to forward slashes for the non-prefix portion of the path even if the build environment is Windows. // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-linux-gnu -fmacro-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE // RUN: %clang -E -fno-file-reproducible -target x86_64-pc-linux-gnu -ffile-prefix-map=%p\= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE // RUN: %clang -E -ffile-reproducible -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-WINDOWS-FULL // RUN: %clang -E -ffile-reproducible -target x86_64-pc-linux-gnu -c -o - %s | FileCheck %s --check-prefix CHECK-LINUX-FULL filename: __FILE__ #include "Inputs/include-file-test/file_test.h" // CHECK: filename: "A:\\UNLIKELY_PATH\\empty\\file_test_windows.c" // CHECK: filename: "A:\\UNLIKELY_PATH\\empty\\Inputs/include-file-test/file_test.h" // CHECK: basefile: "A:\\UNLIKELY_PATH\\empty\\file_test_windows.c" // CHECK-NOT: filename: // CHECK-EVIL: filename: "A:\\UNLIKELY_PATH=empty\\file_test_windows.c" // CHECK-EVIL: filename: "A:\\UNLIKELY_PATH=empty\\Inputs/include-file-test/file_test.h" // CHECK-EVIL: basefile: "A:\\UNLIKELY_PATH=empty\\file_test_windows.c" // CHECK-EVIL-NOT: filename: // CHECK-CASE: filename: "A:\\UNLIKELY_PATH_BASE\\file_test_windows.c" // CHECK-CASE: filename: "A:\\UNLIKELY_PATH_INC\\include-file-test/file_test.h" // CHECK-CASE: basefile: "A:\\UNLIKELY_PATH_BASE\\file_test_windows.c" // CHECK-CASE-NOT: filename: // CHECK-REMOVE: filename: "file_test_windows.c" // CHECK-REMOVE: filename: "Inputs/include-file-test/file_test.h" // CHECK-REMOVE: basefile: "file_test_windows.c" // CHECK-REMOVE-NOT: filename: // CHECK-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH\\empty\\file_test_windows.c" // CHECK-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH\\empty\\Inputs\\include-file-test\\file_test.h" // CHECK-REPRODUCIBLE: basefile: "A:\\UNLIKELY_PATH\\empty\\file_test_windows.c" // CHECK-REPRODUCIBLE-NOT: filename: // CHECK-EVIL-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH=empty\\file_test_windows.c" // CHECK-EVIL-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH=empty\\Inputs\\include-file-test\\file_test.h" // CHECK-EVIL-REPRODUCIBLE: basefile: "A:\\UNLIKELY_PATH=empty\\file_test_windows.c" // CHECK-EVIL-REPRODUCIBLE-NOT: filename: // CHECK-CASE-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH_BASE\\file_test_windows.c" // CHECK-CASE-REPRODUCIBLE: filename: "A:\\UNLIKELY_PATH_INC\\include-file-test\\file_test.h" // CHECK-CASE-REPRODUCIBLE: basefile: "A:\\UNLIKELY_PATH_BASE\\file_test_windows.c" // CHECK-CASE-REPRODUCIBLE-NOT: filename: // CHECK-REMOVE-REPRODUCIBLE: filename: "file_test_windows.c" // CHECK-REMOVE-REPRODUCIBLE: filename: "Inputs\\include-file-test\\file_test.h" // CHECK-REMOVE-REPRODUCIBLE: basefile: "file_test_windows.c" // CHECK-REMOVE-REPRODUCIBLE-NOT: filename: // CHECK-WINDOWS-FULL: filename: "{{[^/]*}}file_test_windows.c" // CHECK-WINDOWS-FULL: filename: "{{[^/]*}}Inputs\\include-file-test\\file_test.h" // CHECK-WINDOWS-FULL: basefile: "{{[^/]*}}file_test_windows.c" // CHECK-WINDOWS-FULL-NOT: filename: // Clang does not modify the prefix for POSIX style, so it may have backslashes. // CHECK-LINUX-FULL: filename: "{{.*}}file_test_windows.c" // CHECK-LINUX-FULL: filename: "{{.*}}Inputs/include-file-test/file_test.h" // CHECK-LINUX-FULL: basefile: "{{.*}}file_test_windows.c" // CHECK-LINUX-FULL-NOT: filename: