Commit Graph

15024 Commits

Author SHA1 Message Date
Benjamin Kramer 8b79886e0d Remove duplicated colon.
llvm-svn: 77891
2009-08-02 12:12:11 +00:00
Ted Kremenek 6ddbb4c963 Fix regression caused by recent refactoring where HTML and plist files would not get flushed out when using '-disable-free'.
llvm-svn: 77882
2009-08-02 05:43:14 +00:00
Ted Kremenek 7ac29bb2d8 Include '-o' arguments in verbose output.
llvm-svn: 77881
2009-08-02 05:42:46 +00:00
Chris Lattner c8ed0c16fe linkify IRC
llvm-svn: 77880
2009-08-02 05:38:25 +00:00
Chris Lattner 4758281d64 rearrange side bar, add link to IRC info.
llvm-svn: 77879
2009-08-02 05:36:37 +00:00
Ted Kremenek ca7935d347 Remove RegionViews and RegionCasts. These are no longer used.
llvm-svn: 77876
2009-08-02 05:15:23 +00:00
Ted Kremenek f106ab91ff RegionStoreManager::RemoveDeadBindings() now removes dead 'default' bindings as well.
llvm-svn: 77875
2009-08-02 05:00:15 +00:00
Ted Kremenek cee28a4c4d Generalize the interface of 'StoreManager::RemoveDeadBindings()' to manipulate the entire GRState, not just the Store.
llvm-svn: 77870
2009-08-02 04:45:08 +00:00
Anders Carlsson 44616ce317 Remove old code that was causing the new test to fail.
llvm-svn: 77862
2009-08-02 04:17:43 +00:00
Ted Kremenek 9419876e59 Fix regression in StoreManager::CastRegion() to always treat casts to
'void*' (or 'const void*') as an identity transformation.

llvm-svn: 77860
2009-08-02 04:12:53 +00:00
Anders Carlsson 7df966e040 Don't evaluate inout constraints twice. Fixes PR3800.
llvm-svn: 77854
2009-08-02 03:40:19 +00:00
Daniel Dunbar a4a341b9b0 Compute end_overridden_methods in a way that keeps ENABLE_EXPENSIVE_CHECKS
happy.

llvm-svn: 77850
2009-08-02 01:48:29 +00:00
Daniel Dunbar 4074b93184 Use Twine instead of utostr
llvm-svn: 77848
2009-08-02 01:43:57 +00:00
Daniel Dunbar 36741c8a29 Avoid accessing invalid std::vector element; this makes clang
ENABLE_EXPENSIVE_CHECKS clean on x86_64-.*-darwin10.

llvm-svn: 77831
2009-08-01 23:40:20 +00:00
Daniel Dunbar 6cfaa47c85 lit: Catch (internal) exceptions when using --no-sh.
llvm-svn: 77830
2009-08-01 23:18:27 +00:00
Eli Friedman 62561fe9b0 Fix a minor issue with unions in the new struct building code.
llvm-svn: 77829
2009-08-01 23:11:24 +00:00
Daniel Dunbar 5a283bf848 lit: Fix thinko in finding config file.
llvm-svn: 77828
2009-08-01 23:09:12 +00:00
Eli Friedman 881f9a89d1 Additional AuroraUX header path.
llvm-svn: 77811
2009-08-01 21:46:03 +00:00
Eli Friedman e480ce3d29 Don't error on C++ linkage; if we don't support that, there are
serious issues :)

llvm-svn: 77800
2009-08-01 20:48:04 +00:00
Eli Friedman 2e6da95a60 Add temp C++ include path for AuroraUX; patch by Edward O'Callaghan.
llvm-svn: 77786
2009-08-01 17:10:21 +00:00
Daniel Dunbar 590c358681 lit: Add internal script execution.
- Off by default, you can test it with the --no-sh argument.

 - For me it works for all but 3 tests, but there a number of FIXMEs and QOI
   issues:  
     o Redirection isn't completely accurate -- in practice it can't portably
       be, but I would like to error out if someone writes something which isn't
       going to work. This is the source of the 3 test failures.

     o Some pipe configurations have the potential to deadlock.

     o It is significantly slower when multithreaded. I believe this is due to
       locking happening under the hood, there is probably some kind of solution
       but I haven't investigated yet.

     o Log output is ugly.

