aboutsummaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2010-08-14Always recurse into sub-cursors when annotating tokens, as this information ↵Ted Kremenek
is used for annotating macro arguments. This finishes up <rdar://problem/8044584>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111066 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-14As a heuristic, annotate tokens (via clang_annotateTokens) that are the ↵Ted Kremenek
arguments of a macro instantiation using the closest cursor with the same spelling location. Because macro arguments can get token pasted in any arbitrary order, we use the annotation map to paper over the token -> cursor annotations during our post-processing stage. This fixes most of <rdar://problem/8044584>, but still doesn't work for assert(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111062 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Implement caching of code-completion results for macro definitionsDouglas Gregor
when the CXTranslationUnit_CacheCompletionResults option is given to clang_parseTranslationUnit(). Essentially, we compute code-completion results for macro definitions after we have parsed the file, then store an ASTContext-agnostic version of those results (completion string, cursor kind, priority, and active contexts) in the ASTUnit. When performing code completion in that ASTUnit, we splice the macro definition results into the results provided by the actual code-completion (which has had macros turned off) before libclang gets those results. We use completion context information to only splice in those results that make sense for that context. With a completion involving all of the macros from Cocoa.h and a few other system libraries (totally ~8500 macro definitions) living in a precompiled header, we get about a 9% performance improvement from code completion, since we no longer have to deserialize all of the macro definitions from the precompiled header. Note that macro definitions are merely the canary; the cache is designed to also support other top-level declarations, which should be a bigger performance win. That optimization will be next. Note also that there is no mechanism for determining when to throw away the cache and recompute its contents. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111051 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Add an options parameter to clang_saveTranslationUnit, because we'll want it ↵Douglas Gregor
later git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111016 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Implement clang_saveTranslationUnit(), which saves a translation unitDouglas Gregor
into a PCH/AST file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111006 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12Frontend: Move the bulk of the cc1_main() processing intoDaniel Dunbar
ExecuteCompilerInvocation in libFrontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110903 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12clang -cc1: Move real diagnostics client initialization to earlier.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110902 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Once code completion has completed, pass a "completion context" on toDouglas Gregor
the code-completion consumer. The consumer can use this information to augument, filter, or display the code-completion results. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110858 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Add a (currently unused) "options" parameter toDouglas Gregor
clang_reparseTranslationUnit(), along with a function to retrieve the default recommended reparsing options for a translation unit. Also, add the CXTranslationUnit_CacheCompletionResults flag, which is also currently unused. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110811 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10Teach the libclang cursor visitor to walk into the type informationDouglas Gregor
provided by __builtin_types_compatible_p and __builtin_va_arg expressions, now that Abramo has added proper type-source information to those expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110681 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-09Instead of having a specific CXTranslationUnit_* option flag forDouglas Gregor
"editing" mode, introduce a separate function clang_defaultEditingTranslationUnitOptions() that retrieves the set of options. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110613 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-09Fix mixed declarations and code warning.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110602 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-09Minor libclang tweaksDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110599 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-09Use precompiled preambles for in-process code completion.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110596 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06Don't pass -avoid-version to Darwin linkerDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110438 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Give clang_codeCompleteAt() an "options" parameter, and add a newDouglas Gregor
flags enumeration + default-generating function that allows code-completion to be customized via the libclang API. Plus, turn on spell-checking when performing code completion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110319 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04When performing in-process code completion, don't free the remappedDouglas Gregor
file buffers until the code completion results are destroyed; diagnostics may end up referring into the source. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110216 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Add code-completion support directly to ASTUnit, which performs codeDouglas Gregor
completion within the translation unit using the same command-line arguments for parsing the translation unit. Eventually, we'll reuse the precompiled preamble to improve code-completion performance, and this also gives us a place to cache results. Expose this function via the new libclang function clang_codeCompleteAt(), which performs the code completion within a CXTranslationUnit. The completion occurs in-process (clang_codeCompletion() runs code completion out-of-process). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110210 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03When using a precompiled preamble, keep track of the top-levelDouglas Gregor
declarations that we saw when creating the precompiled preamble, and provide those declarations in addition to the declarations parsed in the main source file when traversing top-level declarations. This makes the use of precompiled preambles a pure optimization, rather than changing the semantics of the parsed translation unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110131 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-02Add Darwin dylib versioning support to libclang when build with CMake.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110062 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-02Frontend: Change PluginASTAction::ParseArgs to take a CompilerInstance objectDaniel Dunbar
for use in reporting diagnostics. - We don't want to use the Action's own CompilerInstance, because that is only initialized during file processing and I like that invariant. Also, if ParseArgs returns false then abandon execution. Also, remove unused PluginASTAction::PrintHelp virtual method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110039 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-01Driver: Keep track of a separate "install dir", which is the path where clangDaniel Dunbar
was invoked from (which may not be where the executable itself is). - This allows having e.g., /Developer/usr/bin/clang be a symlink to some other location, while still making sure the Driver finds 'as', 'ld', etc. relative to itself. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109989 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-01Simplify.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109988 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-31build: Don't pass -avoid-version or -no-undefined on Darwin, they don't doDaniel Dunbar
anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109958 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-30Add clang_isPODType() for querying if the CXType is POD. Implements ↵Ted Kremenek
<rdar://problem/8250669>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109822 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-29Prepare for upcoming ownership change.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109766 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-29Check for an invalid SourceLocation in clang_getCursor(). This avoids a ↵Ted Kremenek
possible assertion failure in SourceManager in the call to Lexer::GetBeginningOfToken(). Fixes <rdar://problem/8244873>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-29Visit the children of CXXOperatorCallExprs in source order withinDouglas Gregor
libclang, so that clang_annotateTokens() doesn't get confused and miss annotations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109706 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-27Revert r109546, it broke linux build.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109550 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-27Merge PCHWriterDecl.cpp's isRequiredDecl and ↵Argyrios Kyrtzidis
CodeGenModule::MayDeferGeneration into a new function, DeclIsRequiredFunctionOrFileScopedVar. This function is part of the public CodeGen interface since it's essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes. This fixes current (and avoids future) codegen-from-PCH bugs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109546 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26Fix an apparent bug.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109447 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log ↵Douglas Gregor
code-completion command lines to stderr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109395 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26Eliminate the "minimal" and printing parser actions, which only everDouglas Gregor
worked for C anyway. Also kills the -cc1 options -parse-noop and -parse-print-callbacks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109392 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-25Start removing the use of smart pointers from the Parse/SemaDouglas Gregor
interaction, by effectively defaulting to DISABLE_SMART_POINTERS. We're embracing the model where all AST nodes are ASTContext-allocated and live as long as the ASTContext lives. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109374 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-23Basic plumbing for generating a precompiled preamble for anDouglas Gregor
ASTUnit/CXTranslationUnit. We can't actually use this preamble yet, however. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109202 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22Improve performance during cursor traversal when a region of interestDouglas Gregor
is present. Rather than using clang_getCursorExtent(), which requires us to lex the token at the ending position to determine its length. Then, we'd be comparing [a, b) source ranges that cover the characters in the range rather than the normal behavior for Clang's source ranges, which covers the tokens in the range. However, relexing causes us to read the source file (which may come from a precompiled header), which is rather unfortunate and affects performance. In the new scheme, we only use Clang-style source ranges that cover the tokens in the range. At the entry points where this matters (clang_annotateTokens, clang_getCursor), we make sure to move source locations to the start of the token. Addresses most of <rdar://problem/8049381>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109134 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22Fix '<rdar://problem/8214263> MakeCXCursor null dereference when body of ↵Ted Kremenek
block is invalid' by checking that the body of a BlockDecl is null before constructing a CXCursor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109097 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22Switch USR generation to use file offsets instead of line/columns for ↵Ted Kremenek
anonymous symbols. Fixes <rdar://problem/8221557>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109095 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22This was still complaining about the length of the string. I've broken it hereChandler Carruth
to try to keep as much logical grouping as possible. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109085 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-21Introduce a new C API function, clang_parseTranslationUnit(), whichDouglas Gregor
will eventually replace clang_createTranslationUnitFromSourceFile(). The only addition in clang_parseTranslationUnit() is a set of flags that can control how the translation unit is loaded. More interesting flags will be coming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109027 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20Introduce a new lexer function to compute the "preamble" of a file,Douglas Gregor
which is the part of the file that contains all of the initial comments, includes, and preprocessor directives that occur before any of the actual code. Added a new -print-preamble cc1 action that is only used for testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108913 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20Slip up long string literalDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108838 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20Driver: Switch to using a SmallVector instead of std::vector, and stopDaniel Dunbar
accessing outside the range of the vector (which always asserts on Win32). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108802 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Introduce a new libclang API, clang_reparseTranslationUnit(), whichDouglas Gregor
reparses an already-parsed translation unit. At the moment it's just a convenience function, but we hope to use it for performance optimizations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108756 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Implement support for reading arguments specified in a file with @file. IfRafael Espindola
there is no file named "file", keep the @file option unchanged. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108697 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Revert r108672, "Implement support for reading arguments specified in a fileDaniel Dunbar
with @file.", it doesn't correctly handle cases where arguments starting with '@' are passed to other command line arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108686 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Implement support for reading arguments specified in a file with @file.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108672 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Reapply r108617.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108668 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Driver: Change the driver to take the path to the main executable, instead ofDaniel Dunbar
taking it in pieces. - Fixes a problem where the Clang executable path was not initialized properly on Win32, because sys::Path::getBasename() doesn't do what I always think it does. Imagine that, a sys::Path interface that is confusing! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108667 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19Update for LLVM API change.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108665 91177308-0d34-0410-b5e6-96231b3b80d8