Skip to content

Commit 98fbe0d

Browse files
committed
dedup some code
1 parent 5f09103 commit 98fbe0d

File tree

3 files changed

+38
-42
lines changed

3 files changed

+38
-42
lines changed

src/compiler/clang.rs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -179,27 +179,7 @@ impl CCompilerImpl for Clang {
179179
}
180180

181181
pub fn language_to_clang_arg(lang: Language) -> Option<&'static str> {
182-
match lang {
183-
// https://github.com/llvm/llvm-project/blob/main/clang/include/clang/Driver/Types.def
184-
Language::C => Some("c"),
185-
Language::CHeader => Some("c-header"),
186-
Language::CPreprocessed => Some("cpp-output"),
187-
Language::Cxx => Some("c++"),
188-
Language::CxxHeader => Some("c++-header"),
189-
Language::CxxPreprocessed => Some("c++-cpp-output"),
190-
Language::ObjectiveC => Some("objective-c"),
191-
Language::ObjectiveCPreprocessed => Some("objective-c-cpp-output"),
192-
Language::ObjectiveCxx => Some("objective-c++"),
193-
Language::ObjectiveCxxHeader => Some("objective-c++-header"),
194-
Language::ObjectiveCxxPreprocessed => Some("objective-c++-cpp-output"),
195-
Language::Cuda => Some("cuda"),
196-
Language::CudaFE => None,
197-
Language::Ptx => None,
198-
Language::Cubin => None,
199-
Language::Rust => None, // Let the compiler decide
200-
Language::Hip => Some("hip"),
201-
Language::GenericHeader => None, // Let the compiler decide
202-
}
182+
lang.to_clang_arg()
203183
}
204184

205185
counted_array!(pub static ARGS: [ArgInfo<gcc::ArgData>; _] = [

src/compiler/compiler.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,42 @@ impl Language {
296296
| Language::Rust
297297
)
298298
}
299+
300+
/// Common implementation for GCC and Clang language argument mapping
301+
fn to_compiler_arg(self, cuda_arg: &'static str) -> Option<&'static str> {
302+
match self {
303+
Language::C => Some("c"),
304+
Language::CHeader => Some("c-header"),
305+
Language::CPreprocessed => Some("cpp-output"),
306+
Language::Cxx => Some("c++"),
307+
Language::CxxHeader => Some("c++-header"),
308+
Language::CxxPreprocessed => Some("c++-cpp-output"),
309+
Language::ObjectiveC => Some("objective-c"),
310+
Language::ObjectiveCPreprocessed => Some("objective-c-cpp-output"),
311+
Language::ObjectiveCxx => Some("objective-c++"),
312+
Language::ObjectiveCxxHeader => Some("objective-c++-header"),
313+
Language::ObjectiveCxxPreprocessed => Some("objective-c++-cpp-output"),
314+
Language::Cuda => Some(cuda_arg),
315+
Language::CudaFE => None,
316+
Language::Ptx => None,
317+
Language::Cubin => None,
318+
Language::Rust => None, // Let the compiler decide
319+
Language::Hip => Some("hip"),
320+
Language::GenericHeader => None, // Let the compiler decide
321+
}
322+
}
323+
324+
/// Returns the GCC-specific language argument for the `-x` flag
325+
/// https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html
326+
pub fn to_gcc_arg(self) -> Option<&'static str> {
327+
self.to_compiler_arg("cu")
328+
}
329+
330+
/// Returns the Clang-specific language argument for the `-x` flag
331+
/// https://github.com/llvm/llvm-project/blob/main/clang/include/clang/Driver/Types.def
332+
pub fn to_clang_arg(self) -> Option<&'static str> {
333+
self.to_compiler_arg("cuda")
334+
}
299335
}
300336

301337
impl CompilerKind {

src/compiler/gcc.rs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -700,27 +700,7 @@ where
700700
}
701701

702702
pub fn language_to_gcc_arg(lang: Language) -> Option<&'static str> {
703-
match lang {
704-
// https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html
705-
Language::C => Some("c"),
706-
Language::CHeader => Some("c-header"),
707-
Language::CPreprocessed => Some("cpp-output"),
708-
Language::Cxx => Some("c++"),
709-
Language::CxxHeader => Some("c++-header"),
710-
Language::CxxPreprocessed => Some("c++-cpp-output"),
711-
Language::ObjectiveC => Some("objective-c"),
712-
Language::ObjectiveCPreprocessed => Some("objective-c-cpp-output"),
713-
Language::ObjectiveCxx => Some("objective-c++"),
714-
Language::ObjectiveCxxHeader => Some("objective-c++-header"),
715-
Language::ObjectiveCxxPreprocessed => Some("objective-c++-cpp-output"),
716-
Language::Cuda => Some("cu"),
717-
Language::CudaFE => None,
718-
Language::Ptx => None,
719-
Language::Cubin => None,
720-
Language::Rust => None, // Let the compiler decide
721-
Language::Hip => Some("hip"),
722-
Language::GenericHeader => None, // Let the compiler decide
723-
}
703+
lang.to_gcc_arg()
724704
}
725705

726706
#[allow(clippy::too_many_arguments)]

0 commit comments

Comments
 (0)