llvm-svn: 77784
2009-08-01 10:18:01 +00:00
Daniel Dunbar 82fa6f5e9d lit: Two more sh lex/parse bugs (but its so simple!)
- Empty arguments weren't handled correctly.
 - Escapes outside quoted strings weren't handled.

llvm-svn: 77783
2009-08-01 09:41:09 +00:00
Ted Kremenek 1f22aa7433 This is a fairly large patch, which resulted from a cascade of changes
made to RegionStore (and related classes) in order to handle some
analyzer failures involving casts and manipulation of symbolic memory.

The root of the change is in StoreManager::CastRegion().  Instead of
using ad hoc heuristics to decide when to layer an ElementRegion on a
casted MemRegion, we now always layer an ElementRegion when the cast
type is different than the original type of the region.  This carries
the current cast information associated with a region around without
resorting to the error prone recording of "casted types" in GRState.

Along with this new policy of layering ElementRegions, I added a new
algorithm to strip away existing ElementRegions when they simply
represented casts of a base memory object.  This algorithm computes
the raw "byte offset" that an ElementRegion represents from the base
region, and allows the new ElementRegion to be based off that offset.
The added benefit is that this naturally handles a series of casts of
a MemRegion without building up a set of redundant ElementRegions
(thus canonicalizing the region view).

Other related changes that cascaded from this one (as tests were
failing in RegionStore):

- Revamped RegionStoreManager::InvalidateRegion() to completely remove
  all bindings and default values from a region and all subregions.
  Now invalidated fields are not bound directly to new symbolic
  values; instead the base region has a "default" symbol value from
  which "derived symbols" can be created.  The main advantage of this
  approach is that it allows us to invalidate a region hierarchy and
  then lazily instantiate new values no matter how deep the hierarchy
  went (i.e., regardless of the number of field accesses,
  e.g. x->f->y->z->...).  The previous approach did not do this.

- Slightly reworked RegionStoreManager::RemoveDeadBindings() to also
  incorporate live symbols and live regions that do not have direct
  bindings but also have "default values" used for lazy instantiation.
  The changes to 'InvalidateRegion' revealed that these were necessary
  in order to achieve lazy instantiation of values in the region store
  with those bindings being removed too early.

- The changes to InvalidateRegion() and RemoveDeadBindings() revealed
  a serious bug in 'getSubRegionMap()' where not all region -> subregion
  relationships involved in actually bindings (explicit and implicit)
  were being recorded.  This has been fixed by using a worklist algorithm
  to iteratively fill in the region map.

- Added special support to RegionStoreManager::Bind()/Retrieve() to handle
  OSAtomicCompareAndSwap in light of the new 'CastRegion' changes and the
  layering of ElementRegions.

- Fixed a bug in SymbolReaper::isLive() where derived symbols were not
  being marked live if the symbol they were derived from was also live.
  This fix was critical for getting lazy instantiation in RegionStore
  to work.

- Tidied up the implementation of ValueManager::getXXXSymbolVal() methods
  to use SymbolManager::canSymbolicate() to decide whether or not a
  symbol should be symbolicated.

- 'test/Analysis/misc-ps-xfail.m' now passes; that test case has been
  moved to 'test/Analysis/misc-ps.m'.

- Tweaked some pretty-printing of MemRegions, and implemented
  'ElementRegion::getRawOffset()' for use with the CastRegion changes.

