Tareq A. Siraj
6dfa25a19f
Sema for Captured Statements
...
Add CapturedDecl to be the DeclContext for CapturedStmt, and perform semantic
analysis. Currently captures all variables by reference.
TODO: templates
Author: Ben Langmuir <ben.langmuir@intel.com>
Differential Revision: http://llvm-reviews.chandlerc.com/D433
llvm-svn: 179618
2013-04-16 19:37:38 +00:00
Tareq A. Siraj
24110cc733
Implement CapturedStmt AST
...
CapturedStmt can be used to implement generic function outlining as described in
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-January/027540.html .
CapturedStmt is not exposed to the C api.
Serialization and template support are pending.
Author: Wei Pan <wei.pan@intel.com>
Differential Revision: http://llvm-reviews.chandlerc.com/D370
llvm-svn: 179615
2013-04-16 18:53:08 +00:00
John McCall
5e77d76c95
Basic support for Microsoft property declarations and
...
references thereto.
Patch by Tong Shen!
llvm-svn: 179585
2013-04-16 07:28:30 +00:00
Argyrios Kyrtzidis
25f7af1aeb
[libclang] Introduce clang_Location_isInSystemHeader to check if a location resides in a system header.
...
This is a modified patch provided from Mikołaj Siedlarek!
llvm-svn: 179384
2013-04-12 17:06:51 +00:00
Argyrios Kyrtzidis
1ab09cc883
[libclang] Have clang_getCXXAccessSpecifier() also return the access control of a C++ declaration within its parent scope.
...
Suggested by Stefan Seefeld.
llvm-svn: 179297
2013-04-11 17:02:10 +00:00
Argyrios Kyrtzidis
e822f58db4
[libclang] Expose record layout info via new libclang functions:
...
clang_Type_getAlignOf
clang_Type_getSizeOf
clang_Type_getOffsetOf
clang_Cursor_isBitField
Patch by Loïc Jaquemet!
llvm-svn: 179251
2013-04-11 01:20:11 +00:00
Argyrios Kyrtzidis
2bee666540
[libclang] In cxtu::getASTUnit(), check for a null CXTranslationUnit.
...
llvm-svn: 179121
2013-04-09 20:03:03 +00:00
Argyrios Kyrtzidis
2ec76747f4
[libclang] Fix cursor visitation to not ignore template arguments in out-of-line member functions.
...
rdar://13535645
llvm-svn: 178911
2013-04-05 21:04:10 +00:00
Argyrios Kyrtzidis
0e95fcacdf
[libclang] Add some checks to make sure the given CXTranslationUnit is not null, before using it.
...
llvm-svn: 178800
2013-04-04 22:40:59 +00:00
Argyrios Kyrtzidis
b2792972a2
[libclang] Make clang_Cursor_getArgument work with call-exprs.
...
Patch by Matthias Kleine!
llvm-svn: 178475
2013-04-01 17:38:59 +00:00
Argyrios Kyrtzidis
828f4d4b9f
[libclang] If libclang logging is enabled, print all compiler diagnostics to stderr instead of capturing them.
...
llvm-svn: 178373
2013-03-29 21:51:44 +00:00
Argyrios Kyrtzidis
41686481f4
[cmake] Add clang-headers as a dependency of libclang and if we have to copy them
...
for the IDE case, also create a symlink inside the libclang.dylib directory.
llvm-svn: 178372
2013-03-29 21:51:40 +00:00
Chad Rosier
05c71aa745
Update the error handing static functions for r178161.
...
Part of rdar://13296693
llvm-svn: 178162
2013-03-27 18:28:23 +00:00
Argyrios Kyrtzidis
b6210dff97
[Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirective's subclasses.
...
For each macro directive (define, undefine, visibility) have a separate object that gets chained
to the macro directive history. This has several benefits:
-No need to mutate a MacroDirective when there is a undefine/visibility directive. Stuff like
PPMutationListener become unnecessary.
-No need to keep extra source locations for the undef/visibility locations for the define directive object
(which is the majority of the directives)
-Much easier to hide/unhide a section in the macro directive history.
-Easier to track the effects of the directives across different submodules.
llvm-svn: 178037
2013-03-26 17:17:01 +00:00
Alexey Bataev
a769e07232
OpenMP threadprivate directive parsing and semantic analysis
...
llvm-svn: 177705
2013-03-22 06:34:35 +00:00
Argyrios Kyrtzidis
014349cc8c
[libclang] Modify clang_getCursorType to be able to handle a function template decl.
...
llvm-svn: 177359
2013-03-18 23:54:50 +00:00
Argyrios Kyrtzidis
3c5305c15e
[Modules] Resolve top-headers of modules lazily.
...
This allows resolving top-header filenames of modules to FileEntries when
we need them, not eagerly.
Note that that this breaks ABI for libclang functions
clang_Module_getTopLevelHeader / clang_Module_getNumTopLevelHeaders
but this is fine because they are experimental and not widely used yet.
llvm-svn: 176975
2013-03-13 21:13:43 +00:00
Argyrios Kyrtzidis
51c3318b01
[libclang] Change clang_findReferencesInFile and clang_findIncludesInFile to return an enum,
...
as suggested by Jordan.
llvm-svn: 176732
2013-03-08 22:47:41 +00:00
Argyrios Kyrtzidis
951f61fae2
[libclang] Modify clang_findReferencesInFile and clang_findIncludesInFile to return a value.
...
Possible values are:
1 : if a parameter was invalid
-1 : if the callback returned CXVisit_Break,
otherwise returns 0.
llvm-svn: 176716
2013-03-08 20:42:33 +00:00
Argyrios Kyrtzidis
503c83ad81
[libclang] Introduce clang_findIncludesInFile, that can be used to retrieve all #import/#include directives in a specific file.
...
It passes to the visitor, that the caller provides, CXCursor_InclusionDirective cursors for
all the include directives in a particular file.
llvm-svn: 176682
2013-03-08 02:32:34 +00:00
Argyrios Kyrtzidis
733136952e
[libclang] When calling the function of CXCursorAndRangeVisitor, don't forget to
...
stop visitation if it returns CXVisit_Break.
llvm-svn: 176681
2013-03-08 02:32:29 +00:00
Argyrios Kyrtzidis
ba4b5f8646
[libclang] Add Logger::operator<< overloads for CXCursor and FileEntry.
...
llvm-svn: 176680
2013-03-08 02:32:26 +00:00
Argyrios Kyrtzidis
37f2ab4824
[libclang] When logging a CXTranslationUnit that came from an AST file, print out the filename.
...
llvm-svn: 176511
2013-03-05 20:21:14 +00:00
Stefanus Du Toit
b331850194
Fix typos: [Dd]iagnosic -> [Dd]iagnostic
...
These all appear in comments or (ironically) diagnostics output.
llvm-svn: 176383
2013-03-01 21:41:22 +00:00
Fariborz Jahanian
828b8d2415
doxygen command. Add 'attention' command to list of similar
...
doxygen commands. // rdar://12379053
llvm-svn: 176127
2013-02-26 22:12:16 +00:00
Argyrios Kyrtzidis
fead64be9b
[preprocessor] Use MacroDirective in the preprocessor callbacks to make available the
...
full information about the macro (e.g if it was imported and where).
llvm-svn: 175978
2013-02-24 00:05:14 +00:00
Peter Collingbourne
47f9f2d1e6
Revert r175912, "Add support for coldcc to clang" at John's request.
...
llvm-svn: 175936
2013-02-23 00:06:18 +00:00
Peter Collingbourne
f32b3f2c55
Add support for coldcc to clang
...
llvm-svn: 175912
2013-02-22 19:24:35 +00:00
David Blaikie
f005d3c1a2
Suppress -Wswitch to unbreak the build.
...
This may need to be fixed more intelligently - I don't have enough context to
be sure what the appropriate fix is right now.
llvm-svn: 175902
2013-02-22 17:44:58 +00:00
Michael Han
84324357b8
[Sema] Semantic analysis for empty-declaration and attribute-declaration.
...
Introduce a new AST Decl node "EmptyDecl" to model empty-declaration. Have attributes from attribute-declaration appertain
to the EmptyDecl node by creating the AST representations of these attributes and attach them to the EmptyDecl node so these
attributes can be sema checked just as attributes attached to "normal" declarations.
llvm-svn: 175900
2013-02-22 17:15:32 +00:00
Benjamin Kramer
9170e914fc
Streamify getNameForDiagnostic and remove the string versions of PrintTemplateArgumentList.
...
llvm-svn: 175894
2013-02-22 15:46:01 +00:00
NAKAMURA Takumi
c2b5d1f9b9
CIndex.cpp: Appease g++-4.4. "if (Optional<unsigned> Minor = In.getMinor())" did not work as expected.
...
llvm-svn: 175711
2013-02-21 02:32:34 +00:00
David Blaikie
7a30dc53c5
Use None rather than Optional<T>() where possible.
...
llvm-svn: 175705
2013-02-21 01:47:18 +00:00
Ted Kremenek
0332558894
Strip 'llvm' from 'llvm::Optional' uses.
...
llvm-svn: 175701
2013-02-21 01:29:01 +00:00
Argyrios Kyrtzidis
09c9e811de
[preprocessor] Split the MacroInfo class into two separate concepts, MacroInfo class
...
for the data specific to a macro definition (e.g. what the tokens are), and
MacroDirective class which encapsulates the changes to the "macro namespace"
(e.g. the location where the macro name became active, the location where it was undefined, etc.)
(A MacroDirective always points to a MacroInfo object.)
Usually a macro definition (MacroInfo) is where a macro name becomes active (MacroDirective) but
splitting the concepts allows us to better model the effect of modules to the macro namespace
(also as a bonus it allows better modeling of push_macro/pop_macro #pragmas).
Modules can have their own macro history, separate from the local (current translation unit)
macro history; MacroDirectives will be used to model the macro history (changes to macro namespace).
For example, if "@import A;" imports macro FOO, there will be a new local MacroDirective created
to indicate that "FOO" became active at the import location. Module "A" itself will contain another
MacroDirective in its macro history (at the point of the definition of FOO) and both MacroDirectives
will point to the same MacroInfo object.
Introducing the separation of macro concepts is the first part towards better modeling of module macros.
llvm-svn: 175585
2013-02-20 00:54:57 +00:00
David Blaikie
6adc78e0df
Replace TypeLoc llvm::cast support to be well-defined.
...
The TypeLoc hierarchy used the llvm::cast machinery to perform undefined
behavior by casting pointers/references to TypeLoc objects to derived types
and then using the derived copy constructors (or even returning pointers to
derived types that actually point to the original TypeLoc object).
Some context is in this thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-December/056804.html
Though it's spread over a few months which can be hard to read in the mail
archive.
llvm-svn: 175462
2013-02-18 22:06:02 +00:00
Dmitri Gribenko
7d09808818
libclang: don't store nul-terminated strings as StringRefs,
...
if the nul-terminatedness property is important for clients.
Also, don't return the same CXString multiple times. This did not create a
correctness issue in practice because the CXString was of an CXS_Unmanaged
kind, and destruction was a no-op.
llvm-svn: 175455
2013-02-18 19:50:38 +00:00
Dmitri Gribenko
19b79c8bf9
libclang: remove reinterpret_casts by using SourceLocation::getPtrEncoding
...
llvm-svn: 175333
2013-02-16 01:07:48 +00:00
Dmitri Gribenko
0035372bb7
libclang: add clang_getTypeSpelling(CXType CT)
...
Adds a function clang_getTypeSpelling(CXType CT) that returns
a CXString containing the underlying type.
Patch by Ben Gertzfield.
llvm-svn: 175299
2013-02-15 21:15:49 +00:00
Dmitri Gribenko
6b8fca1275
libclang: remove reinterpret_casts by using SourceLocation::getFromPtrEncoding
...
directly instead of casting a pointer to an integer
llvm-svn: 175206
2013-02-14 20:07:36 +00:00
Bill Wendling
41529c13c4
Use 'RC_XBS' instead of 'RC_BUILDIT' to catch all times when it's built in the Apple way.
...
llvm-svn: 175070
2013-02-13 19:44:17 +00:00
Argyrios Kyrtzidis
5d47a9b253
[libclang] Fix annotation of a range where the begin or end location
...
is inside a macro argument.
Previously we would give up and not annotate anything in the range.
rdar://11891550
llvm-svn: 175062
2013-02-13 18:33:28 +00:00
Dmitri Gribenko
efbbd1e90c
libclang: use CXCursor getters to simplify code
...
llvm-svn: 174809
2013-02-09 14:12:09 +00:00
Argyrios Kyrtzidis
a2ed813afd
[libclang] Attribute visitation happens out-of-source-order, make sure
...
we annotate properly when there is an attribute and not skip type specs
if the attribute is after the declaration.
rdar://13129077
llvm-svn: 174689
2013-02-08 01:12:25 +00:00
Dmitri Gribenko
0b62f8a632
libclang: reduce CXString abuse
...
ContainerUSR is not really a CXString, but it should own the underlying memory
buffer. Thus, it is better to change the type to std::string. This will not
introduce extra copying overhead, since the workaround that is being removed
was already making a copy.
llvm-svn: 174647
2013-02-07 19:09:22 +00:00
NAKAMURA Takumi
288c42e936
libclang: CursorVisitor::VisitBuiltinTypeLoc(): Add OCLSampler. [-Wswitch]
...
llvm-svn: 174606
2013-02-07 12:47:42 +00:00
Guy Benyei
610541989a
Add OpenCL samplers as Clang builtin types and check sampler related restrictions.
...
llvm-svn: 174601
2013-02-07 10:55:47 +00:00
Dmitri Gribenko
2aedfbd177
Comment to XML conversion: replace string comparison with command ID comparison
...
llvm-svn: 174290
2013-02-03 17:48:05 +00:00
Dmitri Gribenko
18aa3bb819
libclang: wrap CXString implementation into 'namespace cxstring'
...
This removes quite a few 'cxstring::' qualifications where they are obvious.
llvm-svn: 174286
2013-02-03 13:54:26 +00:00
Dmitri Gribenko
7489521eec
libclang: remove 'using namespace cxstring'
...
llvm-svn: 174285
2013-02-03 13:52:47 +00:00
Dmitri Gribenko
bf7bf10d45
libclang: migrate IndexingDeclVisitor to ConstDeclVisitor
...
llvm-svn: 174284
2013-02-03 13:42:20 +00:00
Dmitri Gribenko
d73f73b0dd
libclang: remove unneeded const_cast
...
llvm-svn: 174283
2013-02-03 13:26:20 +00:00
Dmitri Gribenko
82700578d4
libclang: migrate USRGenerator to ConstDeclVisitor
...
llvm-svn: 174281
2013-02-03 13:21:23 +00:00
Dmitri Gribenko
dd7dacfff9
libclang: remove unneeded const_casts
...
llvm-svn: 174280
2013-02-03 13:19:54 +00:00
Dmitri Gribenko
2f23e9c520
libclang: introduce cxstring::{createRef,createDup} for StringRefs
...
Also migrate all clients from the old API.
llvm-svn: 174263
2013-02-02 02:19:29 +00:00
Dmitri Gribenko
3c66b0be90
libclang: introduce cxstring::{createRef,createDup} for C strings
...
Also migrate all clients from the old API.
llvm-svn: 174238
2013-02-02 00:02:12 +00:00
Dmitri Gribenko
2e72dd4a43
Comment parsing: improve the fidelity of XML output for many block commands
...
This change introduces a 'kind' attribute for the <Para> tag, that captures the
kind of the parent block command.
For example:
\todo Meow.
used to be just <Para>Meow.</Para>, but now it is
<Para kind="todo">Meow.</Para>
llvm-svn: 174216
2013-02-01 20:23:57 +00:00
Dmitri Gribenko
946aca8524
libclang: document the purpose of createNull()
...
llvm-svn: 174195
2013-02-01 16:38:41 +00:00
Dmitri Gribenko
74f3e1e028
libclang: add comments for CXStringFlag
...
llvm-svn: 174194
2013-02-01 16:36:31 +00:00
Dmitri Gribenko
36a6dd04ef
libclang: itroduce cxstring::createEmpty()
...
llvm-svn: 174174
2013-02-01 14:21:22 +00:00
Dmitri Gribenko
f98dfbae94
libclang: introduce cxstring::createNull()
...
llvm-svn: 174173
2013-02-01 14:13:32 +00:00
Fariborz Jahanian
1a0cf80533
[Comment parsing] Add support for recognizing
...
\headerfile command and representing it in an xml
document. Patch reviewed by Dmitri Gribenko.
// rdar://12397511
llvm-svn: 174109
2013-01-31 23:12:39 +00:00
Evgeniy Stepanov
8660623576
Attempt to fix Windows build breakage.
...
llvm-svn: 174060
2013-01-31 14:27:38 +00:00
Douglas Gregor
0a0e2b3631
Allow the computation of the base priority for a declaration code completion result to consider the completion context
...
llvm-svn: 174037
2013-01-31 04:52:16 +00:00
Dmitri Gribenko
b95b3f128b
libclang: refactor CXStringPool: make it a class
...
We are not exposing the pool or string buffers to libclang users, so no need to
maintain a procedural interface.
llvm-svn: 173595
2013-01-26 22:44:19 +00:00
Dmitri Gribenko
183436e5b6
libclang: type safety for CXTranslationUnitImpl::CIdx
...
llvm-svn: 173590
2013-01-26 21:49:50 +00:00
Dmitri Gribenko
ba82fea336
libclang: type safety for CXTranslationUnitImpl::FormatContext
...
llvm-svn: 173589
2013-01-26 21:39:50 +00:00
Dmitri Gribenko
d36209e308
libclang: some type safety for CXTranslationUnitImpl's internals
...
There is no reason to store pointers as 'void*' in CXTranslationUnitImpl, since
it does not affect libclang ABI.
llvm-svn: 173588
2013-01-26 21:32:42 +00:00
Dmitri Gribenko
c22ea1ce88
libclang: factor out the frequent pattern static_cast<ASTUnit *>(TU->TUData)
...
into a getter cxtu::getASTUnit(TU)
llvm-svn: 173585
2013-01-26 18:53:38 +00:00
Dmitri Gribenko
a169118854
libclang: make getCursorParentDecl() return 'const Decl *'
...
llvm-svn: 173584
2013-01-26 18:12:08 +00:00
Dmitri Gribenko
e4baea61b5
libclang: change getCursorAttr() to return 'const Attr *'
...
llvm-svn: 173583
2013-01-26 18:08:08 +00:00
Dmitri Gribenko
e835406cd7
libclang: make getCursorStmt() and getCursorExpr() return const pointers
...
Also change EnqueueVisitor to use ConstStmtVisitor as a consequence.
llvm-svn: 173577
2013-01-26 15:29:08 +00:00
Argyrios Kyrtzidis
ac08b26611
[libclang] Introduce clang_getFileUniqueID which returns a struct
...
for a CXFile containing device/inode/modification time.
Intended to be useful as a key associated with a unique file across
an indexing session.
rdar://13091837
llvm-svn: 173559
2013-01-26 04:52:52 +00:00
Dmitri Gribenko
d15bb30dba
libclang: change return type of getCursorDecl() to 'const Decl *'
...
llvm-svn: 173278
2013-01-23 17:25:27 +00:00
Dmitri Gribenko
f930448bf6
Remove uneeded casts
...
llvm-svn: 173269
2013-01-23 15:56:07 +00:00
Bill Wendling
e4e2e59740
Explicitly cast away the const-ness instead of doing it implicitly.
...
llvm-svn: 173241
2013-01-23 08:58:23 +00:00
Bill Wendling
eade362f30
Explicitly cast away the const-ness instead of doing it implicitly.
...
llvm-svn: 173232
2013-01-23 08:25:41 +00:00
Guy Benyei
1b4fb3e08b
Implement OpenCL event_t as Clang builtin type, including event_t related OpenCL restrictions (OpenCL 1.2 spec 6.9)
...
llvm-svn: 172973
2013-01-20 12:31:11 +00:00
Chris Lattner
0e6c940d2c
update to use the new BitcodeCursor readRecord that takes a StringRef blob parameter,
...
and adopt "advance" in more places.
llvm-svn: 172951
2013-01-20 02:38:54 +00:00
Sean Silva
f1b49e237f
Nuke SetUpBuildDumpLog.
...
Also, it was the only reason that `argc` and `argv` were being passed
into createDiagnostics, so remove those parameters and clean up callers.
llvm-svn: 172945
2013-01-20 01:58:28 +00:00
Chris Lattner
c79fcfaf8e
random tidying
...
llvm-svn: 172920
2013-01-19 21:35:35 +00:00
Chris Lattner
5b25f0b7a9
update header comment.
...
llvm-svn: 172909
2013-01-19 18:47:35 +00:00
Chris Lattner
5b313e7b2a
this depends on the bitcode reader, since it is using it.
...
llvm-svn: 172905
2013-01-19 18:24:13 +00:00
Chandler Carruth
4b41745e05
Re-sort all the headers. Lots of regressions have crept in here.
...
Manually fix the order of UnwrappedLineParser.cpp as that one didn't
have its associated header as the first header.
This also uncovered a subtle inclusion order dependency as CLog.h didn't
include LLVM.h to pick up using declarations it relied upon.
llvm-svn: 172892
2013-01-19 08:09:44 +00:00
Argyrios Kyrtzidis
da4ba87181
[libclang] In clang_reparseTranslationUnit_Impl, move the check whether TU is
...
null before using it.
llvm-svn: 172632
2013-01-16 18:13:00 +00:00
Argyrios Kyrtzidis
fbd7c2d3b2
[libclang] In clang_getCursorType, don't crash if the translation unit is not
...
set on the cursor; return a null type in such a case.
llvm-svn: 172625
2013-01-16 17:04:31 +00:00
David Greene
e6c9fe035d
Fix Casting
...
Use const_cast<> to avoid a cast-away-const error.
llvm-svn: 172565
2013-01-15 22:09:51 +00:00
David Greene
02b002ac37
Fix Casting
...
Use const_cast<> to avoid a cast-away-const error.
llvm-svn: 172564
2013-01-15 22:09:49 +00:00
David Greene
4320e5e114
Fix Casting
...
Use const_cast<> to avoid a cast-away-const error.
llvm-svn: 172563
2013-01-15 22:09:48 +00:00
David Greene
0516ba604b
Fix Casting
...
Use const_cast<> to avoid a cast-away-const error.
llvm-svn: 172562
2013-01-15 22:09:46 +00:00
Dmitri Gribenko
9c256e379e
libclang: remove a few const_casts
...
llvm-svn: 172373
2013-01-14 00:46:27 +00:00
Dmitri Gribenko
049a4ffcb8
Constify argument of Preprocessor::getMacroInfoHistory and propagate to
...
callers, removing unneeded const_cast
llvm-svn: 172372
2013-01-14 00:36:42 +00:00
Dmitri Gribenko
f857950d39
Remove useless 'llvm::' qualifier from names like StringRef and others that are
...
brought into 'clang' namespace by clang/Basic/LLVM.h
llvm-svn: 172323
2013-01-12 19:30:44 +00:00
Dmitri Gribenko
037f9d18ae
libclang: use C++ casts in CXString.cpp
...
llvm-svn: 172272
2013-01-11 23:13:36 +00:00
Dmitri Gribenko
ec3a16fc8c
libclang: constness for CXString
...
llvm-svn: 172270
2013-01-11 23:08:18 +00:00
Argyrios Kyrtzidis
49d9d02947
[libclang] Add some constness in CXSourceLocation and CXSourceRange.
...
llvm-svn: 172261
2013-01-11 22:29:47 +00:00
Dmitri Gribenko
7a7284d881
libclang: remove unneeded casts
...
llvm-svn: 172253
2013-01-11 21:06:06 +00:00
Dmitri Gribenko
ba2f746fea
libclang: change CXCursor to store 'const void *' pointers for
...
const-correctness, and update all users
llvm-svn: 172252
2013-01-11 21:01:49 +00:00
Dmitri Gribenko
2c173b4806
libclang: use getCursorTU and getCursorASTUnit instead of explicit casts
...
llvm-svn: 172241
2013-01-11 19:28:44 +00:00
Dmitri Gribenko
5ca49f71fd
Replace more usages of __func__ with LLVM_FUNCTION_NAME
...
llvm-svn: 172161
2013-01-11 02:23:13 +00:00