Commit Graph

354 Commits

Author SHA1 Message Date
Ehsan Akhgari d3c40bafee clang-c: Add the clang_getCursorVisibility() API
This patch adds an API for querying the visibility of the entity
referred to by a cursor.

Patch by Michael Wu <mwu@mozilla.com>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271292 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 15:55:51 +00:00
Ehsan Akhgari dafa8b9142 Revert r253909 because it was committed with an incorrect message
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271291 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-31 15:39:10 +00:00
David Blaikie f2899fa354 [scan-build] fix dead store warnings emitted on clang code base
This fixes dead store warnings of the type "dead assignment" reported
by CLang Static Analyzer on the following file:

- tools/c-index-test/c-index-test.c.

Patch by Apelete Seketeli <apelete@seketeli.net>!

Differential Revision: http://reviews.llvm.org/D19831

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268453 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-03 22:14:14 +00:00
Jonathan Coe f376e8cf30 Expose cxx constructor and method properties through libclang and python bindings.
Summary:
I have exposed the following function through libclang and the clang.cindex python bindings:

clang_CXXConstructor_isConvertingConstructor,
clang_CXXConstructor_isCopyConstructor,
clang_CXXConstructor_isDefaultConstructor,
clang_CXXConstructor_isMoveConstructor,
clang_CXXMethod_isDefaulted

I need (some of) these methods for a C++ code model I am building in Python to drive a code generator.

Reviewers: compnerd, skalinichev

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D15469

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267706 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-27 12:48:25 +00:00
Vedant Kumar 68459edd2a [c-index-test] Fix leak in print_completion_result, NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265252 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-03 00:54:46 +00:00
Vedant Kumar f7d61c9051 [c-index-test] Delete dead function, NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264874 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-30 16:03:02 +00:00
Manuel Klimek ac0a11ae22 Optionally demote fatal errors to non-fatal errors.
This behavior is enabled when the new CXTranslationUnit_KeepGoing
option is passed to clang_parseTranslationUnit{,2}. It is geared
towards use by IDEs and similar consumers of the clang-c API where
fatal errors may arise when parsing incomplete code mid-edit, or
when include paths are not properly configured yet. In such situations
one still wants to get as much information as possible about a TU.
Previously, the semantic analysis would not instantiate templates
or report additional fatal errors after the first fatal error was
encountered.

Fixes PR24268.

Patch by Milian Wolff.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262318 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-01 10:56:19 +00:00
Argyrios Kyrtzidis 4d8332ae58 [index] Enhance c-index-test tool and have it link and test the clangIndex library directly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260842 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-14 06:39:11 +00:00
Argyrios Kyrtzidis c5f92b66c8 [libclang] Introduce APIs for evaluating a cursor and checking if a macro is builtin/function.
rdar://24091595

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257968 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 00:20:02 +00:00
Sergey Kalinichev 1e91237549 [libclang] Handle AutoType in clang_getTypeDeclaration
Differential Revision: http://reviews.llvm.org/D13001


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257043 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-07 09:20:40 +00:00
Erik Verbruggen 8f8b710193 Show inclusions from a preamble in clang_getInclusions.
When reparsing a translation unit with preamble generation turned on,
no includes are found. This is due to the fact that all SLocs from
AST/PCH files are skipped as they are 'loaded', and inclusions from a
preamble are also 'loaded'. So, in case a file has a preamble, it first
needs to process those loaded inclusions, and then check for any local
inclusions. This latter one is for any includes that are not part of the
preamble, like includes half-way through a file.

This fixes PR24748.

Differential Revision: http://reviews.llvm.org/D14329

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256939 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-06 15:12:51 +00:00
Benjamin Kramer bdb673743a [libclang] Add a flag to create the precompiled preamble on the first parse.
Summary:
The current default is to create the preamble on the first reparse, aka
second parse. This is useful for clients that do not want to block when
opening a file because serializing the preamble takes a bit of time.
However, this makes the reparse much more expensive and that may be on the
critical path as it's the first interaction a user has with the source code.

YouCompleteMe currently optimizes for the first code interaction by parsing
the file twice when loaded. That's just unnecessarily slow and this flag
helps to avoid that.

Reviewers: doug.gregor, klimek

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D15490

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255635 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-15 09:30:31 +00:00
Ehsan Akhgari b5395ff11a Make clang_Cursor_getMangling not mangle if the declaration isn't mangled
Right now clang_Cursor_getMangling will attempt to mangle any
declaration, even if the declaration isn't mangled (extern C).  This
results in a partially mangled name which isn't useful for much. This
patch makes clang_Cursor_getMangling return an empty string if the
declaration isn't mangled.