llvm-svn: 77782
2009-08-01 06:17:29 +00:00
Daniel Dunbar 769f940655 Ok, ok, I give in. Fix tests for unused result warning.
llvm-svn: 77780
2009-08-01 06:07:15 +00:00
Ted Kremenek eb01ba670e Temporarily disable out-of-bounds checking. The current checking logic will not work quite right with the changes I'm about to commit.
llvm-svn: 77779
2009-08-01 05:59:39 +00:00
Daniel Dunbar b616260624 Use %S, not `pwd`, and enable a line that *does* work.
- Doug, please check.

llvm-svn: 77778
2009-08-01 05:57:38 +00:00
Daniel Dunbar 1661066e58 lit: Fix two sh lexing bugs.
- '\\\\' inside a "..." string becomes '\\'.
 - The '<' token wasn't being recognized.

llvm-svn: 77777
2009-08-01 05:52:04 +00:00
Daniel Dunbar e65f4de30d 'unset' isn't needed in these tests anymore, we always run with a controlled
environment.

llvm-svn: 77776
2009-08-01 04:51:30 +00:00
Daniel Dunbar dc4a0f7427 lit: Fix a name lookup problem, which only occurred on a race condition. This is
why dynamic binding sucks.

llvm-svn: 77773
2009-08-01 04:11:36 +00:00
Daniel Dunbar 3ee0543e67 lit: Pull a few more variables into the TestingConfig object.
llvm-svn: 77772
2009-08-01 04:06:02 +00:00
Daniel Dunbar 5332311370 lit: Don't use threads when only running one test, or with -j 1.
llvm-svn: 77766
2009-08-01 03:35:40 +00:00
Daniel Dunbar 2653167290 MultiTestRunner: Add 'sh' parsing to ShUtil.
llvm-svn: 77765
2009-08-01 03:22:27 +00:00
Anders Carlsson 1682af5bac More warnings for unused expressions.
llvm-svn: 77763
2009-08-01 01:39:59 +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
Anders Carlsson 1726aaa4fc Remove the old struct builder code.
llvm-svn: 77738
2009-07-31 21:48:56 +00:00
Mike Stump 67829f6493 And now we can generate a simple vtable. Still a work in progress...
llvm-svn: 77737
2009-07-31 21:43:43 +00:00
Anders Carlsson d65ab045e8 Move code from EmitUnion directly into the function that handles cast-to-union.
llvm-svn: 77735
2009-07-31 21:38:39 +00:00
Anders Carlsson 0d5f37b81a Use the struct builder for unions.
llvm-svn: 77732
2009-07-31 21:34:04 +00:00
Mike Stump dd93a19ac6 Fixup spacing and 80-col violations.
llvm-svn: 77731
2009-07-31 21:31:32 +00:00
Owen Anderson 0b75f23b94 Update for LLVM API change.
llvm-svn: 77722
2009-07-31 20:28:54 +00:00
Argyrios Kyrtzidis 260a4703a9 For a CXXOperatorCallExpr, fix the order that StmtLocResolver uses to check subexpressions.
llvm-svn: 77713
2009-07-31 19:02:11 +00:00
Douglas Gregor ef4e4cca07 Make the recanonicalization-for-an-out-of-line-definition test case a bit trickier
llvm-svn: 77707
2009-07-31 18:36:42 +00:00
Douglas Gregor 1b2596ba36 Allow one to update the type representation of the declaration specifiers. Will be used by an upcoming commit.
llvm-svn: 77703
2009-07-31 18:34:30 +00:00
Douglas Gregor b9a955dc1d Remove a redundant getCanonicalType call
llvm-svn: 77702
2009-07-31 18:32:42 +00:00
Mike Stump bc78a728ee Add code to setup the vtable pointer in the constructor. Work in progress.
llvm-svn: 77699
2009-07-31 18:25:34 +00:00
Devang Patel fe6bbd1145 New test case for rev. 77694.
llvm-svn: 77698
2009-07-31 18:24:12 +00:00
Daniel Dunbar cd4c338437 MultiTestRunner: Fix invalid warning when pointing 'lit' directly at a test.
llvm-svn: 77690
2009-07-31 18:12:18 +00:00
Mike Stump f332516136 Fix spacing.
llvm-svn: 77688
2009-07-31 17:46:44 +00:00
Owen Anderson fe4e34707c Update for LLVM API change.
llvm-svn: 77686
2009-07-31 17:39:36 +00:00
Douglas Gregor 4571a4a760 Fix 80-col violation
llvm-svn: 77683
2009-07-31 16:50:39 +00:00
Douglas Gregor 1d1d16c43e Make canonicalization of overloaded function declarations match the
Itanium C++ ABI's name mangling, since both are related to the notion
of "equivalent" function templates.

