Commit Graph

522 Commits

Author SHA1 Message Date
Steve Naroff ef9618b75f Implement accessors clang_getCursorKind(), clang_getCursorDecl().
Implement clang_getCursor() - wired up to Argiris's work.
Implement callbacks for CXCursor_ObjCProtocolRef.

llvm-svn: 81004
2009-09-04 15:44:05 +00:00
Steve Naroff c0683b909a Add ASTUnit::getOriginalSourceFileName() and use in clang_getTranslationUnitSpelling().
llvm-svn: 80932
2009-09-03 18:19:54 +00:00
Steve Naroff 38c1a7ba12 - Add back some harmless code that part of a reverted commit (r80859). I'll investigate the lifetime snafu (with ASTUnit) separately.
- Traverse category methods, add a "class ref" and make the little test harness a bit more flexible.

llvm-svn: 80921
2009-09-03 15:49:00 +00:00
Daniel Dunbar 3a0637b06b Revert "Visit function/method bodies and issue callback for parameters and local
variables.", this is breaking x86_64-apple-darwin10 and Linux tests.

llvm-svn: 80896
2009-09-03 05:59:50 +00:00
Daniel Dunbar a77eaeb1e6 Add basic support for -pthread.
- Patch by David Chisnall, with PCH and Darwin support mixed in.

llvm-svn: 80883
2009-09-03 04:54:28 +00:00
Daniel Dunbar 57f2224c79 Tweak comment.
llvm-svn: 80882
2009-09-03 04:54:12 +00:00
Steve Naroff ef3cf2a576 Visit function/method bodies and issue callback for parameters and local variables.
Add clang_getTranslationUnitSpelling().

llvm-svn: 80859
2009-09-03 00:32:06 +00:00
Daniel Dunbar 1268851c51 Initialize targets before parsing command line options, so --version shows registered targets.
llvm-svn: 80849
2009-09-02 23:20:15 +00:00
Eli Friedman b041c75f09 Fix warnings.
llvm-svn: 80833
2009-09-02 20:07:26 +00:00
Steve Naroff b92c73a02a Fix some newly added bugs uncovered by the RELEASE build.
llvm-svn: 80813
2009-09-02 18:58:52 +00:00
Steve Naroff 80a766bf50 Start issuing callback for references (add some predicates, refactor some code).
llvm-svn: 80810
2009-09-02 18:26:48 +00:00
Steve Naroff 3645f5a99b Flesh out CXCursorKind...
- More declaration types (distinguish between struct/union/class, instance/class methods).
- Add definition types (class, category, function, instance/class method, etc.).

Add client data to clang_loadDeclaration() and implement.

