John McCall
90459c50d7
Preserve type source information when substituting into FieldDecls.
...
Just r84734 now that some fundamental work has been completed.
llvm-svn: 84914
2009-10-22 23:33:21 +00:00
John McCall
fa2d692b7d
Preserve source information for anonymous struct/union declarations.
...
llvm-svn: 84913
2009-10-22 23:31:08 +00:00
Fariborz Jahanian
ffba662dd2
Complete code gen for '.*' binary expression for
...
both scalar and aggregates.
llvm-svn: 84910
2009-10-22 22:57:31 +00:00
Fariborz Jahanian
0797404a33
Fixes a warning.
...
llvm-svn: 84909
2009-10-22 22:49:47 +00:00
John McCall
fc93cf9777
When building types from declarators, instead of building two types (one for
...
the DeclaratorInfo, one for semantic analysis), just build a single type whose
canonical type will reflect the semantic analysis (assuming the type is
well-formed, of course).
To make that work, make a few changes to the type system:
* allow the nominal pointee type of a reference type to be a (possibly sugared)
reference type. Also, preserve the original spelling of the reference type.
Both of these can be ignored on canonical reference types.
* Remove ObjCProtocolListType and preserve the associated source information on
the various ObjC TypeLocs. Preserve the spelling of protocol lists except in
the canonical form.
* Preserve some level of source type structure on parameter types, but
canonicalize on the canonical function type. This is still a WIP.
Drops code size, makes strides towards accurate source location representation,
slight (~1.7%) progression on Cocoa.h because of complexity drop.
llvm-svn: 84907
2009-10-22 22:37:11 +00:00
Ted Kremenek
2a3ffa9658
Always emit error diagnostics when an error occurs within clang_createTranslationUnit() and clang_createTranslationUnitFromSource(). These kind of errors are ones that shouldn't be missed.
...
llvm-svn: 84904
2009-10-22 22:19:00 +00:00
John Thompson
69b4b14f52
Disable Microsoft extensions to fix failure on Windows.
...
llvm-svn: 84893
2009-10-22 20:34:27 +00:00
John McCall
b692a098c6
Canonicality is a property of qualified types, not unqualified types.
...
llvm-svn: 84891
2009-10-22 20:10:53 +00:00
Chris Lattner
c78b8f3c3a
fix #2 :)
...
llvm-svn: 84889
2009-10-22 19:56:49 +00:00
Chris Lattner
7b53668b8f
fix testcase, thanks Daniel.
...
llvm-svn: 84888
2009-10-22 19:56:26 +00:00
Douglas Gregor
6a573fe543
When replacing a template-id expression with a declaration reference expression after overloading completes, make sure to keep the qualifier. Still not ready with that test-case...
...
llvm-svn: 84880
2009-10-22 18:02:20 +00:00
Ted Kremenek
a96b72a4ca
Split clang_getCursor() into clang_getCursor() and clang_getCursorWithHint().
...
llvm-svn: 84873
2009-10-22 17:22:53 +00:00
Douglas Gregor
d019ff686c
When building and instantiating a template-id reference expression, such as
...
N::f<int>
keep track of the full nested-name-specifier. This is mainly QoI and
relatively hard to test; will try to come up with a printing-based
test once we also retain the explicit template arguments past overload
resolution.
llvm-svn: 84869
2009-10-22 17:20:55 +00:00
Daniel Dunbar
cb8eb225b1
Update test; the driver can find a different gcc tool chain directory when
...
simulating running on a different system.
llvm-svn: 84862
2009-10-22 16:05:11 +00:00
Sebastian Redl
802f14ccde
Try to instantiate templates before doing hierarchy checks in static_cast. Fixes PR5261.
...
llvm-svn: 84860
2009-10-22 15:07:22 +00:00
Douglas Gregor
3c8a0cfa5b
When a template-id expression refers to a member function template, turn it into an (implicit) member access expression. Fixes PR5220
...
llvm-svn: 84848
2009-10-22 07:19:14 +00:00
Douglas Gregor
6493d9c27e
Refactor our handling of implicit member reference expressions to get most of the logic out of BuildDeclarationNameExpr
...
llvm-svn: 84847
2009-10-22 07:08:30 +00:00
Chris Lattner
63d2b3615c
fix PR5265: the size of a float3 should be rounded up to its alignment.
...
This ensures that arrays of float3 are correctly padded.
llvm-svn: 84833
2009-10-22 05:17:15 +00:00
Ted Kremenek
44886fd124
Add some explanatory diagnostics when clang_createTranslationUnitFromSource fails.
...
llvm-svn: 84825
2009-10-22 03:24:01 +00:00
Zhongxing Xu
4611aee0ac
Rename: CheckBadDiv->CheckDivZero.
...
llvm-svn: 84824
2009-10-22 01:58:10 +00:00
Mike Stump
c9f1efe6b3
Remove some misguided code.
...
llvm-svn: 84823
2009-10-22 01:31:24 +00:00
Mike Stump
e1b19ba05b
Extend out the block descriptor structure for debug information with
...
the copy/dispose helpers as appropriate.
llvm-svn: 84817
2009-10-22 00:49:09 +00:00
Daniel Dunbar
820782aae0
Driver: Fix thinko in logic for finding gcc's tool chain directory.
...
llvm-svn: 84805
2009-10-22 00:12:00 +00:00
Ted Kremenek
649bf5c04b
Enhance 'clang_createTranslationUnitFromSourceFile()' in two ways:
...
(1) Allow the source file to be specified in the actual command line arguments by allowing the
caller to set 'source_filename' to NULL.
(2) Automatically strip off the arguments '-emit-ast', '-fsyntax-only', and '-c'.
llvm-svn: 84802
2009-10-22 00:03:57 +00:00
Fariborz Jahanian
52987dc581
Code gen for '.*' binary expressions - WIP.
...
llvm-svn: 84800
2009-10-21 23:45:42 +00:00
Douglas Gregor
c02cfe2a55
Don't (directly) call RequireCompleteType with an invalid source location.
...
llvm-svn: 84793
2009-10-21 23:19:44 +00:00
Mike Stump
f23b0ead3d
Turn on the preallocation of all BlockDeclRefExprs.
...
llvm-svn: 84789
2009-10-21 22:02:08 +00:00
Douglas Gregor
b8440a76c4
Don't generate pointer types for void or base classes when finding
...
conversion types for builtin overloaded operator candidates; I misread
this section in the standard the first time around.
llvm-svn: 84788
2009-10-21 22:01:30 +00:00
Mike Stump
066b616684
Refine collection of BlockDeclRefExprs. WIP.
...
llvm-svn: 84787
2009-10-21 22:01:24 +00:00
Benjamin Kramer
961b4e3edb
Driver: don't produce bogus osx version numbers if no version (aka 0) was specified.
...
llvm-svn: 84781
2009-10-21 21:05:07 +00:00
Fariborz Jahanian
b25817ac1f
Expand on code gen. for pointer to data members so it works
...
for base classe members as well. Test case enhanced for this.
llvm-svn: 84780
2009-10-21 21:01:47 +00:00
Benjamin Kramer
53b4041151
Force triple; this test was failing on non-darwin platforms due to different
...
asm comment styles (## vs #).
llvm-svn: 84777
2009-10-21 19:59:43 +00:00
Fariborz Jahanian
4ebdff5e1c
Code gen for pointer-to-datamember - WIP.
...
llvm-svn: 84771
2009-10-21 18:38:00 +00:00
Mike Stump
945fec05dd
Fix typo.
...
llvm-svn: 84770
2009-10-21 18:24:18 +00:00
Mike Stump
41eb02d496
Refactor.
...
llvm-svn: 84769
2009-10-21 18:23:01 +00:00
Mike Stump
9496790211
Complete out debug info generation for captured __block variables. WIP.
...
llvm-svn: 84768
2009-10-21 18:16:27 +00:00
Anders Carlsson
fcb4ab4420
Change FixOverloadedFunctionReference to return a (possibly new) expression. Substitute TemplateIdRefExprs with DeclRefExprs. Doug, plz review :)
...
llvm-svn: 84763
2009-10-21 17:16:23 +00:00
Douglas Gregor
26b9178a50
Downgrade "function declared 'noreturn' should not return" from an
...
error (by default) to a warning, per C++0x [dcl.attr.noreturn]. Patch
from Sean Hunt!
llvm-svn: 84762
2009-10-21 15:46:01 +00:00
Steve Naroff
20bad0b7c6
Extend clang_getCursor() to take a 'relativeDecl' argument (so speed up searching). Without a 'relativeDecl', the algorithm is n-squared. For example, running the following command on 'Large.m' takes hours without a 'relatvieDecl'.
...
snaroff% time ../../Debug/bin/c-index-test Large.ast all > Large.out
snaroff% cat Large.m
#import <Cocoa/Cocoa.h>
#import <QuickTime/QuickTime.h>
#import <OpenGL/OpenGL.h>
With a 'relativeDecl', it takes <30 seconds:-)
llvm-svn: 84760
2009-10-21 13:56:23 +00:00
Edward O'Callaghan
437ec1ed6e
Add AuroraUX ABI Triple in correct place.
...
llvm-svn: 84758
2009-10-21 11:58:24 +00:00
Zhongxing Xu
2ebee13ff2
Simplify some code. No functionality change.
...
llvm-svn: 84757
2009-10-21 11:42:22 +00:00
Ted Kremenek
7fd48d8549
Update checker build.
...
llvm-svn: 84750
2009-10-21 08:00:24 +00:00
Chris Lattner
72cdcacb02
add helpful methods to TargetInfo for querying builtin integer type properties,
...
patch by Ken Dyck!
llvm-svn: 84746
2009-10-21 06:24:21 +00:00
Douglas Gregor
74ba25ca5a
Improve diagnostics and template instantiation behavior when calling
...
an overloaded function call operator.
llvm-svn: 84745
2009-10-21 06:18:39 +00:00
Chris Lattner
6720492c39
hookize wint_t's definition, patch by Edward O'Callaghan (from PR5233).
...
llvm-svn: 84740
2009-10-21 04:59:34 +00:00
Mike Stump
7fe9cc1dd5
Prep work to always preallocate BlockDeclRefExprs so that we can
...
generate the debug information for the first parameter to the block
invoke functions. WIP.
llvm-svn: 84737
2009-10-21 03:49:08 +00:00
John McCall
b879435493
Revert those last two commits. Beware the treacherous semicolon.
...
llvm-svn: 84736
2009-10-21 03:40:01 +00:00
John McCall
fb81159c30
Preserve type source information when substituting into ParmVarDecls.
...
Apparently I'm grinding my commit count.
llvm-svn: 84735
2009-10-21 02:50:40 +00:00
John McCall
c30047ae8d
Preserve type source information when substituting into FieldDecls.
...
llvm-svn: 84734
2009-10-21 02:42:37 +00:00
John McCall
f1abcdcddd
Preserve source information when substituting into VarDecls.
...
llvm-svn: 84733
2009-10-21 02:39:02 +00:00
John McCall
609459e070
Clone Sema::SubstType for DeclaratorInfos.
...
llvm-svn: 84724
2009-10-21 00:58:09 +00:00
John McCall
de88989e5d
Initialize using the base location provided by the derived implementation,
...
not the default one (which is always empty).
llvm-svn: 84721
2009-10-21 00:44:26 +00:00
Mike Stump
70197d5441
Fix 80-col violation.
...
llvm-svn: 84719
2009-10-21 00:42:55 +00:00
John McCall
550e0c2f0f
Rewrite TreeTransform to transform types as DeclaratorInfos rather than as bare
...
QualTypes. Don't actually exploit this yet.
llvm-svn: 84716
2009-10-21 00:40:46 +00:00
John McCall
26fe7e0b8a
Add TypeLocBuilder, an API for incrementally creating TypeLocs. Change
...
the API for creating DeclaratorInfos to allow callers to provide an exact
size.
llvm-svn: 84715
2009-10-21 00:23:54 +00:00
John McCall
e4bdb93570
Publicize getSigilLoc / setSigilLoc for better metaprogramming.
...
Fix the ReferenceTypeLoc hierarchy.
llvm-svn: 84714
2009-10-21 00:21:09 +00:00
Ted Kremenek
ab929bb352
Remove stale comment and tighten code.
...
llvm-svn: 84697
2009-10-20 23:59:28 +00:00
Ted Kremenek
89e53fddb8
Add FIXME.
...
llvm-svn: 84696
2009-10-20 23:48:29 +00:00
Ted Kremenek
8aed49000d
Use llvm::OwningPtr in CFGBuilder, fixing a leak on an error path.
...
llvm-svn: 84695
2009-10-20 23:46:25 +00:00
Fariborz Jahanian
e4d94cee05
Code-gen for CXXZeroInitValueExpr AST passed
...
as argument to a function call. Removes a FIXME.
llvm-svn: 84694
2009-10-20 23:29:04 +00:00
Anders Carlsson
b68b028a02
Change ResolveAddressOfOverloadedFunction to support TemplateIdRefExpr. No testcase yet because FixOverloadedFunctionReference needs to be updated too. Doug, plz review.
...
llvm-svn: 84693
2009-10-20 22:53:47 +00:00
Anders Carlsson
5789c497a0
Fix the 32-bit ABI to return structures with non-trivial copy ctors or dtors indirectly.
...
llvm-svn: 84686
2009-10-20 22:07:59 +00:00
Ted Kremenek
d45ff6cced
Add destructor and cleanup code to LocationContext (fixing some leaks). Along the way, have
...
AnalysisManager periodically cleanup its AnalysisContextManager and LocationContextManager objects,
as they don't need to forever retain all the CFGs ever created when analyzing a file.
llvm-svn: 84684
2009-10-20 21:39:41 +00:00
Fariborz Jahanian
9559ced10b
Updated, we support == and != builtins for member pointers.
...
llvm-svn: 84679
2009-10-20 21:10:15 +00:00
Fariborz Jahanian
00c6d13dce
Changes to reflect more pointer-to-member support.
...
llvm-svn: 84670
2009-10-20 20:31:50 +00:00
Mike Stump
38382028c7
For now, we need to have the llvm type of the block pointer remain as
...
it was. Fixes codegen bug introduced yesterday.
llvm-svn: 84668
2009-10-20 20:30:01 +00:00
Fariborz Jahanian
ac741ffd44
Moved comment to its proper place in my last patch.
...
llvm-svn: 84662
2009-10-20 20:07:35 +00:00
Fariborz Jahanian
9a587b0111
Patch implements ranking conversions between member pointers [over.ics.rank]
...
llvm-svn: 84660
2009-10-20 20:04:46 +00:00
Devang Patel
e21912d1ae
Do not eagerly cache DITypes because it allows real struct type to be shadowed by forward declared struct type.
...
llvm-svn: 84659
2009-10-20 19:55:01 +00:00
Daniel Dunbar
f4534ee0a3
Driver: If unable to find the gcc tool chain, try the next OS rev.
...
llvm-svn: 84656
2009-10-20 19:25:43 +00:00
Devang Patel
e4f2b2a8ac
Encode global variable name in debug info.
...
llvm-svn: 84653
2009-10-20 18:26:30 +00:00
Daniel Dunbar
710a80d3ba
Add missing semi-colon.
...
llvm-svn: 84650
2009-10-20 18:07:06 +00:00
Fariborz Jahanian
b14d70413f
Changed text of warning in my last patch.
...
Related to radar:
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions
llvm-svn: 84647
2009-10-20 17:24:11 +00:00
Edward O'Callaghan
462e4ab4ac
Bring Darwin into the switch-case statement instead of its own if for readability.
...
llvm-svn: 84646
2009-10-20 17:22:50 +00:00
Fariborz Jahanian
040d75d9b6
Issue warning if method body starts with a semicolon.
...
Fixes
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions
llvm-svn: 84645
2009-10-20 16:39:13 +00:00
Steve Naroff
bb4568a37d
Add an example to help claify the process/assumptions...
...
llvm-svn: 84642
2009-10-20 16:36:34 +00:00
Steve Naroff
531e284064
- Extend clang_createIndex() to support PCH and diagnostic 'filtering'. This seems cleaner to me without sacrificing much flexibility.
...
- Remove clang_wantOnlyLocalDeclarations().
- Remove 'displayDiagnostics' arguments to clang_createTranslationUnitFromSourceFile() and clang_createTranslationUnit().
- Have clang_createTranslationUnitFromSourceFile() strip the '-o <outfile>' command line arguments if they exist. Document this semantic in the header. Also verify we have a valid ASTUnit before telling it to 'unlinkTemporaryFile()'.
llvm-svn: 84634
2009-10-20 14:46:24 +00:00
Eli Friedman
06ed2a5c94
Remove default argument for ImpCastExprToType. Add appropriate argument
...
to all callers. Switch a few other users of CK_Unknown to proper cast
kinds.
Note that there are still some situations where we end up with
CK_Unknown; they're pretty easy to find with grep. There
are still a few missing conversion kinds, specifically
pointer/int/float->bool and the various combinations of real/complex
float/int->real/complex float/int.
llvm-svn: 84623
2009-10-20 08:27:19 +00:00
Ted Kremenek
2e385f9319
Call 'clear()' in ~RopePieceBTreeLeaf(), decrementing the reference
...
counts of the bufffers referened by the RopePieces in
RopePieceBTreeLeaf. This (I believe) corrently fixes the leak I meant
to fix in r84601 (which ended up causing an overrelease).
llvm-svn: 84615
2009-10-20 06:31:34 +00:00
Douglas Gregor
a5cb6da0cd
Handle substitutions into the "first qualifier in scope" of a
...
qualified member access expression (e.g., t->U::member) when that
first qualifier refers to a template parameters.
llvm-svn: 84612
2009-10-20 05:58:46 +00:00
Ted Kremenek
988c5811ee
Revert 84601. Looks like it was causing failures on some systems.
...
llvm-svn: 84610
2009-10-20 05:53:05 +00:00
Ted Kremenek
cbd395c898
BumpVectorContext: Use 'unsigned' integer type with PointerIntUnion instead of bool to keep it clear that we are reasoning about an unsigned integer with a single bit.
...
llvm-svn: 84607
2009-10-20 05:49:17 +00:00
Chris Lattner
bd19b18100
Implement PR5242: don't desugar a type more than once in a diagnostic. This
...
implements a framework that allows us to use information about previously
substituted values to simplify subsequent ones. Maybe this would be useful
for C++'y stuff, who knows. We now get:
t.c:4:21: error: invalid operands to binary expression ('size_t' (aka 'unsigned long *') and 'size_t')
return (size_t) 0 + (size_t) 0;
~~~~~~~~~~ ^ ~~~~~~~~~~
on the testcase. Note that size_t is only aka'd once.
llvm-svn: 84604
2009-10-20 05:36:05 +00:00
Chris Lattner
c243f299ce
teach FormatDiagnostic to aggregate previously formatted arguments and
...
pass them down into the ArgToStringFn implementation. This allows
redundancy across operands to a diagnostic to be eliminated.
This isn't used yet, so no functionality change.
llvm-svn: 84602
2009-10-20 05:25:22 +00:00
Ted Kremenek
2f9876cf7c
Fix a reference count imbalance in RewriteRope::MakeRopeString().
...
This was causing a ton of memory to be leaked when using HTML
diagnostics with the static analyzer (on large files with many errors).
llvm-svn: 84601
2009-10-20 05:25:11 +00:00
Chris Lattner
dac91470d7
code cleanup, convert if tree to switch etc.
...
llvm-svn: 84599
2009-10-20 05:12:36 +00:00
Mike Stump
d015328f15
Refine the type of the first parameter to block invoke functions.
...
WIP. I have yet to find the magic incantation to get the structure
type to be defined. If someone has a pointer, love to hear it.
llvm-svn: 84590
2009-10-20 02:12:22 +00:00
Anders Carlsson
b9e71d9fd1
Force triple for test.
...
llvm-svn: 84589
2009-10-20 01:52:47 +00:00
Ted Kremenek
481c121ab5
RegionStore: Use the *default* binding (instead of the *direct* binding) of an Objective-C object
...
region when doing lazy value retrieval of an ivar.
This fixes: <rdar://problem/7312221>
llvm-svn: 84584
2009-10-20 01:20:57 +00:00
Ted Kremenek
90c953e98f
retain/release checker: allow 'new', 'copy', 'alloc', 'init' prefix to start before '_' when determining Cocoa fundamental rule.
...
Fixes: <rdar://problem/7265711>
llvm-svn: 84569
2009-10-20 00:13:00 +00:00
Fariborz Jahanian
a4a9334a50
Builtin candidate minimization for
...
<<=, >>= and the rest.
llvm-svn: 84568
2009-10-20 00:04:40 +00:00
Ted Kremenek
e28968828b
Fix inverted preprocessor guard, and fix the resulting compiler error that was unmasked.
...
llvm-svn: 84555
2009-10-19 22:27:32 +00:00
Ted Kremenek
02b319ce18
Really fix <rdar://problem/7312058> by adding a 'displayDiagnostics' option to
...
clang_createTranslationUnit() and clang_createTranslationUnitFromSourceFile(). The user can now
specify if the diagnostics from Clang are printed to stderr or are silenced completely. We can
obviously evolve this API to be more general in the future.
Note: Added a FIXME since I wasn't certain what was the best way to redirect to something analogous
to '/dev/null' on Windows.
llvm-svn: 84548
2009-10-19 22:15:09 +00:00
Douglas Gregor
c59e56190e
Parse a simple-template-id following a '~' when calling a destructor, e.g.,
...
t->~T<A0, A1>()
Fixes PR5213.
llvm-svn: 84545
2009-10-19 22:04:39 +00:00
Ted Kremenek
428c637ada
The constructor for ASTUnit now takes a DiagnosticClient*, allowing uses of ASTUnit to specify
...
alternate DiagnosticClients. To match this API, ASTUnit::LoadFromPCHFile() now takes a corresponding
DiagnosticClient* argument as well. The DiagnosticClient object is destroyed when the ASTUnit object
is destroyed.
The CIndex library now uses this API to create a 'IgnoreDiagnosticsClient' that simply silences
diagnostics when using the clang_createTranslationUnitFromSourceFile() function. This fixes
<rdar://problem/7312058>. This API can change in the future as we add more flexibility for clients.
llvm-svn: 84539
2009-10-19 21:44:57 +00:00
Fariborz Jahanian
b9e8c42ee6
Add the built-in candidate set reduction hueristic
...
to '+=', '-=', '*=' and '/=' builtin operators and
fixes a logic bug exposed by doing this.
llvm-svn: 84538
2009-10-19 21:30:45 +00:00
Ted Kremenek
9dd89ba393
Re-order includes so that the logic involving '#ifdef LLVM_ON_WIN32' appears after the main #includes. The ultimate solution is to just use LLVM-portable methods in llvm/System.
...
llvm-svn: 84534
2009-10-19 21:17:25 +00:00
Fariborz Jahanian
996a6aa3f1
Copy conversion of an expression to its base class
...
is a standard convesion and not a user-defined
conversion.
llvm-svn: 84525
2009-10-19 19:18:20 +00:00
Anders Carlsson
0999aafda5
Handle emitting the assignment operator when the lhs is a reference. Fixes PR5227.
...
llvm-svn: 84518
2009-10-19 18:28:22 +00:00
Anders Carlsson
027732b5b9
Set the cast kind to CK_NoOp for C-style casts that are really const casts. Fixes PR5248.
...
llvm-svn: 84514
2009-10-19 18:14:28 +00:00