llvm-svn: 77678
2009-07-31 16:07:31 +00:00
Douglas Gregor c97f09f565 Canonicalize template template parameters. We can't test this yet, but
it's "obviously correct" :) 

llvm-svn: 77677
2009-07-31 15:46:56 +00:00
Douglas Gregor 70317123c9 Canonicalize function parameters
llvm-svn: 77676
2009-07-31 15:45:02 +00:00
Daniel Dunbar 1087599185 MultiTestRunner: Add module for lexing 'sh' commands.
llvm-svn: 77668
2009-07-31 07:59:05 +00:00
Daniel Dunbar 20a8d48e76 Add missing test suffixes.
llvm-svn: 77666
2009-07-31 05:57:11 +00:00
Daniel Dunbar 3667b99af3 MultiTestRunner: Simplify, cleanup, and rename!
- MultiTestRunner will eventually be renamed to 'lit', for LLVM integrated
   tester/testing. This has the pros of being pronouncable and short.

 - "Project" level configuration lives in 'lit.cfg', which is also what lit uses
   to find the root testing directory in some cases. This can be overridden for
   use in project files which want to precisely specify where things are.

 - TestRunner.py is not longer able to be invoked directly.
 
 - Moved some code to Util.py.

 - Introduced a configuration object.

 - Cleaned up --help, removed a few not-very-useful options.

 - Tried not to break anything that works. :)

llvm-svn: 77665
2009-07-31 05:54:17 +00:00
Douglas Gregor 802a030d6e Canonicalization and profiling for overloaded function declarations,
for those extra-esoteric cases. Not that any two given C++ compilers
agree on this test case, but this change gives us a strong definition
of equivalent types.

llvm-svn: 77664
2009-07-31 05:24:01 +00:00
Douglas Gregor 352169aed4 Canonicalize dependent extended vector types.
llvm-svn: 77663
2009-07-31 03:54:25 +00:00
Ryan Flynn d963a49756 PR3679 - enable #pragma weak aliasing.
llvm-svn: 77660
2009-07-31 02:52:19 +00:00
John McCall 9bb74a5ef5 Rename Action::TagKind to Action::TagUseKind, which removes both a misnomer
and a name collision.

llvm-svn: 77658
2009-07-31 02:45:11 +00:00
John McCall ef50e99783 sp.
llvm-svn: 77656
2009-07-31 02:20:35 +00:00
Mike Stump e9c6ffc7d1 Whitespace around else canonicalization and fix 80-col violations.
llvm-svn: 77655
2009-07-31 02:02:20 +00:00
Eli Friedman dfbd0c4b0d Make the check for the linkage of a template handle the case of nested
linkage specifications correctly.

llvm-svn: 77653
2009-07-31 01:43:05 +00:00
Anders Carlsson a076d14514 Add CK_DerivedToBase and use it PerformObjectMemberConversion.
llvm-svn: 77652
2009-07-31 01:23:52 +00:00
Mike Stump 5b78af9ed7 Fix build warnings.
llvm-svn: 77651
2009-07-31 01:10:29 +00:00
Anders Carlsson a26159261c Add a CastKind enum to CastExpr. Right now it's not used for much but it will be :)
llvm-svn: 77650
2009-07-31 00:48:10 +00:00
Ted Kremenek df4b3dc3a4 Fix use-after-release bug introduced in r77585 where the PathDiagnosticClient
created by AnalysisConsumer would be released by an instance of AnalysisManager
and then reused by later instances of AnalysisManager. Ownership of the
PathDiagnosticClient now belongs (for now) in AnalysisConsumer.