llvm-svn: 80787
2009-09-02 13:28:54 +00:00
Steve Naroff 69b10fd2c5 Add explicit "blind" client data to callback function (since we aren't using blocks).
llvm-svn: 80673
2009-09-01 15:55:40 +00:00
David Chisnall 5778fce141 Updated GNU runtime non-fragile ABI.
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.

llvm-svn: 80591
2009-08-31 16:41:57 +00:00
Steve Naroff 772c1a4574 Implement source/line/column hooks.
llvm-svn: 80585
2009-08-31 14:26:51 +00:00
Steve Naroff 1054e60334 More fleshing out the C-based indexing API (under construction).
llvm-svn: 80529
2009-08-31 00:59:03 +00:00
Benjamin Kramer 8b83f5dfb8 gcc 4.4 needs cstdio for printf. Reorder includes while at it.
llvm-svn: 80430
2009-08-29 12:56:35 +00:00
Ted Kremenek 2dde6bb80e Add CIndex dependencies: libLLVMC and libclangSema (for IdentifierResolver).
llvm-svn: 80385
2009-08-28 18:33:53 +00:00
Ted Kremenek e486cdc015 Tweak CIndex file to resolve to linking issues with the clang libraries. In
particular, clangFrontend was not being linked in.

llvm-svn: 80384
2009-08-28 18:29:48 +00:00
Daniel Dunbar e58bd8b1ab Hide IdxVisitor and remove unimplemented method (causing link errors on x86_64
linux builder).

llvm-svn: 80376
2009-08-28 16:30:07 +00:00
Steve Naroff a1c728438c Lot's of little changes to get the C-based indexing API going...
Work in progress.

llvm-svn: 80367
2009-08-28 15:28:48 +00:00
Steve Naroff 8721959642 Add CX prefix to Cursor and move a comment.
llvm-svn: 80359
2009-08-28 12:07:44 +00:00
Ted Kremenek 30cbea5cad Update exports list.
llvm-svn: 80306
2009-08-27 23:50:46 +00:00
Steve Naroff d5e8e862bb Fill in Index.h header file and add stubs to implementation file.
llvm-svn: 80279
2009-08-27 19:51:58 +00:00
Ted Kremenek b60d87c517 Add initial boilerplate for CIndex, a shared library that will vend high-level
source symbol information (harvested by Clang) through a C API.

llvm-svn: 80166
2009-08-26 22:36:44 +00:00
Eli Friedman c00767d32a Since the HexFloats option only controls a warning, it shouldn't depend
on whether we're in GNUMode.  Adjust the code appropriately.

llvm-svn: 80132
2009-08-26 20:15:14 +00:00
Dan Gohman a98e0e73de Update clang for raw_fd_ostream no longer requiring F_Force.
llvm-svn: 79991
2009-08-25 15:36:09 +00:00
Chris Lattner 72bb4f602c prune #includes.
llvm-svn: 79889
2009-08-24 04:11:30 +00:00
Chris Lattner 3441b4f77e API changes to match llvm ToT.
llvm-svn: 79868
2009-08-23 22:45:33 +00:00
Douglas Gregor 33870d908f CMake: Improve installation of Clang
- Install clang-cc into libexec
  - Install headers into lib/clang/<version>/include
  - Don't install other clang-based tools (clang-wpa, clang-index, etc.)

llvm-svn: 79827
2009-08-23 05:28:29 +00:00
Chris Lattner 84cffc22d4 adjust for raw_fd_ostream api change.
llvm-svn: 79809
2009-08-23 02:59:41 +00:00
Anders Carlsson 9cedbefb24 Add a -fno-elide-constructors option to clang-cc.
llvm-svn: 79782
2009-08-22 22:30:33 +00:00
Daniel Dunbar 4cd55b0507 Don't install wpa or index-test tools.
llvm-svn: 79557
2009-08-20 18:45:52 +00:00
Nate Begeman 5ec4b318e3 Take 2 on AltiVec-style vector initializers.
Fixes PR4704 problems

Addresses Eli's patch feedback re: ugly cast code

Updates all postfix operators to remove ParenListExprs.  While this is awful,
no better solution (say, in the parser) is obvious to me.  Better solutions
welcome.

llvm-svn: 78621
2009-08-10 23:49:36 +00:00
Chris Lattner 30ba674391 fix a couple of problems with section attributes:
1. Passing something that isn't a string used to cause:
   "argument to annotate attribute was not a string literal"
  make it say "section attribute" instead.

2. Fix the location of the above message to point to the
   bad argument instead of the section token.

3. Implement rdar://4341926, by diagnosing invalid section
   specifiers in the frontend rather than letting them slip all
   the way to the assembler (a QoI win).

An example of #3 is that we used to produce something like this:

/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Expected comma after segment-name
/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Rest of line ignored. 1st junk character valued 46 (.).

Daniel improved clang to use llvm_report_error, so now we got:

$ clang t.c -c
fatal error: error in backend: Global variable 'x' has an invalid section specifier 'sadf': mach-o section specifier
      requires a segment and section separated by a comma.

with no loc info.  Now we get:

$ clang t.c -fsyntax-only
t.c:4:30: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment
      and section separated by a comma
int x __attribute__((section("sadf")));
                             ^

which is nice :)

llvm-svn: 78586
2009-08-10 19:03:04 +00:00
Daniel Dunbar 71f22e738a Use LLVM's new error handler API to report back end errors using Diagnostic.
For example,
--
ddunbar@giles:Frontend$ clang -c backend-errors.c
fatal error: error in backend: Global variable 'a' has an invalid section specifier
      'I AM, not, legal': mach-o section specifier uses an unknown section type.
--
compare to:
--
ddunbar@giles:Frontend$ gcc -c backend-errors.c
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Expected comma after segment-name
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Rest of line ignored. 1st junk character valued 77 (M).
--

Yay!