Patch by Michael Wu <mwu@mozilla.com>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253909 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-23 19:56:46 +00:00
Saleem Abdulrasool cdfd2b5933 libclang: add clang_Cursor_getCXXManglings
This function permits the mangling of a C++ 'structor.  Depending on the ABI and
the declaration, the declaration may contain more than one associated symbol for
a given declaration.  This allows the consumer to retrieve all of the associated
symbols for the declaration the cursor points to.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252853 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 03:57:22 +00:00
Saleem Abdulrasool 08e335a648 Index: expose is_mutable_field
Expose isMutable via libClang and python bindings.

Patch by Jonathan B Coe!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251410 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-27 15:50:22 +00:00
Craig Topper 40bf428a9f Fix a -Wdeclaration-after-statement warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249652 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 03:37:36 +00:00
Ehsan Akhgari bf978b5a0b Make clang_Cursor_getMangling not mangle if the declaration isn't mangled
Right now clang_Cursor_getMangling will attempt to mangle any
declaration, even if the declaration isn't mangled (extern C).  This
results in a partially mangled name which isn't useful for much. This
patch makes clang_Cursor_getMangling return an empty string if the
declaration isn't mangled.

Patch by Michael Wu <mwu@mozilla.com>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249639 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 00:01:20 +00:00
Ehsan Akhgari 1233ac35f7 Revert r249437
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249440 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 18:53:12 +00:00
Ehsan Akhgari 70e8b815c5 Make clang_Cursor_getMangling don't mangle if the declaration isn't mangled
Right now clang_Cursor_getMangling will attempt to mangle any
declaration, even if the declaration isn't mangled (extern "C").  This
results in a partially mangled name which isn't useful for much. This
patch makes clang_Cursor_getMangling return an empty string if the
declaration isn't mangled.

Patch by Michael Wu <mwu@mozilla.com>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249437 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 18:24:33 +00:00
Chandler Carruth 8fd59d7392 [UB] Avoid a really broken call to realloc that would later result in
a bad call to memcpy.

When we only have a buffer from one of the two reparse calls, we can
just return that buffer rather than going through the realloc/memcpy
dance.

Found with UBsan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243950 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-04 03:53:04 +00:00
Adrian Prantl 7edf3602fc Fix a typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240025 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-18 16:41:51 +00:00
Yaron Keren 142e7f3289 Revert r237339 as sanitizer-ppc64-linux1 does not like it.
Complains:

/home/buildbots/sanitizerslave1/sanitizer-ppc64-1/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:829:30: error: format specifies type 'long' but the argument has type 'long long' [-Werror,-Wformat]
                     I, TAK, clang_Cursor_getTemplateArgumentValue(Cursor, I));
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I'm not sure now how this should be fixed. %lld is non-standard
and not accepted by mingw on Windows while PRId64 is bad for this bot.

Is long long longer than 64 bits here? if not, why is PRId64
incompatible with it? something seems wrong.

Probably all the datatypes should be replaced to unsigned or uint64_t
depending upin requirements instead of the non standard long long.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237346 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-14 06:53:31 +00:00
Yaron Keren 8a01070d81 Replace non-standard %lld printf usage with PRId64.
See also r180024.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237339 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-14 05:40:50 +00:00
Argyrios Kyrtzidis 11a6a5c1d6 [libclang] Add functions to get information about fields.
Patch by Loïc Jaquemet!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234762 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-13 16:55:04 +00:00
Rafael Espindola 4779beea00 This reverts commit r227432, r227438 and r227448.
It should bring the bots back.

Original messagses:

r227448:
   Remove unnecessary default.

r227438:
   Fix Index/print-type.cpp test following r227432.

r227432:
    libclang: Add three functions useful for dealing with anonymous fields:
       clang_Cursor_getOffsetOfField
       clang_Cursor_isAnonymous
       clang_Type_visitFields
    Python: Add corresponding methods for dealing with anonymous fields.

    Patch by Loïc Jaquemet

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227472 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-29 17:22:53 +00:00
Francois Pichet fa8a3bc3d0 libclang: Add three functions useful for dealing with anonymous fields:
clang_Cursor_getOffsetOfField
   clang_Cursor_isAnonymous
   clang_Type_visitFields
Python: Add corresponding methods for dealing with anonymous fields.

Patch by Loïc Jaquemet

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227432 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-29 12:45:29 +00:00
Eli Bendersky a0b1e640c5 Add libclang capabilities to retriete template arguments from specializations.
Includes Python bindings.