We also need this layering (for now) because the HTMLDiagnostiClient requires
that the entire translation unit be processed before emitting diagnostics. This
is done in its destructor (which should also be fixed, but that is another
issue).

This fixes PR 4653.

llvm-svn: 77648
2009-07-31 00:34:52 +00:00
Douglas Gregor f3f955279b Build canonical types for dependently-sized array types.
llvm-svn: 77647
2009-07-31 00:23:35 +00:00
Ted Kremenek bfe393fa0a Add scan-build option '-no-failure-reports' to supress the creation of a 'failures' subdirectory that includes crash reports, preprocessed files, etc.
llvm-svn: 77644
2009-07-30 23:55:19 +00:00
Douglas Gregor a21f6c3c71 Canonicalization of dependent C++0x decltype types.
llvm-svn: 77643
2009-07-30 23:36:40 +00:00
Fariborz Jahanian 6f14c73087 Synthesize the default constructor which has not
been declared as needed.

llvm-svn: 77641
2009-07-30 23:22:00 +00:00
Douglas Gregor a5dd9f858f Canonicalization for dependent typeof(expr) types.
llvm-svn: 77639
2009-07-30 23:18:24 +00:00
Owen Anderson 7ec07a573c Update for LLVM API changes.
llvm-svn: 77638
2009-07-30 23:11:26 +00:00
Anders Carlsson 5c5f160c7f Diagnose unused expression results for all statements, just not compound statements.
llvm-svn: 77631
2009-07-30 22:39:03 +00:00
Anders Carlsson 499de4252d Add casts to avoid a bunch of unused expr warnings. (They aren't reported right now due to a bug that I intend to fix). Ted, please review.
llvm-svn: 77630
2009-07-30 22:37:41 +00:00
Mike Stump 658fe02d17 Canonicalize else spacing.
llvm-svn: 77629
2009-07-30 22:28:39 +00:00
Anders Carlsson 59a2ab9720 Factor code out into a DiagnoseUnusedExprResult function.
llvm-svn: 77628
2009-07-30 22:17:18 +00:00
Mike Stump a523b2d7a0 Note some other limitations.
llvm-svn: 77626
2009-07-30 21:47:44 +00:00
Mike Stump 57724c2f7e Update based upon comments. Explain why we have an assert.
llvm-svn: 77612
2009-07-30 18:01:44 +00:00
Mike Stump 44b8e90369 We'll also need a vtable pointer if we have virtual bases.
llvm-svn: 77610
2009-07-30 17:53:53 +00:00
Douglas Gregor 833834fcab What luck! Clang obtains support for refering to members of the
current instantiation when that current instantiation is a class
template partial specialization.

llvm-svn: 77609
2009-07-30 17:50:56 +00:00
Fariborz Jahanian aa01d2a532 Patch for future ir-gen for destructor calls.
llvm-svn: 77608
2009-07-30 17:49:11 +00:00
Ted Kremenek 118cef36b8 Lexically order files.
llvm-svn: 77607
2009-07-30 17:41:23 +00:00
Douglas Gregor 1530138fd0 Support out-of-line definitions of the members of class template
partial specializations.

llvm-svn: 77606
2009-07-30 17:40:51 +00:00
Douglas Gregor 4e5a974c00 Initialize an otherwise-wild pointer. Fixes a crashy analyzer
llvm-svn: 77599
2009-07-30 16:10:26 +00:00
Benjamin Kramer 2a94b3dcdb fix cmake build
llvm-svn: 77589
2009-07-30 10:38:43 +00:00
Zhongxing Xu 4b5d6bc33a simple fixes.
llvm-svn: 77587
2009-07-30 09:14:54 +00:00
Zhongxing Xu 4b03d4913a Make AnalysisManager into its own source file and a pure data management class.
Move all components creation code into AnalysisConsumer::DigestAnalyzerOptions().

llvm-svn: 77585
2009-07-30 09:11:52 +00:00
Daniel Dunbar 7be573f05a Update CMakeLists.txt
llvm-svn: 77577
2009-07-30 03:55:04 +00:00
Argyrios Kyrtzidis fc2ed30ab8 Fix Selector <-> GlobalSelector conversion.
llvm-svn: 77575
2009-07-30 03:42:08 +00:00
Ryan Flynn 7d470f3466 PR3679 - handle #pragma weak
llvm-svn: 77573
2009-07-30 03:15:39 +00:00
Daniel Dunbar 874450c433 Add -fblocks.
llvm-svn: 77571
2009-07-30 02:43:05 +00:00
Daniel Dunbar ba848438e3 MultiTestRunner: Stop printing XFAILs on every run, this doesn't really have any
value.

llvm-svn: 77566
2009-07-30 01:57:45 +00:00
Zhongxing Xu 14407bf25a This patch collects all analysis context data into a new class
AnalysisContext.

llvm-svn: 77563
2009-07-30 01:17:21 +00:00
Eli Friedman e8caa2a72f Remove bogus "unsupported" case for vectors (which shouldn't
ever trigger).  Add an "unsupported" case that triggers for C++ code.

It would be nice if someone would implement this properly... it 
shouldn't be too hard, but I haven't looked closely at the relevant 
code.

llvm-svn: 77562
2009-07-30 01:10:26 +00:00
Mike Stump 776d3401d2 Fix type to be consistent with the rest of the code.
llvm-svn: 77560
2009-07-30 01:02:10 +00:00
Mike Stump 3dc7eb9440 Add ability to layout the vtable pointer in trivial cases. I noticed
that we would silently do bad things with virtual bases in the layout
code, so, we just turn them off.  When people do better things with
them, we can turn them back on.

llvm-svn: 77556
2009-07-30 00:22:38 +00:00
Eli Friedman 13ddd8514f Fix gcc warning.
llvm-svn: 77555
2009-07-30 00:11:31 +00:00
Fariborz Jahanian d375454dcf ir-gen for nested non-virtual base member access
in current class.

llvm-svn: 77554
2009-07-30 00:10:25 +00:00
Eli Friedman b0e2986baf Add support for -Wno-long-long.
llvm-svn: 77552
2009-07-30 00:04:39 +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 ce60c5ea60 Update CMake.
llvm-svn: 77548
2009-07-30 00:02:19 +00:00
Argyrios Kyrtzidis 2eff90515f Support ObjC methods as Entities.
llvm-svn: 77547
2009-07-29 23:41:46 +00:00
Douglas Gregor 82c80a59ee There's no point in going through the getAs<TagType> stuff to find the definition of a tag, since tags rarely have more than one or two declarations
llvm-svn: 77546
2009-07-29 23:41:44 +00:00
Argyrios Kyrtzidis 97fb3e5323 Use a STL helper template 'pair_value_iterator', by both DeclReferenceMap and SelectorMap.
llvm-svn: 77545
2009-07-29 23:41:33 +00:00
Argyrios Kyrtzidis 2e592966f8 Add ObjCMethodDecl::isThisDeclarationADefinition().
llvm-svn: 77544
2009-07-29 23:41:26 +00:00
Argyrios Kyrtzidis d70a92139f Index the selectors and provide the translation units that contain them
through the IndexProvider.

llvm-svn: 77543
2009-07-29 23:41:18 +00:00
Argyrios Kyrtzidis f7f56741e0 Add TranslationUnit::getSelectorMap().
llvm-svn: 77542
2009-07-29 23:41:08 +00:00
Argyrios Kyrtzidis b8470e4f75 Introduce SelectorMap whose purpose is to map selectors to objc methods and message exprs,
inside a particular ASTContext.

llvm-svn: 77541
2009-07-29 23:40:58 +00:00
Argyrios Kyrtzidis 34be01b9f4 Find references inside blocks.
llvm-svn: 77540
2009-07-29 23:40:48 +00:00
Argyrios Kyrtzidis c3deb79049 Use helper class ASTVisitor to fully traverse an AST.
llvm-svn: 77539
2009-07-29 23:40:39 +00:00
Argyrios Kyrtzidis d219a9a763 Introduce the GlobalSelector class in the Indexing library.
GlobalSelector is an ASTContext-independent way to refer to Objective C selectors.

llvm-svn: 77538
2009-07-29 23:40:32 +00:00
Argyrios Kyrtzidis ca8a0e24cb Use an IdentifierTable for names used for Entities.
llvm-svn: 77537
2009-07-29 23:40:21 +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 a82e8848ee Introduce TULocation and TULocationHandler classes.
TULocation is like ASTLocation but also contains the TranslationUnit* that
the ASTLocation originated from.

llvm-svn: 77535
2009-07-29 23:40:02 +00:00
Argyrios Kyrtzidis af79296645 Modify the Indexer class so that it can return the TranslationUnit that internal
decls originated from.

llvm-svn: 77534
2009-07-29 23:39:52 +00:00
Argyrios Kyrtzidis 4560276cf5 Add Entity::getInternalDecl() to be used only on Entities that refer to internal
(in translation unit) declarations.

llvm-svn: 77533
2009-07-29 23:39:42 +00:00
Argyrios Kyrtzidis bc6c64de44 Constify ASTLocation::print.
llvm-svn: 77532
2009-07-29 23:39:35 +00:00
Argyrios Kyrtzidis f11952052c Fix some comments.
llvm-svn: 77531
2009-07-29 23:39:25 +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 d3e037ff89 Add an assert.
llvm-svn: 77527
2009-07-29 23:38:51 +00:00
Argyrios Kyrtzidis 14df96c730 Accept Handler objects in parameters as references.
Reinforces that they shouldn't be null and it's a bit more natural when
they are passed as stack objects.

llvm-svn: 77526
2009-07-29 23:38:45 +00:00
Argyrios Kyrtzidis 9ddd99ade7 Rename EntityHandler::HandleEntity to Handle.
llvm-svn: 77525
2009-07-29 23:38:35 +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
Douglas Gregor b6b8f9e291 Make tag declarations redeclarable. This change has three purposes:
1) Allow the Index library (and any other interested client) to walk
  the set of declarations for a given tag (enum, union, class,
  whatever). At the moment, this information is not readily available.

  2) Reduce our dependence on TagDecl::TypeForDecl being mapped down
  to a TagType (for which getDecl() will return the tag definition, if
  one exists). This property won't exist for class template partial
  specializations.

  3) Make the canonical declaration of a TagDecl actually canonical,
  e.g., so that it does not change when the tag is defined.