I am not tied to my wording choice, we could also go with "uncoverable error"
for the prefix, or just leave it off entirely.

llvm-svn: 78554
2009-08-10 03:40:28 +00:00
Daniel Dunbar 481fe50903 Revert r78535, it is causing a number of failures to build projects.
--- Reverse-merging r78535 into '.':
D    test/Sema/altivec-init.c
U    include/clang/Basic/DiagnosticSemaKinds.td
U    include/clang/AST/Expr.h
U    include/clang/AST/StmtNodes.def
U    include/clang/Parse/Parser.h
U    include/clang/Parse/Action.h
U    tools/clang-cc/clang-cc.cpp
U    lib/Frontend/PrintParserCallbacks.cpp
U    lib/CodeGen/CGExprScalar.cpp
U    lib/Sema/SemaInit.cpp
U    lib/Sema/Sema.h
U    lib/Sema/SemaExpr.cpp
U    lib/Sema/SemaTemplateInstantiateExpr.cpp
U    lib/AST/StmtProfile.cpp
U    lib/AST/Expr.cpp
U    lib/AST/StmtPrinter.cpp
U    lib/Parse/ParseExpr.cpp
U    lib/Parse/ParseExprCXX.cpp

llvm-svn: 78551
2009-08-10 03:01:36 +00:00
Nate Begeman a96114ed08 AltiVec-style vector initializer syntax, vec4 a = (vec4)(a, b, c, d);
In addition to being defined by the AltiVec PIM, this is also the vector
initializer syntax used by OpenCL, so that vector literals are compatible
with macro arguments.

llvm-svn: 78535
2009-08-09 17:55:44 +00:00
Benjamin Kramer 8b79886e0d Remove duplicated colon.
llvm-svn: 77891
2009-08-02 12:12:11 +00:00
Mike Stump 183c3d2f59 Add beginnigs of rtti generation, wire up more of -fno-exceptions.
llvm-svn: 77751
2009-07-31 23:15:31 +00:00
Argyrios Kyrtzidis bd92767014 Add support for ObjC message expressions, in the Analyzer:
-Accept an ObjC method and find all message expressions that this method may respond to.
-Accept an ObjC message expression and find all methods that may respond to it.

llvm-svn: 77551
2009-07-30 00:03:55 +00:00
Argyrios Kyrtzidis 2eff90515f Support ObjC methods as Entities.
llvm-svn: 77547
2009-07-29 23:41:46 +00:00
Argyrios Kyrtzidis f7f56741e0 Add TranslationUnit::getSelectorMap().
llvm-svn: 77542
2009-07-29 23:41:08 +00:00
Argyrios Kyrtzidis 91d3df0b53 -Introduce the idx::Analyzer class used for getting indexing information, like finding
references of a declaration across translation units.

-Modify the index-test tool to use it.

llvm-svn: 77536
2009-07-29 23:40:14 +00:00
Argyrios Kyrtzidis 82150b38d2 Add getDeclReferenceMap() to the abstract interface of TranslationUnit class.
llvm-svn: 77530
2009-07-29 23:39:18 +00:00
Argyrios Kyrtzidis ca9efa0271 Remove the TranslationUnit usage from clang-wpa.cpp since it's not really
necessary.

llvm-svn: 77529
2009-07-29 23:39:09 +00:00
Argyrios Kyrtzidis f1a0fd852f Introduce a helper template for the Handler classes and use it instead
of the iterator of the Indexer class.

llvm-svn: 77528
2009-07-29 23:39:03 +00:00
Argyrios Kyrtzidis dd9ee4aa04 -Make IndexProvider an abstract interface for getting indexing information.
-Introduce Indexer as an IndexProvider implementation.

llvm-svn: 77524
2009-07-29 23:38:21 +00:00
Daniel Dunbar 13796e3b95 Destroy the ASTConsumer prior to the Context, HTMLPrinter for example wants to
do a significant amount of work in its destructor, which may access the
context. (PR4642).

llvm-svn: 77423
2009-07-29 02:40:09 +00:00
Zhongxing Xu ee5d708e55 Add two nodes to the call graph:
- Root is the main function or 0.
 - ExternalCallingNode has edges to all external functions.

llvm-svn: 76876
2009-07-23 13:39:38 +00:00