ccc: Add -Xclang option, rename -WA, to -Xanalyzer.
- -Xclang always forwards to clang
- -Xanalyzer replaces -WA,; it seems like the cleaner mechanism and
is more readable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63349 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/Arguments.py b/tools/ccc/ccclib/Arguments.py
index bb25913..1ff76ec 100644
--- a/tools/ccc/ccclib/Arguments.py
+++ b/tools/ccc/ccclib/Arguments.py
@@ -549,7 +549,8 @@
# Blanket pass-through options.
- self.WAOption = self.addOption(CommaJoinedOption('-WA,'))
+ self.XanalyzerOption = self.addOption(SeparateOption('-Xanalyzer'))
+ self.XclangOption = self.addOption(SeparateOption('-Xclang'))
self.WaOption = self.addOption(CommaJoinedOption('-Wa,'))
self.XassemblerOption = self.addOption(SeparateOption('-Xassembler'))
diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py
index 61d6a24..ed13814 100644
--- a/tools/ccc/ccclib/Tools.py
+++ b/tools/ccc/ccclib/Tools.py
@@ -225,9 +225,9 @@
cmd_args.append('-analyzer-output-plist')
- # Add -WA, arguments when running as analyzer.
- for arg in arglist.getArgs(arglist.parser.WAOption):
- cmd_args.extend(arglist.renderAsInput(arg))
+ # Add -Xanalyzer arguments when running as analyzer.
+ for arg in arglist.getArgs(arglist.parser.XanalyzerOption):
+ cmd_args.extend(arglist.getValues(arg))
else:
# Perform argument translation for LLVM backend. This
# takes some care in reconciling with llvm-gcc. The
@@ -325,6 +325,9 @@
arglist.addLastArg(cmd_args, arglist.parser.f_pascalStringsOption)
arglist.addLastArg(cmd_args, arglist.parser.f_writableStringsOption)
+ for arg in arglist.getArgs(arglist.parser.XclangOption):
+ cmd_args.extend(arglist.getValues(arg))
+
if arch is not None:
cmd_args.extend(arglist.render(arch))
diff --git a/tools/ccc/test/ccc/Xclang.c b/tools/ccc/test/ccc/Xclang.c
new file mode 100644
index 0000000..39da6a8
--- /dev/null
+++ b/tools/ccc/test/ccc/Xclang.c
@@ -0,0 +1 @@
+// RUN: xcc -fsyntax-only -Xclang --help %s | grep 'OVERVIEW: llvm clang cfe'
diff --git a/tools/ccc/test/ccc/analyze.c b/tools/ccc/test/ccc/analyze.c
index b03c6af..6693c76 100644
--- a/tools/ccc/test/ccc/analyze.c
+++ b/tools/ccc/test/ccc/analyze.c
@@ -1,5 +1,8 @@
// RUN: xcc --analyze %s -o %t &&
-// RUN: grep '<string>Dereference of null pointer.</string>' %t
+// RUN: grep '<string>Dereference of null pointer.</string>' %t &&
+
+// RUN: xcc -### --analyze %s -Xanalyzer -check-that-program-halts &> %t &&
+// RUN: grep 'check-that-program-halts' %t
void f(int *p) {
if (!p)