llvm-svn: 77523
2009-07-29 23:36:44 +00:00
Douglas Gregor 716dabbb1b Eliminate an unused-variable warning
llvm-svn: 77518
2009-07-29 22:40:58 +00:00
Owen Anderson 9793f0e4d7 Update for LLVM API change.
llvm-svn: 77514
2009-07-29 22:16:19 +00:00
Ted Kremenek c23c7e6a51 Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsRecordType() -> Type::getAs<RecordType>()
  Type::getAsPointerType() -> Type::getAs<PointerType>()
  Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
  Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
  Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
  Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
  Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsTagType() -> Type::getAs<TagType>()
  
And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.

llvm-svn: 77510
2009-07-29 21:53:49 +00:00
Ted Kremenek 4301526e8d Remove 'StoreManager::OldCastRegion()', TypedViewRegion (which only
OldCastRegion used), and the associated command line option
'-analyzer-store=old-basic-cast'.

llvm-svn: 77509
2009-07-29 21:43:22 +00:00
Fariborz Jahanian e82da999e9 Fixed test.
llvm-svn: 77506
2009-07-29 21:26:28 +00:00
Fariborz Jahanian 4b12ed115a Some refactoring of member access for
performace sake. Also added a test case.

llvm-svn: 77502
2009-07-29 20:41:46 +00:00
Eli Friedman 8e1433b370 Refactor base/member initializers, and construct them correctly in cases
with dependent types.  Fixes PR4621 and PR4627.