Reviewed in http://reviews.llvm.org/D5621
Patch by Rob Springer



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219529 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-10 20:01:05 +00:00
Sylvestre Ledru 25d2ffa815 Fix a memory leak in one of the test unit. Silent coverity warning CID 1095912
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215898 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-18 15:18:56 +00:00
Eli Bendersky 2ada1f3969 Fix a memory leak - dispose of the CXString after printing it in mangling.
Thanks to kcc@ for noticing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214506 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 12:55:44 +00:00
Eli Bendersky fe52a33b57 Exposes a C API to name mangling for a given cursor.
Inspired by https://gist.github.com/tritao/2766291, and was previously discussed
on cfe-dev: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-June/037577.html

Adding testing capability via c-index-test.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214410 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-31 18:04:56 +00:00
Timur Iskhodzhanov 074f566e77 Fix C++ style // comments in a couple of C files
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210325 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-06 11:04:46 +00:00
Reid Kleckner c19e37e176 Flush C stdio streams upon process termination
Due to what can only be described as a CRT bug, stdout and amazingly
even stderr are not always flushed upon process termination, especially
when the system is under high threading pressure.  I have found two
repros for this:

1) In lib\Support\Threading.cpp, change sys::Mutex to an
std::recursive_mutex and run check-clang.  Usually between 30 and 40
tests will fail.

2) Add OutputDebugStrings in code that runs during static initialization
and static shutdown.  This will sometimes generate similar failures.

After a substantial amount of troubleshooting and debugging, I found
that I could reproduce this from the command line without running
check-clang.  Simply make the mutex change described in #1, then
manually run the following command many times by running it once, then
pressing Up -> Enter very quickly:

D:\src\llvm\build\vs2013\Debug\bin\c-index-test.EXE -cursor-at=D:\src\llvm\tools\clang\test\Index\targeted-preamble.h:2:15 D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -include D:\src\llvm\build\vs2013\tools\clang\test\Index\Output\targeted-cursor.c.tmp.h -Xclang -error-on-deserialized-decl=NestedVar1      -Xclang -error-on-deserialized-decl=TopVar    | D:\src\llvm\build\vs2013\Debug\bin\FileCheck.EXE D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -check-prefix=PREAMBLE-CURSOR1

Sporadically they will fail, and attaching a debugger to a failed
instance indicates that stdin of FileCheck.exe is empty.

Note that due to the repro in #2, we can rule out a bug in the STL's
mutex implementation, and instead conclude that this is a real flake in
the windows test harness.

Test Plan:
Without patch: Ran check-clang 10 times and saw over 30 Unexpected failures on every run.
With patch: Ran check-clang 10 times and saw 0 unexpected failures across all runs.

Reviewers: rnk

Differential Revision: http://reviews.llvm.org/D4021

Patch by Zachary Turner!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210225 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-05 00:13:43 +00:00
Alp Toker f4545688ea Remove the last remaining llvm/Config/config.h includes
This corrects long-standing misuses of LLVM's internal config.h.

In most cases the public llvm-config.h header was intended and we can now
remove the old hacks thanks to LLVM r210144.

The config.h header is private, won't be installed and should no longer be
included by clang or other modules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210145 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-04 03:28:55 +00:00
Argyrios Kyrtzidis bef5d79963 [libclang] Introduce clang_Module_isSystem(), which returns non-zero if the given CXModule is a system one.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208846 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-15 04:44:25 +00:00
Argyrios Kyrtzidis 1e80e4c5de [liblang] Introduce clang_getModuleForFile, which given a CXFile header file, returns the module that contains it, if one exists.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208822 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-14 23:14:37 +00:00
Nico Weber 58ef309a46 c-index-test: Don't leak diagnostic category text.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208503 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-11 17:16:59 +00:00
Nico Weber a5e558a3f5 Don't leak CXStrings for replacement fix-its in c-index-test.
The loop body used to contain a switch statement; it looks like r96685 replaced
that with an if/else if/else but accidentally left one of the three break
statements from the switch behind, skipping the clang_disposeString() call
for replacements (and the rest of the loop too, which apparently doesn't make
a differences for the test cases we have).

r96685: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20100215/027754.html

