1 //===--- CommandLineArgs.cpp ----------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #include "clang/Testing/CommandLineArgs.h"
10 #include "llvm/Support/ErrorHandling.h"
11
12 namespace clang {
13
getCommandLineArgsForTesting(TestLanguage Lang)14 std::vector<std::string> getCommandLineArgsForTesting(TestLanguage Lang) {
15 std::vector<std::string> Args;
16 // Test with basic arguments.
17 switch (Lang) {
18 case Lang_C89:
19 Args = {"-x", "c", "-std=c89"};
20 break;
21 case Lang_C99:
22 Args = {"-x", "c", "-std=c99"};
23 break;
24 case Lang_CXX03:
25 Args = {"-std=c++03", "-frtti"};
26 break;
27 case Lang_CXX11:
28 Args = {"-std=c++11", "-frtti"};
29 break;
30 case Lang_CXX14:
31 Args = {"-std=c++14", "-frtti"};
32 break;
33 case Lang_CXX17:
34 Args = {"-std=c++17", "-frtti"};
35 break;
36 case Lang_CXX20:
37 Args = {"-std=c++20", "-frtti"};
38 break;
39 case Lang_OBJC:
40 Args = {"-x", "objective-c", "-frtti", "-fobjc-nonfragile-abi"};
41 break;
42 case Lang_OBJCXX:
43 Args = {"-x", "objective-c++", "-frtti"};
44 break;
45 case Lang_OpenCL:
46 llvm_unreachable("Not implemented yet!");
47 }
48 return Args;
49 }
50
getCC1ArgsForTesting(TestLanguage Lang)51 std::vector<std::string> getCC1ArgsForTesting(TestLanguage Lang) {
52 std::vector<std::string> Args;
53 switch (Lang) {
54 case Lang_C89:
55 Args = {"-xc", "-std=c89"};
56 break;
57 case Lang_C99:
58 Args = {"-xc", "-std=c99"};
59 break;
60 case Lang_CXX03:
61 Args = {"-std=c++03"};
62 break;
63 case Lang_CXX11:
64 Args = {"-std=c++11"};
65 break;
66 case Lang_CXX14:
67 Args = {"-std=c++14"};
68 break;
69 case Lang_CXX17:
70 Args = {"-std=c++17"};
71 break;
72 case Lang_CXX20:
73 Args = {"-std=c++20"};
74 break;
75 case Lang_OBJC:
76 Args = {"-xobjective-c"};
77 break;
78 case Lang_OBJCXX:
79 Args = {"-xobjective-c++"};
80 break;
81 case Lang_OpenCL:
82 llvm_unreachable("Not implemented yet!");
83 }
84 return Args;
85 }
86
getFilenameForTesting(TestLanguage Lang)87 StringRef getFilenameForTesting(TestLanguage Lang) {
88 switch (Lang) {
89 case Lang_C89:
90 case Lang_C99:
91 return "input.c";
92
93 case Lang_CXX03:
94 case Lang_CXX11:
95 case Lang_CXX14:
96 case Lang_CXX17:
97 case Lang_CXX20:
98 return "input.cc";
99
100 case Lang_OpenCL:
101 return "input.cl";
102
103 case Lang_OBJC:
104 return "input.m";
105
106 case Lang_OBJCXX:
107 return "input.mm";
108 }
109 llvm_unreachable("Unhandled TestLanguage enum");
110 }
111
112 } // end namespace clang
113