llvm-svn: 77498
2009-07-29 19:44:27 +00:00
Fariborz Jahanian 3f15083f73 Check accessibility when converting object to the base
class.

llvm-svn: 77497
2009-07-29 19:40:11 +00:00
Owen Anderson ade90fd1ba Update for LLVM API change.
llvm-svn: 77492
2009-07-29 18:54:39 +00:00
Fariborz Jahanian 7be1ad814b No longer need to keep base class offsets in the offset
table as it has its own place now.

llvm-svn: 77491
2009-07-29 18:50:06 +00:00
Fariborz Jahanian bb67b827d9 Patch to provide cast of objects in member access
excpression, if needed, and remove some ir-gen code
now unnencessary.

llvm-svn: 77490
2009-07-29 18:40:24 +00:00
Douglas Gregor aa87ebc0c1 [llvm up]
A template name can refer to a set of overloaded function
templates. Model this in TemplateName, which can now refer to an
OverloadedFunctionDecl that contains function templates. This removes
an unspeakable hack in Sema::isTemplateName.

llvm-svn: 77488
2009-07-29 18:26:50 +00:00
Ted Kremenek 3c6764cd3e Add an XFAILed test case that currently crashes for RegionStore. This case will
be moved to misc-ps.m when it passes.

llvm-svn: 77486
2009-07-29 18:19:16 +00:00
Ted Kremenek 70b943f206 Add another analyzer test case involving an OSAtomic function.
llvm-svn: 77485
2009-07-29 18:18:25 +00:00
Ted Kremenek 87a7a451ad Remove some uses of TypedViewRegion, and use getBaseRegion() in a context where
we don't care about ElementRegions layered on top of a base region.