This too might possibly the last leak in clang (PR19521).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208483 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-10 23:56:43 +00:00
Nico Weber 6d7447d514 c-index-test: Don't leak the strings returned by makeClientContainer().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208249 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-07 21:09:42 +00:00
Nico Weber ba22e70e6b Make 2 functions static, remove unneeded cast, rewrap. No behavior change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208247 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-07 21:05:22 +00:00
Chandler Carruth d069a45f1f [leaks] Parse the schema file every time we try to verify the XML. Yes,
this is wasteful, blah blah, but this is a test utility only. It turns
out that without doing this, libxml2 will always leak a bunch of the XML
data, and that is causing failures with LSan. This is also quite a bit
simpler and I don't think it is slow enough to really be a show stopper.
If someone yells about the runtime of c-index-test, we can do other
things to try to mitigate it, but the current strategy wasn't working
well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207882 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-02 23:30:59 +00:00
Alp Toker 113a55fb43 libclang: split out the documentation comment API
It's possible that the "comment AST" may be replaced or split out in the
midterm, any anyway this makes the headers easier to read.

Developers don't currently need to include "clang-c/Documentation.h" explicitly
and there's no macro to test for availability yet.

The raw comment and brief comment accessors have been kept in Index.h though
brief support may also move here as a separate proposal.

This is not a deprecation, just a gentle separation of concerns as we look to
simplify the built-in representation of comment nodes and support external
comment processors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207392 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-28 02:39:27 +00:00
Alp Toker dbc6d63bd5 libclang: remove 'CXDiagnostic_Remark'
The change was landed without review or test cases.

It trivially broke almost any stable application checking for Severity >=
CXDiagnostic_Error or indeed any other kind of severity comparison upon
encountering a 'remark'.

Mapped to CXDiagnostic_Warning until a workable solution is proposed to the
list that preserves API stability.

(It's also not clear why the rest of r202475 wasn't simply implemented as a
modifier to the existing 'warning' level.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207319 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-26 14:43:53 +00:00
Nico Weber 29c13d16f0 Fix two leaks in c-index-test found by LSan.
The result of clang_getCursorSpelling() needs to be clang_getCursorSpelling()ed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207073 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-24 04:14:12 +00:00
Anders Waldenborg c0fadbc7d9 Make c-index-test -test-print-type include pointeekind for pointer types
The idea is to give visibility to more type kinds, especially for getting
a better grasp of what appears as unexposed type kind with libclang.

Differential Revision: http://reviews.llvm.org/D3325


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205921 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 19:16:08 +00:00
Dmitri Gribenko 97e10ae577 libclang: add clang_CXXMethod_isConst API that allows to determine if a C++
member function or member function template is declared 'const'

Patch by Kevin Funk with testcase updates by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205714 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-07 14:59:13 +00:00
Richard Smith 4488394d85 Remove a dead store, add a FIXME for another.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203169 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-06 21:59:38 +00:00
Tobias Grosser 9762c97158 Add 'remark' diagnostic type in 'clang'
A 'remark' is information that is not an error or a warning, but rather some
additional information provided to the user. In contrast to a 'note' a 'remark'
is an independent diagnostic, whereas a 'note' always depends on another
diagnostic.

A typical use case for remark nodes is information provided to the user, e.g.
information provided by the vectorizer about loops that have been vectorized.

This patch provides the initial implementation of 'remarks'. It includes the
actual definiton of the remark nodes, their printing as well as basic parameter
handling. We are reusing the existing diagnostic parameters which means a remark
can be enabled with normal '-Wdiagnostic-name' flags and can be upgraded to
an error using '-Werror=diagnostic-name'. '-Werror' alone does not upgrade
remarks.

This patch is by intention minimal in terms of parameter handling. More
experience and more discussions will most likely lead to further enhancements
in the parameter handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202475 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-28 09:11:08 +00:00
Dmitri Gribenko 0b945e0ef2 libclang: New functions clang_Type_getNumTemplateArguments,
clang_Type_getTemplateArgument

Note that these functions don't handle variadic templates -- see tests.

Patch by Matthieu Nottale and Philippe Daouadi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202406 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 16:05:05 +00:00
Patrik Hagglund 7e2fb94d62 Fix gcc warning about C++ style comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201512 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-17 11:54:08 +00:00
Dmitri Gribenko b670b9b849 libclang: report error code for bad PCH files
This commit improves libclang to report the error condition when
CXTranslationUnit can not be created because of a stale PCH file.  This allows
the caller, for example, to rebuild the PCH file and retry the request.

There two are APIs in libclang that return a CXTranslationUnit and don't
support reporting detailed errors (the only error condition is a NULL result).
For these APIs, a second, superior, version is introduced --
clang_createTranslationUnit2 and clang_parseTranslationUnit2.  These functions
return a CXTranslationUnit indirectly and also return an error code.  Old
functions are still supported and are nothing more than convenience wrappers
that ignore extended error codes.

As a cleanup, this commit also categorizes some libclang errors in the
functions I had to modify anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201249 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-12 19:12:37 +00:00