Clang docs: add some information about the difference between 'clang' and 'clang -cc1'
This is coming up again and again on the mailing list and IRC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171656 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/docs/FAQ.rst b/docs/FAQ.rst
new file mode 100644
index 0000000..dc97507
--- /dev/null
+++ b/docs/FAQ.rst
@@ -0,0 +1,52 @@
+================================
+Frequently Asked Questions (FAQ)
+================================
+
+.. contents::
+ :local:
+
+Driver
+======
+
+I run ``clang -cc1 ...`` and get weird errors about missing headers
+-------------------------------------------------------------------
+
+Given this source file:
+
+.. code-block:: c
+
+ #include <stdio.h>
+
+ int main() {
+ printf("Hello world\n");
+ }
+
+
+If you run:
+
+.. code-block:: console
+
+ $ clang -cc1 hello.c
+ hello.c:1:10: fatal error: 'stdio.h' file not found
+ #include <stdio.h>
+ ^
+ 1 error generated.
+
+``clang -cc1`` is the frontend, ``clang`` is the :doc:`driver
+<DriverInternals>`. The driver invokes the frontend with options appropriate
+for your system. To see these options, run:
+
+.. code-block:: console
+
+ $ clang -### -c hello.c
+
+Some clang command line options are driver-only options, some are frontend-only
+options. Frontend-only options are intended to be used only by developers.
+Users should not run ``clang -cc1`` directly.
+
+If you want to use a frontend-only option ("a ``-cc1`` option"), for example
+``-ast-dump``, then you need to take the ``clang -cc1`` line generated by the
+driver and add the option you need. Alternatively, you can run
+``clang -Xclang <option> ...`` to force the driver pass ``<option>`` to
+``clang -cc1``.
+
diff --git a/docs/index.rst b/docs/index.rst
index 55f7142..4a20bb9 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -21,6 +21,7 @@
AddressSanitizer
ThreadSanitizer
MemorySanitizer
+ FAQ
Using Clang as a Library
========================