llvm-svn: 77484
2009-07-29 18:17:40 +00:00
Ted Kremenek bca70671e7 Make StoreManager::InvalidateRegion() virtual, move the current implementation
in StoreManager to RegionStoreManager, and create a special, highly reduced
version in BasicStoreManager.

These changes are in preparation for future RegionStore-specific changes to
InvalidateRegion.

llvm-svn: 77483
2009-07-29 18:16:25 +00:00
Ted Kremenek ccf3335939 Add 'MemRegion::getBaseRegion()', a utility method to strip ElementRegions with
index 0.  This will be used for refinements to InvalidateRegion and CastRegion.

llvm-svn: 77481
2009-07-29 18:14:27 +00:00
Ted Kremenek bb902265af canSymbolicate() should only return true for integer types that are scalars.
llvm-svn: 77479
2009-07-29 18:12:48 +00:00
Sebastian Redl 63c4da01c8 Check for identical types in C++ catch expression. Patch by Erik Verbruggen.
llvm-svn: 77475
2009-07-29 17:15:45 +00:00
Daniel Dunbar a5b3351809 Don't use a formatted ostream when writing .ll either.
llvm-svn: 77474
2009-07-29 17:12:55 +00:00
Daniel Dunbar d8c3178cee Don't use a formatted ostream when writing .bc files. I don't really understand
this interface design, Chris please check.

llvm-svn: 77473
2009-07-29 17:10:26 +00:00
Douglas Gregor b142c2d0a8 When lookup of an identifier preceding a '<' finds a set of overloaded
functions, only return those overloaded functions that are actually
function templates. Note that there is still a glaring problem with
treating an OverloadedFunctionDecl as a TemplateName.

llvm-svn: 77472
2009-07-29 16:56:42 +00:00
Daniel Dunbar 0a1fa85894 scan-build: Don't try to index plist-html output directories
llvm-svn: 77465
2009-07-29 16:21:23 +00:00