Skip to content

Commit 3acd761

Browse files
authored
Windows: Use proper --target switch for clang-cl preprocessor (#4955)
So that older clang versions don't warn about ignored unknown arguments. `--target=<triple>` is the official syntax used in the `clang-cl /help` output (checked for clang v14 and v20). Fixes #4834.
1 parent e52a26c commit 3acd761

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

driver/cpreprocessor.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ FileName runCPreprocessor(FileName csrcfile, Loc loc, OutBuffer &defines) {
124124
args.push_back("/Zc:preprocessor"); // use the new conforming preprocessor
125125
} else {
126126
// propagate the target to the preprocessor
127-
args.push_back("-target");
128-
args.push_back(triple.getTriple());
127+
args.push_back("--target=" + triple.getTriple());
129128

130129
#if LDC_LLVM_VER >= 1800 // getAllProcessorFeatures was introduced in this version
131130
// propagate all enabled/disabled features to the preprocessor
@@ -146,8 +145,7 @@ FileName runCPreprocessor(FileName csrcfile, Loc loc, OutBuffer &defines) {
146145

147146
// print macro definitions (clang-cl doesn't support /PD - use clang's
148147
// -dD)
149-
args.push_back("-Xclang");
150-
args.push_back("-dD");
148+
args.push_back("/clang:-dD");
151149

152150
// need to redefine some macros in importc.h
153151
args.push_back("-Wno-builtin-macro-redefined");

tests/driver/clang-cl-target-forwarding.d

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
// RUN: %ldc -mtriple=aarch64-pc-windows-msvc -mcpu=apple-a10 -v -c %S/inputs/preprocessable.c | FileCheck %s -check-prefix=apple-a10
1111
// RUN: %ldc -mtriple=aarch64-pc-windows-msvc -mcpu=apple-a11 -v -c %S/inputs/preprocessable.c | FileCheck %s -check-prefix=apple-a11
1212

13-
// znver1: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*-target[[:space:]]+x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-clwb.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+sse4a}}
14-
// znver1-sans-sse4a: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*-target[[:space:]]+x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-clwb.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-sse4a}}
15-
// znver2: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*-target[[:space:]]+x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+clwb}}
16-
// apple-a10: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*-target[[:space:]]+aarch64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+apple-a10.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-apple-a11}}
17-
// apple-a11: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*-target[[:space:]]+aarch64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-apple-a10.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+apple-a11}}
13+
// znver1: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*--target=x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-clwb.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+sse4a}}
14+
// znver1-sans-sse4a: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*--target=x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-clwb.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-sse4a}}
15+
// znver2: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*--target=x86_64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+clwb}}
16+
// apple-a10: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*--target=aarch64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+apple-a10.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-apple-a11}}
17+
// apple-a11: {{\\cl\.exe[[:space:]]|\\clang-cl\.exe[[:space:]].*--target=aarch64-pc-windows-msvc.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\-apple-a10.*-Xclang[[:space:]]+-target-feature[[:space:]]+-Xclang[[:space:]]+\+apple-a11}}

0 commit comments

Comments
 (0)