Eli Friedman
132e70bfa4
PR5520: Make sure to check whether the base type is complete before looking for
...
operator->.
llvm-svn: 89180
2009-11-18 01:28:03 +00:00
Ted Kremenek
49939c2914
Add ObjCClassDecl::getSourceRange().
...
llvm-svn: 89179
2009-11-18 01:26:56 +00:00
Eli Friedman
24f55430c8
Missing piece of r89173.
...
llvm-svn: 89174
2009-11-18 00:57:03 +00:00
Eli Friedman
fe81e3fb3c
Refactor emitting call to delete operator into common function EmitDeleteCall.
...
llvm-svn: 89173
2009-11-18 00:50:08 +00:00
Mike Stump
5bbbb13765
Fix one last gotcha with typeid.
...
llvm-svn: 89172
2009-11-18 00:40:12 +00:00
Ted Kremenek
9b124e10a4
Add SourceLocations to ObjCClassDecl for the class identifiers referenced by @class .
...
llvm-svn: 89170
2009-11-18 00:28:11 +00:00
Douglas Gregor
a3329fa05e
Finish code completion for Objective-C message sends
...
llvm-svn: 89168
2009-11-18 00:06:18 +00:00
Mike Stump
4aaf79a942
Cleanup.
...
llvm-svn: 89166
2009-11-17 23:51:10 +00:00
Mike Stump
103a084cbe
Add rtti support for arrays, functiond without prototypes, vectors and
...
enums.
llvm-svn: 89165
2009-11-17 23:45:57 +00:00
Douglas Gregor
090dd181e5
Rename Objective-C message send completion functions to indicate that we're referring to message sends
...
llvm-svn: 89164
2009-11-17 23:31:36 +00:00
Douglas Gregor
bab2b3c70f
Refactor code-completion support for message sends, collecting the
...
code to find and add Objective-C methods (starting at an
ObjCContainerDecl) into a single, static function. Also, make sure
that we search into the implementations of classes and categories to
find even more methods.
llvm-svn: 89163
2009-11-17 23:22:23 +00:00
Ted Kremenek
a26da8503c
Pass source locations of identifiers referenced by @class through Action::ActOnForwardClassDeclaration().
...
llvm-svn: 89162
2009-11-17 23:12:20 +00:00
Mike Stump
96b96d5f2e
Add rtti info for function prototypes and refactor. This allows
...
pointer to member functions to work. WIP.
llvm-svn: 89161
2009-11-17 23:11:22 +00:00
Ted Kremenek
707ece6025
Do not register ObjCInterfaceDecls implicitly created by @class in the
...
current DeclContext. These "imaginary" declarations pose issues for
clients searching DeclContext for actual declarations. Instead,
register them for name lookup, and add the ObjCInterfaceDecl later to
the DeclContext when we hit an actual @interface declaration.
This also fixes a bug where the invariant that the Decls in a
DeclContext are sorted in order of their appearance is no longer
violated. What could happen is that an @class causes an
ObjCInterfaceDecl to get added first to the DeclContext, then the
ObjCClassDecl itself is added, and then later the SourceLocation of
the ObjCInterfaceDecl is updated with the correct location (which is
later in the file). This breaks an assumed invariant in
ResolveLocation.cpp (and possibly other clients).
llvm-svn: 89160
2009-11-17 22:58:30 +00:00
Fariborz Jahanian
95ace55701
This patch finalizes implementatin of weak_import
...
objective-c2 classes (radar 6815425).
llvm-svn: 89157
2009-11-17 22:42:00 +00:00
Mike Stump
6fdfea67ad
Add rtti support for pointer to data members.
...
llvm-svn: 89155
2009-11-17 22:33:00 +00:00
Daniel Dunbar
f6e32e4abe
Drop unnecessary #include.
...
llvm-svn: 89154
2009-11-17 22:25:16 +00:00
Daniel Dunbar
ba0c9e8685
Remove unnecessary &&s.
...
llvm-svn: 89153
2009-11-17 22:25:07 +00:00
Fariborz Jahanian
3ad8dcfd55
More cases for weak_import objective-c2 classes.
...
(still radar 6815425).
llvm-svn: 89152
2009-11-17 22:02:21 +00:00
Daniel Dunbar
aa1e2efbc3
Fix -Asserts warning.
...
llvm-svn: 89149
2009-11-17 21:51:03 +00:00
Mike Stump
db72c89eb1
Add rtti support for non-member pointers. WIP.
...
llvm-svn: 89148
2009-11-17 21:44:24 +00:00
Fariborz Jahanian
6726055375
More support for weak_import objective-c2 class.
...
(radar 6815425).
llvm-svn: 89146
2009-11-17 21:37:35 +00:00
Douglas Gregor
e8f0801265
Improve location information when adding conversion candidates
...
llvm-svn: 89141
2009-11-17 21:16:22 +00:00
Benjamin Kramer
10d0831718
fgetln is a BSDism; replace it with more portable code.
...
llvm-svn: 89140
2009-11-17 20:51:40 +00:00
Ted Kremenek
2df52dca49
Add c-index-test mode "-test-file-scan", which scans a source file and calls clang_getCursor() on every character.
...
llvm-svn: 89136
2009-11-17 19:37:36 +00:00
Ted Kremenek
1e8a6f8527
Fix test case.
...
llvm-svn: 89135
2009-11-17 19:36:36 +00:00
David Chisnall
950a9518b1
Added block type introspection support.
...
As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.
llvm-svn: 89134
2009-11-17 19:33:30 +00:00
David Chisnall
cb1b7bf79d
Fixed bug where ivar offsets were being initialized as 0 with the fragile GNU ABI.
...
llvm-svn: 89133
2009-11-17 19:32:15 +00:00
Ted Kremenek
92978f8122
Rename test.
...
llvm-svn: 89132
2009-11-17 19:29:41 +00:00
Ted Kremenek
e05d7806ff
Add clang_getNullCursor() and clang_equalCursors() (the latter for comparing cursors).
...
llvm-svn: 89131
2009-11-17 19:28:59 +00:00
Jakob Stoklund Olesen
061644a69d
Undo previous test fix. -split-phi-edges now disables automatically when the
...
local register allocator is used.
llvm-svn: 89127
2009-11-17 19:18:32 +00:00
Fariborz Jahanian
d3612399c5
Start support of weak_import objective-c classes.
...
(Radar 6815425).
llvm-svn: 89124
2009-11-17 19:08:08 +00:00
Ken Dyck
19ac306c2c
Replace (-INT8_C(128)), which uses an illegally out-of-range argument for
...
INT8_C, with (-INT8_C(127)-1) in the definition of INT8_MIN. Apply similar
changes to the definitions of INT16_MIN and INT24_MIN.
llvm-svn: 89120
2009-11-17 18:29:12 +00:00
Ted Kremenek
123344e5dd
Allow "source_filename" to be an optional argument (the client can provide NULL). This allows the client to put the source_filename in the command_line_args without fear of the file being named twice.
...
llvm-svn: 89118
2009-11-17 18:18:02 +00:00
Ted Kremenek
1cd27d50b3
Organize c-index-test into logic sections, and add section headers.
...
llvm-svn: 89117
2009-11-17 18:13:31 +00:00
Ted Kremenek
ef3339b7d4
Clean up c-index-test command line usage a bit by requiring a "-test-load-tu" option when testing clang_loadTranslationUnit(). Running c-index-test without the correct arguments now also prints a useful summary of its correct usage.
...
llvm-svn: 89115
2009-11-17 18:09:14 +00:00
Sebastian Redl
6eedcc1b86
Adjust format attribute index for implicit object arguments. Fixes PR5521.
...
llvm-svn: 89113
2009-11-17 18:02:24 +00:00
Douglas Gregor
8ce3321eb6
Implement code completion for Objective-C message sends to "super".
...
llvm-svn: 89112
2009-11-17 17:59:40 +00:00
Fariborz Jahanian
bc02a10ef3
Fixes a typo, reported by Doug.
...
llvm-svn: 89107
2009-11-17 17:15:16 +00:00
Anders Carlsson
6aa503900f
Fix PR5531.
...
llvm-svn: 89106
2009-11-17 17:11:23 +00:00
Douglas Gregor
99fcb0eaa9
Make sure, for sure this time, that expressions do not have reference type
...
llvm-svn: 89104
2009-11-17 16:44:57 +00:00
Douglas Gregor
d3c5d79837
Augment code-completion results to provide argument names and
...
placeholder arguments for Objective-C message sends.
llvm-svn: 89103
2009-11-17 16:44:22 +00:00
Douglas Gregor
ab6ccb5f88
StringRef'ify CodeCompletionString
...
llvm-svn: 89102
2009-11-17 16:43:05 +00:00
Ken Dyck
f78dc738a5
Use the INTn_C integer constant macros to generate limit constants with correct
...
suffixes. This corrects the suffixes for the limit constants of the 32-bit
types on MSP430 and PIC16, and the 64-bit types on PPC64, SystemZ, X86_64.
llvm-svn: 89101
2009-11-17 16:26:27 +00:00
Nuno Lopes
b9ac1dc910
recognize .hpp as c++ (needed for ./configure'ing boost)
...
llvm-svn: 89100
2009-11-17 15:36:35 +00:00
Nuno Lopes
11ab472ba1
add Fedora 11 include path. what a crap..
...
llvm-svn: 89098
2009-11-17 15:28:35 +00:00
Benjamin Kramer
b70e4aba9a
Make test header independent so it doesn't fail on freebsd. I hope this doesn't
...
hurt the intention of the test.
llvm-svn: 89096
2009-11-17 14:02:16 +00:00
Ken Dyck
e115235705
Remove unnecessary parens around the bodies of integer constant macros. C99
...
requires that their arguments be decimal, hex, octal constants---no signs
allowed---making the parens unnecessary.
llvm-svn: 89095
2009-11-17 13:54:02 +00:00
Benjamin Kramer
6018b39dd1
Fix MSVC warning.
...
llvm-svn: 89092
2009-11-17 11:15:38 +00:00
John McCall
afcee245cd
Temporarily unbreak the clang-on-llvm tests. :) Not going to fix unresolved
...
lookup all in a night.
llvm-svn: 89089
2009-11-17 10:36:41 +00:00
Daniel Dunbar
f386ce5429
... and add back a few more triple forces.
...
llvm-svn: 89088
2009-11-17 10:27:58 +00:00
Daniel Dunbar
664a1c2f98
Remove stale reference to old WPA dir, patch by Kovarththanan Rajaratnam.
...
llvm-svn: 89086
2009-11-17 10:15:57 +00:00
Daniel Dunbar
633d5b3ee2
Use clang to run tests which include headers from the system.
...
llvm-svn: 89085
2009-11-17 10:14:55 +00:00
Daniel Dunbar
cba26d4dc5
Add some -triples I was a little too liberal in removing.
...
llvm-svn: 89084
2009-11-17 10:04:38 +00:00
Daniel Dunbar
7e4ae04bed
Merge several visibility tests into hidden-visibility.m, and check .ll output
...
not .s output.
llvm-svn: 89083
2009-11-17 10:04:28 +00:00
Daniel Dunbar
53f6f61c95
Add missed CMake file for adding clang examples to CMake build.
...
llvm-svn: 89080
2009-11-17 09:40:40 +00:00
John McCall
1e9de059cc
Skip over shadow using decls during codegen.
...
llvm-svn: 89079
2009-11-17 09:33:40 +00:00
Daniel Dunbar
2c88b01bb6
Add optional CMake build for Clang examples, patch by Kovarththanan Rajaratnam.
...
llvm-svn: 89078
2009-11-17 09:32:51 +00:00
Daniel Dunbar
aca02c2730
Simplify CompilerInvocation::toArgs, now that LangOptions handling is more predictable.
...
llvm-svn: 89074
2009-11-17 09:15:57 +00:00
Daniel Dunbar
2208c57116
Eliminate TargetInfo::getDefaultLangOptions, this kind of logic is better done
...
in the driver.
llvm-svn: 89073
2009-11-17 09:15:44 +00:00
Daniel Dunbar
fba0b44d35
Use -fblocks and -fobjc-nonfragile-abi when that is what is being tested, instead of forcing the triple.
...
llvm-svn: 89072
2009-11-17 09:04:12 +00:00
Zhongxing Xu
23baa01af4
Add PreVisitReturn to Malloc checker. Now we can recognize returned memory
...
block.
llvm-svn: 89071
2009-11-17 08:58:18 +00:00
Daniel Dunbar
feedba68b5
Don't #include <stdio.h> when tests don't need it, or use clang instead of clang-cc when they do.
...
llvm-svn: 89070
2009-11-17 08:57:36 +00:00
Daniel Dunbar
f85fabec35
Remove some redundant tests.
...
llvm-svn: 89069
2009-11-17 08:57:06 +00:00
John McCall
7731b855dc
Commit this random test case.
...
llvm-svn: 89068
2009-11-17 08:57:02 +00:00
Daniel Dunbar
4930e3357b
Add -fblocks, -stack-protector, and -fobjc-nonfragile-abi defaulting to driver,
...
instead of using getDefaultLangOptions.
- Remove unused -fobjc-tight-layout while at it.
llvm-svn: 89065
2009-11-17 08:07:36 +00:00
Daniel Dunbar
f408303a3f
Add driver::types::isObjC predicate.
...
llvm-svn: 89064
2009-11-17 08:07:16 +00:00
Zhongxing Xu
4668c7ed1c
Add EvalEndPath interface to Checker. Now we can check memory leaked at the
...
end of the path. Need to unify interfaces.
llvm-svn: 89063
2009-11-17 07:54:15 +00:00
John McCall
f0f1cf087e
Store "sugared" decls in LookupResults (i.e. decl aliases like using declarations);
...
strip the sugar off in getFoundDecl() and getAsSingleDecl(), but leave it on for
clients like overload resolution who want to use the iterators.
Refactor a few pieces of overload resolution to strip off using declarations in
a single place. Don't do anything useful with the extra context knowledge yet.
llvm-svn: 89061
2009-11-17 07:50:12 +00:00
Zhongxing Xu
f19f251523
Clear the dest set.
...
llvm-svn: 89060
2009-11-17 07:19:51 +00:00
Daniel Dunbar
4656c53e12
Move -fnext-runtime defaulting to driver (and change clang-cc default to
...
-fnext-runtime), instead of using getDefaultLangOptions.
llvm-svn: 89058
2009-11-17 07:07:28 +00:00
Daniel Dunbar
0730e4f7e0
Move -fms-extensions defaulting to driver, instead of using getDefaultLangOptions.
...
llvm-svn: 89057
2009-11-17 07:06:20 +00:00
Ted Kremenek
98524b1ce2
Sort visitor methods. No functionality change.
...
llvm-svn: 89055
2009-11-17 07:02:15 +00:00
Douglas Gregor
5492edc852
Be more careful with anonymous namespaces, since Clang diagnoses the ambiguity here
...
llvm-svn: 89054
2009-11-17 06:52:37 +00:00
Daniel Dunbar
d609b7bbe9
Move char-is-signed defaulting to driver, instead of using
...
getDefaultLangOptions.
llvm-svn: 89053
2009-11-17 06:37:03 +00:00
Ted Kremenek
99b944c037
Add newline at the end of the file.
...
llvm-svn: 89052
2009-11-17 06:34:24 +00:00
Douglas Gregor
120f6a6675
Silence some warnings produced by Clang, and add a missing header
...
llvm-svn: 89051
2009-11-17 06:14:37 +00:00
Douglas Gregor
e0b2866147
Implement template instantiation for using directives, which is dead simple.
...
Also, make the "don't know how to instantiate a particular kind of
declaration" diagnostic nicer, so we don't have to trap Clang in a
debugger to figure out what went wrong.
llvm-svn: 89050
2009-11-17 06:07:40 +00:00
Daniel Dunbar
629f6bb95d
Add initial cut at CompilerInvocation::toArgs, which "serializes" the CompilerInvocation into a list of arguments which can be passed to clang-cc (eventually, clang -cc1).
...
- Unfortunately, this is currently a tedious and manual translation. Eventually it would be nice to automatically generate this code.
llvm-svn: 89049
2009-11-17 06:02:29 +00:00
John McCall
3f746828d7
Instead of hanging a using declaration's target decls directly off the using
...
decl, create shadow declarations and put them in scope like normal.
Work in progress.
llvm-svn: 89048
2009-11-17 05:59:44 +00:00
Daniel Dunbar
d6ea9028e7
Simplify PreprocessorOptions, it doesn't need abstracted field access.
...
llvm-svn: 89047
2009-11-17 05:52:41 +00:00
Ted Kremenek
4c4d643b6e
Have clang_getCursorSource() return NULL when the source location is invalid or refers to a built-in buffer. Implements <rdar://problem/7296243>.
...
llvm-svn: 89044
2009-11-17 05:31:58 +00:00
Douglas Gregor
92d8292699
Add missing #include found by Clang
...
llvm-svn: 89043
2009-11-17 05:21:59 +00:00
Douglas Gregor
3fad61786e
Require the object type of a member access expression ("." or "->") to
...
be complete.
llvm-svn: 89042
2009-11-17 05:17:33 +00:00
Daniel Dunbar
a9d7cdf552
Reorder options alphabetically.
...
llvm-svn: 89041
2009-11-17 05:05:17 +00:00
Daniel Dunbar
19b04fff34
Move InitializeAnalyzerOptions for consistency.
...
llvm-svn: 89040
2009-11-17 05:05:08 +00:00
Daniel Dunbar
8870e97dc6
Remove unused NoPreprocess variable.
...
llvm-svn: 89039
2009-11-17 05:04:57 +00:00
Daniel Dunbar
59d964e79f
Remove unused program action.
...
llvm-svn: 89038
2009-11-17 05:04:48 +00:00
Daniel Dunbar
d16ff094f1
Rename CompilerInvocation::DiagOpts -> DiagnosticOpts for consistency.
...
llvm-svn: 89037
2009-11-17 05:04:39 +00:00
Daniel Dunbar
388b9be16b
Add missing defaults to AnalyzerOptions.
...
llvm-svn: 89036
2009-11-17 05:04:28 +00:00
Daniel Dunbar
92881dbe73
Remove unused IsCXXAware and IgnoreSysRoots option from HeaderSearchOptions::Entry.
...
llvm-svn: 89035
2009-11-17 05:04:15 +00:00
Anders Carlsson
dee9a30204
Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.
...
llvm-svn: 89034
2009-11-17 04:44:12 +00:00
Anders Carlsson
cfd3012756
More const is always good.
...
llvm-svn: 89033
2009-11-17 03:57:07 +00:00
Zhongxing Xu
aafa1425e9
Add a comment.
...
llvm-svn: 89032
2009-11-17 03:20:08 +00:00
Mike Stump
3afea1d8fe
Fix typo. Thanks Ted.
...
llvm-svn: 89031
2009-11-17 03:01:03 +00:00
Mike Stump
8f5e6770e7
Add typeinfo support for T* and const T* for all builtin types T.
...
llvm-svn: 89030
2009-11-17 02:57:13 +00:00
Ted Kremenek
5b2592ed65
Add test to verify that the analyzer plist output is what we expect.
...
llvm-svn: 89029
2009-11-17 02:31:39 +00:00
Mike Stump
3f75d552a3
Add typeid for the builtin types. WIP.
...
llvm-svn: 89028
2009-11-17 02:16:21 +00:00
John McCall
27b18f8144
Carry lookup configuration throughout lookup on the LookupResult. Give
...
LookupResult RAII powers to diagnose ambiguity in the results. Other diagnostics
(e.g. access control and deprecation) will be moved to automatically trigger
during lookup as part of this same mechanism.
This abstraction makes it much easier to encapsulate aliasing declarations
(e.g. using declarations) inside the lookup system: eventually, lookup will
just produce the aliases in the LookupResult, and the standard access methods
will naturally strip the aliases off.
llvm-svn: 89027
2009-11-17 02:14:36 +00:00
Jakob Stoklund Olesen
4359796e52
Fix tests after enabling -split-phi-edges.
...
object-size.c aws simply too fragile.
constructor-default-arg.cpp triggers an issue when LiveVariables is run before RALocal.
llvm-svn: 89025
2009-11-17 01:47:01 +00:00
Eli Friedman
b0bc559b19
PR5526: Make sure to set the right cast kinds for the inserted implicit casts.
...
llvm-svn: 89023
2009-11-17 01:22:05 +00:00
Douglas Gregor
6c254bf522
When querying type qualifiers on QualType via one of the "non-local"
...
interfaces (which are used throughout the front end), combine the
qualifiers on the QualType instance with the qualifiers on the
canonical type to produce the set of qualifiers that, semantically,
apply to that type. This should design away a large category of
"qualifier-hidden-behind-a-typedef" buts like we saw in PR5383.
Performance-wise, this caused a regression of ~0.5% on Cocoa.h, but
it's totally worth it. We may actually be able to get a little more
performance back by using CanQualType more often.
llvm-svn: 89018
2009-11-17 00:55:50 +00:00
Mike Stump
c2c03349f3
Ensure we peer through () when handling typeid(*p).
...
llvm-svn: 89015
2009-11-17 00:45:21 +00:00
Ted Kremenek
c40943224d
Remove extra space in warn_maynot_respond diagnostic. Fixes <rdar://problem/7364274>.
...
llvm-svn: 89013
2009-11-17 00:35:14 +00:00
Mike Stump
8a5acf1440
Note why this doesn't yet work.
...
llvm-svn: 89012
2009-11-17 00:30:31 +00:00
Mike Stump
61232fd252
Trim spacing.
...
llvm-svn: 89006
2009-11-17 00:14:04 +00:00
Mike Stump
4d0e9095e4
Since we always have 2 edges, we don't need to reserve 3 slot for the
...
PHI node.
llvm-svn: 89005
2009-11-17 00:10:05 +00:00
Mike Stump
e8cdcc9ab0
Minor CFG refinements for typeid and dynamic_cast.
...
llvm-svn: 89004
2009-11-17 00:08:50 +00:00
Eli Friedman
e85ef718d5
Fix up EmitMemberInitializer to handle many more cases.
...
llvm-svn: 88999
2009-11-16 23:53:01 +00:00
Mike Stump
82a1e6184a
Testcase for dynamic_cast.
...
llvm-svn: 88996
2009-11-16 23:36:30 +00:00
Eli Friedman
5e7d969526
Reorganize EmitMemberInitializer to put anonymous unions on the common codepath.
...
llvm-svn: 88995
2009-11-16 23:34:11 +00:00
Eli Friedman
22683fef03
Simplify the AST a bit by skipping creating member initializers for members
...
with a trivial constructor.
llvm-svn: 88990
2009-11-16 23:07:59 +00:00
Eli Friedman
c1daba3ec8
Make member initializers for union members work correctly.
...
llvm-svn: 88989
2009-11-16 22:58:01 +00:00
Mike Stump
6ca0e21de4
Implement dynamic_cast<void*>(E).
...
llvm-svn: 88988
2009-11-16 22:52:20 +00:00
Daniel Dunbar
5e1415156a
Update test, I don't know why this changed but seems innocuous.
...
llvm-svn: 88983
2009-11-16 22:38:57 +00:00
Daniel Dunbar
2cbf4a7d6e
Trim includes.
...
llvm-svn: 88982
2009-11-16 22:38:48 +00:00
Daniel Dunbar
24347f7cda
Store more information in HeaderSearchOptions so that its initialization is not
...
language dependent.
llvm-svn: 88981
2009-11-16 22:38:40 +00:00
Daniel Dunbar
77a9d2b3ec
clang-cc: Eliminate cyclic dependency in initializing CodeGenOptions.
...
llvm-svn: 88980
2009-11-16 22:38:14 +00:00
Eli Friedman
c2ef215bda
Implement a few more cases for copy constructor synthesis.
...
llvm-svn: 88971
2009-11-16 21:47:41 +00:00
Douglas Gregor
1b8fe5b716
First part of changes to eliminate problems with cv-qualifiers and
...
sugared types. The basic problem is that our qualifier accessors
(getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at
the current QualType and not at any qualifiers that come from sugared
types, meaning that we won't see these qualifiers through, e.g.,
typedefs:
typedef const int CInt;
typedef CInt Self;
Self.isConstQualified() currently returns false!
Various bugs (e.g., PR5383) have cropped up all over the front end due
to such problems. I'm addressing this problem by splitting each
qualifier accessor into two versions:
- the "local" version only returns qualifiers on this particular
QualType instance
- the "normal" version that will eventually combine qualifiers from this
QualType instance with the qualifiers on the canonical type to
produce the full set of qualifiers.
This commit adds the local versions and switches a few callers from
the "normal" version (e.g., isConstQualified) over to the "local"
version (e.g., isLocalConstQualified) when that is the right thing to
do, e.g., because we're printing or serializing the qualifiers. Also,
switch a bunch of
Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType()
expressions over to
Context.hasSameUnqualifiedType(T1, T2)
llvm-svn: 88969
2009-11-16 21:35:15 +00:00
Eli Friedman
c08bdea63d
Clean up scalar cast kind handling; make cast kind handling explicitly handle
...
more cases. No intended visible change.
llvm-svn: 88968
2009-11-16 21:33:53 +00:00
Mike Stump
bf44533846
Audit done, all the required casts are already done.
...
llvm-svn: 88966
2009-11-16 21:22:19 +00:00
Devang Patel
37b4b8b1da
revert r88963.
...
llvm-svn: 88965
2009-11-16 21:17:07 +00:00
Devang Patel
b71c28db22
Use TrackingVH to hold forward decl. This one is for RecordType.
...
llvm-svn: 88963
2009-11-16 21:06:35 +00:00
Eli Friedman
00dbf4c3c6
Parallel fix to r88951: use TrackingVH to hold forward decl.
...
llvm-svn: 88962
2009-11-16 21:04:30 +00:00
Sebastian Redl
658262fd26
Repair broken FindCompositePointerType. Correct early termination condition. Get CVR qualifiers from canonical types. Traverse collected qualifiers in reverse order on rebuilding the pointer, so that we don't swap inner and outer qualifiers. That last one fixes PR5509.
...
llvm-svn: 88960
2009-11-16 21:03:45 +00:00
Eli Friedman
b05d0824c6
Fix valgrind uninitialized error.
...
llvm-svn: 88952
2009-11-16 20:33:31 +00:00
Devang Patel
10909d5faf
Use TrackingVH to hold forward decl.
...
llvm-svn: 88951
2009-11-16 20:09:38 +00:00
Ted Kremenek
9dc2d26fdc
Fix condition in LocationCheck::classof(). Thanks to Marius Wachtler for pointing this out!
...
llvm-svn: 88949
2009-11-16 20:06:54 +00:00
Rafael Espindola
abab87936e
Use configure options for searching for libstdc++.
...
llvm-svn: 88945
2009-11-16 19:49:37 +00:00
Mike Stump
4cdedd9d44
Fix members to be public.
...
llvm-svn: 88944
2009-11-16 19:48:50 +00:00
Mike Stump
3d47c2b3c2
Make bots happy.
...
llvm-svn: 88941
2009-11-16 19:34:15 +00:00
Eli Friedman
f2f534d12a
Fix PR5488: special-case the overloaded arrow operator so that we don't try to
...
treat it as a unary operator.
llvm-svn: 88938
2009-11-16 19:13:03 +00:00
David Chisnall
b3b44ce433
Fixed two minor differences between clang and GCC-generated runtime structures for the GNU runtime.
...
llvm-svn: 88937
2009-11-16 19:05:54 +00:00
Fariborz Jahanian
9290ede494
Handle case of missing '@end' in implementation context
...
gracefully, on par with gcc, by: Issuing a warning,
doing final sematinc check of its definitions and generating
its meta-data.
llvm-svn: 88934
2009-11-16 18:57:01 +00:00
Mike Stump
6fa768df29
Fix spelling for target triplet.
...
llvm-svn: 88928
2009-11-16 18:06:39 +00:00
Anders Carlsson
0d82fa66a5
The ssp and sspreq function attributes should only be applied to function definitions, not declarations or calls.
...
llvm-svn: 88915
2009-11-16 16:56:03 +00:00
Ken Dyck
2dc8d5fa3e
Parameterize the constant-generating macros in stdint.h with new built-in
...
__INTn_C_SUFFIX__ macros that are defined for types with corresponding
constant suffixes (i.e. long and long long).
llvm-svn: 88914
2009-11-16 16:36:33 +00:00
Duncan Sands
7876dad8e7
Pass a value for the isSigned parameter of CreateIntCast, rather than
...
passing the name (an exotic way of specifying that the result is signed!).
llvm-svn: 88909
2009-11-16 13:11:21 +00:00
Mike Stump
65511704f7
Implement most of dynamic_cast. WIP.
...
llvm-svn: 88901
2009-11-16 06:50:58 +00:00
Mike Stump
266ee4a5b3
Try and fix buildbot issue.
...
llvm-svn: 88900
2009-11-16 06:49:10 +00:00
Eli Friedman
49ddc5fb94
Make GetAddrOfConstantStringFromLiteral return a constant of the correct type.
...
This doesn't have any visible effects at the moment because normally the
implicit cast code forces the type to the expected type.
llvm-svn: 88896
2009-11-16 05:55:46 +00:00
Eli Friedman
8c98dffd1f
Some minor cleanup for EmitCastLValue.
...
llvm-svn: 88894
2009-11-16 05:48:01 +00:00
Eli Friedman
03bf60a704
Set the cast kind for a few more code paths.
...
llvm-svn: 88893
2009-11-16 05:44:20 +00:00
Eli Friedman
e6ce354795
Fix a couple of cases where we weren't generating the right kind of call
...
for a call to a virtual function.
llvm-svn: 88891
2009-11-16 05:31:29 +00:00
Eli Friedman
011c4c341b
Implement two-argument form of delete operator.
...
llvm-svn: 88890
2009-11-16 05:16:40 +00:00
Eli Friedman
794d4d8127
Fix test on Linux.
...
llvm-svn: 88889
2009-11-16 05:14:40 +00:00
Zhongxing Xu
731f46264f
* Do the same thing to the basicstore as in r84163.
...
* Add a load type to GRExprEngine::EvalLoad().
* When retrieve from 'theValue' of OSAtomic funcitions, use the type of the
region instead of the argument expression as the load type.
* Then we can convert CastRetrievedSVal to a pure assertion. In the future
we can let all Retrieve() methods simply return SVal.
llvm-svn: 88888
2009-11-16 04:49:44 +00:00
Eli Friedman
141fbf3f36
Add constant evaluation for comma operator with floating-point operand. Fixes
...
PR5449.
llvm-svn: 88885
2009-11-16 04:25:37 +00:00
Zhongxing Xu
223f5119e1
Remove an unused parameter.
...
llvm-svn: 88882
2009-11-16 02:52:18 +00:00
Chandler Carruth
2496fe14ec
Fix a missing include from r88876.
...
llvm-svn: 88879
2009-11-15 23:10:57 +00:00
Anders Carlsson
d787204e6d
When generating the deleting ctor, emit a call to delete.
...
llvm-svn: 88878
2009-11-15 23:03:25 +00:00
Anders Carlsson
2a50e95da4
Make sure that virtual destructors have delete operators.
...
llvm-svn: 88877
2009-11-15 22:49:34 +00:00
Anders Carlsson
1b69be2a8f
Add DeclarationName::dump().
...
llvm-svn: 88876
2009-11-15 22:30:43 +00:00
Mike Stump
4ac39ef6f9
Peer through refernces for typeid. WIP.
...
llvm-svn: 88871
2009-11-15 20:30:39 +00:00
Anders Carlsson
7ade203c6c
Deallocation functions must also be static.
...
llvm-svn: 88859
2009-11-15 19:08:46 +00:00
Anders Carlsson
623e9798df
allocation functions are always static.
...
llvm-svn: 88858
2009-11-15 18:59:32 +00:00
Anders Carlsson
e1d34ba0e4
Factor finding a deallocation function for a record type out into a separate function.
...
llvm-svn: 88857
2009-11-15 18:45:20 +00:00
Mike Stump
a46efbb857
Fix linux buildbots.
...
llvm-svn: 88856
2009-11-15 17:57:00 +00:00
Mike Stump
1bf924b121
Finish off zero check for typeid(*p) so that it will do a __cxa_bad_typeid.
...
llvm-svn: 88852
2009-11-15 16:52:53 +00:00
Anders Carlsson
2c9e274e57
If we find a deallocation function in the class scope, but it is a placement function we should not look for a deallocation function in the global scope.
...
llvm-svn: 88851
2009-11-15 16:43:15 +00:00
Edward O'Callaghan
e9a58b10ad
Add MIPS support to Triple for Linux and the PSP. Credit to Bruno Cardoso Lopes.
...
llvm-svn: 88850
2009-11-15 10:22:07 +00:00
Douglas Gregor
8f3952cda9
When performing a static downcast as part of a static_cast, make sure
...
that we're dealing with canonical types like the documentation say
(yay, CanQualType). Alas, this is another instance where using
getQualifiers() on a non-canonical QualType got us in trouble.
Good news: with this fix, Clang can now parse all of its own headers!
llvm-svn: 88848
2009-11-15 09:20:52 +00:00
Douglas Gregor
598caeee37
Don't gratuitously mark the default constructors of base or member initializers as used
...
llvm-svn: 88847
2009-11-15 08:51:10 +00:00
Douglas Gregor
54fdb417fe
When adding the underlying declaration of a decl to a lookup-results
...
set, expand overloaded function declarations. Long-term, this should
actually be done by the name-lookup code rather than here, but this
part of the code (involving using declarations) is getting a makeover
now and the test-case is useful.
llvm-svn: 88846
2009-11-15 08:11:13 +00:00
Daniel Dunbar
5ad7e15698
Add two new C++ lit tests suites, for testing Clang .cpp files with
...
-fsyntax-only and with -c.
llvm-svn: 88845
2009-11-15 08:10:41 +00:00
Mike Stump
c9b231c8d1
Implement typeid for class types.
...
llvm-svn: 88843
2009-11-15 08:09:41 +00:00
Douglas Gregor
c473cbb3b2
When looking for operator() to type-check a call to an object of class
...
type, use full qualified name lookup rather than the poking the
declaration context directly. This makes sure that we see operator()'s
in superclasses. Also, move the complete-type check before this name
lookup.
llvm-svn: 88842
2009-11-15 07:48:03 +00:00
Douglas Gregor
ffaacb14e3
Make a couple more headers standalone
...
llvm-svn: 88840
2009-11-15 07:26:58 +00:00
Daniel Dunbar
4de54f823b
Add Clang-Syntax C++Tests; these don't run by default, use the lit arguments
...
'--param run_clang_syntax=1' to run them.
llvm-svn: 88839
2009-11-15 07:23:09 +00:00
Douglas Gregor
0331ecf818
Remove an obviously-broken header, which still tries to refer to ScopedDecl.
...
llvm-svn: 88837
2009-11-15 07:17:25 +00:00
Daniel Dunbar
1566a2257f
Use the other excludes syntax.
...
llvm-svn: 88836
2009-11-15 07:11:12 +00:00
Douglas Gregor
1097a4fe17
Make some more headers standalone
...
llvm-svn: 88835
2009-11-15 07:10:50 +00:00
Douglas Gregor
a7e3ea3f64
If any errors have occurred by the time we hit the end of a function body, clear out any remaining temporaries so they aren't seen later.
...
llvm-svn: 88834
2009-11-15 07:07:58 +00:00
Daniel Dunbar
b9bbd54fdb
Add TargetOptions and use it when constructing targets.
...
- This ended up being hard to factor, sorry for the large diff.
- Some post-commit cleanup to come.
llvm-svn: 88833
2009-11-15 06:48:46 +00:00
Douglas Gregor
c25ca41254
Make a few headers parse standalone
...
llvm-svn: 88832
2009-11-15 06:34:37 +00:00
Mike Stump
4c808dfc58
Finish off support for typeinfo generation for classes.
...
llvm-svn: 88828
2009-11-15 03:28:10 +00:00
Daniel Dunbar
6499e9c625
Add a trivial example plugin, which prints the names of the top-level decls.
...
- The build scriptage is about twice as long as the code, which is nice. :)
llvm-svn: 88826
2009-11-15 00:27:43 +00:00
Daniel Dunbar
9b30eb721f
Add examples dir, built with BUILD_EXAMPLES=1 (Makefiles, no CMake equivalent yet).
...
Move tools/wpa to examples/wpa, and unbreak its build.
llvm-svn: 88825
2009-11-15 00:22:33 +00:00
Daniel Dunbar
d392dd0709
Add pluggable action support to clang-cc, via -plugin command line option.
...
- Expects the plugin has been loaded with -load.
- Using this may require disabling TOOL_NO_EXPORTS in the clang-cc Makefile, this breaks the llvm::Registry way of working (static constructors are bad, kids). This should be replaced with a "real" plugin model that has explicit plugin interfaces.
llvm-svn: 88824
2009-11-15 00:12:04 +00:00
Mike Stump
f5b2869b75
Finisgh off rest of class_type_info rtti generation.
...
llvm-svn: 88823
2009-11-14 23:32:21 +00:00
Anders Carlsson
6601057f41
When dumping implicit cast exprs, print out whether the cast is an lvalue cast or not.
...
llvm-svn: 88821
2009-11-14 22:35:18 +00:00
Daniel Dunbar
7fbd42f08a
Move the program action enum to FrontendOptions.
...
--
ddunbar@giles:clang-cc (master)$ grep llvm:🆑 :opt clang-cc.cpp # Woot
ddunbar@giles:clang-cc (master)$
--
llvm-svn: 88820
2009-11-14 22:32:38 +00:00
Daniel Dunbar
e13ada6a3b
Add clang -mcpu=native support, patch by Roman Divacky, varioustweaks by me.
...
- We still need support for detecting the target features, since the name
doesn't actually do a good job of decribing what the CPU supports (for LLVM).
llvm-svn: 88819
2009-11-14 22:04:54 +00:00
Anders Carlsson
6d41727a95
Add an internal CreateRecordDecl that will create a CXXRecordDecl when compiling C++ and a RecordDecl otherwise.
...
llvm-svn: 88816
2009-11-14 21:45:58 +00:00
Anders Carlsson
461a2c0640
Always build a builtin operator expression for the __extension__ unary operator.
...
llvm-svn: 88811
2009-11-14 21:26:41 +00:00
Anders Carlsson
50cb321fdc
Handle CK_BitCast in EmitCastLValue.
...
llvm-svn: 88810
2009-11-14 21:21:42 +00:00
Sebastian Redl
7c353685bc
- Have TryStaticImplicitCast set the cast kind to NoOp when binding a reference. CheckReferenceInit already inserts implicit casts to the necessary types. This fixes an assertion in CodeGen for some casts and brings a fix for PR5453 close, if I understand that bug correctly.
...
- Also, perform calculated implicit cast sequences if they're determined to work. This finally diagnoses static_cast to ambiguous or implicit bases and fixes two long-standing fixmes in the test case. For the C-style cast, this requires propagating the access check suppression pretty deep into other functions.
- Pass the expressions for TryStaticCast and TryStaticImplicitCast by reference. This should lead to a better AST being emitted for such casts, and also fixes a memory leak, because CheckReferenceInit and PerformImplicitConversion wrap the node passed to them. These wrappers were previously lost.
llvm-svn: 88809
2009-11-14 21:15:49 +00:00
Anders Carlsson
0acee6e0d7
Canonicalize the type before trying to create a debug type.
...
llvm-svn: 88808
2009-11-14 21:08:12 +00:00
Anders Carlsson
6037e78149
Have CGDebugInfo::getOrCreateType cache the QualType instead of having every ConvertType overload do it.
...
llvm-svn: 88807
2009-11-14 20:52:05 +00:00
Daniel Dunbar
cf5be70032
Improve test to make sure -fixit is really working.
...
llvm-svn: 88801
2009-11-14 19:25:21 +00:00
Benjamin Kramer
5e738284d7
Move DISABLE_INLINE to the front of the decl so MSVC can parse it. Patch by Amine Khaldi!
...
llvm-svn: 88797
2009-11-14 16:36:57 +00:00
Mike Stump
1acec6a41a
Build up more of the rtti info for a class. WIP.
...
llvm-svn: 88795
2009-11-14 15:55:18 +00:00
Mike Stump
14718425fa
Add the name to the rtti data structure.
...
llvm-svn: 88792
2009-11-14 14:25:18 +00:00
Benjamin Kramer
f4c511b026
Change *BugReport constructors to take StringRefs.
...
- Eliminates many calls to std::string.c_str()
- Fixes an invalid read in ReturnStackAddressChecker due to an unsafe call to
StringRef.data() which doesn't guarantee null-termination.
llvm-svn: 88779
2009-11-14 12:08:24 +00:00
Daniel Dunbar
ea956ddf0b
clang-cc: Switch to using FrontendAction. Whee.
...
Please report any discrepancies you see in clang-cc, I'm not confident that our regression tests cover all the fun ways one can use clang-cc.
llvm-svn: 88776
2009-11-14 10:53:49 +00:00
Daniel Dunbar
883578060f
Add FrontendActions for all preprocessor based clang-cc actions.
...
llvm-svn: 88774
2009-11-14 10:42:57 +00:00
Daniel Dunbar
02bd2d7281
Add FrontendActions, which provides a FrontendAction interface to all the existing AST consumer based clang-cc actions.
...
llvm-svn: 88773
2009-11-14 10:42:46 +00:00
Daniel Dunbar
a0ff58dadf
Add FrontendAction interface, for encapsulating a "clang-cc" style action.
...
llvm-svn: 88772
2009-11-14 10:42:35 +00:00
Eli Friedman
274ab904d0
Avoid assert-crash in a case where the expression passed to EmitConstantExpr
...
legitimately has side-effects (and needs to be generated as a non-constant).
llvm-svn: 88767
2009-11-14 08:51:33 +00:00
Eli Friedman
b210fc598f
Make __func__ and friends work correctly within the initializer for a static
...
local variable.
llvm-svn: 88766
2009-11-14 08:37:13 +00:00
Daniel Dunbar
1b39a2edff
Shuffle VerifyDiagnosticsClient API to be less fragile.
...
llvm-svn: 88765
2009-11-14 07:53:24 +00:00
Daniel Dunbar
409e890f8d
Add CompilerInstance::InitializeSourceManager.
...
llvm-svn: 88764
2009-11-14 07:53:04 +00:00
Eli Friedman
a9ea959d04
PR5462: Don't run off the edge of the argument array for vararg handling
...
when there are more parameters in the prototype than arguments to the call.
llvm-svn: 88759
2009-11-14 04:43:10 +00:00
Daniel Dunbar
6c39d457fa
Update FixIt tests to make it more obvious they use a separate mode.
...
llvm-svn: 88758
2009-11-14 04:39:42 +00:00
Daniel Dunbar
10563ea92e
Turn -fixit it back into a mode, but make -fixit-at imply that mode this time
...
(instead of running it with arbitrary consumers).
- Also, turn any -fixit-at lookup failure into an error.
llvm-svn: 88757
2009-11-14 04:39:29 +00:00
Eli Friedman
b774685c08
Fix a couple of tests.
...
llvm-svn: 88756
2009-11-14 04:23:25 +00:00
Eli Friedman
b572c92674
PR5483: Generate missing form of destructor when it is virtual. (Someone
...
more familiar with this stuff should double-check that there isn't some more
general rule; this is purely from inspecting g++ output.)
llvm-svn: 88755
2009-11-14 04:19:37 +00:00
Eli Friedman
c9827d1ad3
Fix for PR5489: don't skip the complete type requrirement for variable
...
definitions just because the type happens to be an array type.
llvm-svn: 88752
2009-11-14 03:40:14 +00:00
Douglas Gregor
bf3f322034
When type-checking a static cast (or the static_cast part of a C-style
...
cast) that is converting to a class type, enumerate its constructors
as in any other direct initialization. This ensures that we get the
proper conversion sequence.
llvm-svn: 88751
2009-11-14 03:27:21 +00:00
Daniel Dunbar
50ec0da0e1
Switch -verify implementation to use VerifyDiagnosticClient.
...
- Not tested, but -verify with multiple inputs should work now.
llvm-svn: 88750
2009-11-14 03:24:39 +00:00
Daniel Dunbar
9d5118a69c
Fix broken tests, exposed by improved -verify.
...
llvm-svn: 88749
2009-11-14 03:24:04 +00:00
Daniel Dunbar
348185548e
Add VerifyDiagnosticsClient, to replace old -verify.
...
- This reimplements -verify as just another DiagnosticClient, which buffers the diagnostics and checks them when the source file is complete. There are some hacks to make this work, but they are all internal, and this exposes a better external interface.
- This also tweaks a few things:
o Errors are now just regular diagnostics.
o Frontend diagnostics are now caught (for example, errors in command line arguments), although there isn't yet a way to specify that they are expected. That would be nice though.
- Not yet used.
llvm-svn: 88748
2009-11-14 03:23:19 +00:00
Anders Carlsson
654e5c7cf8
Diagnose ambiguity of operator delete and operator delete[]. Sebastian, please review.
...
llvm-svn: 88747
2009-11-14 03:17:38 +00:00
Daniel Dunbar
e598a56d30
Pass Preprocessor through DiagnosticClient::BeginSourceFile.
...
llvm-svn: 88744
2009-11-14 02:48:04 +00:00
Daniel Dunbar
56d9c293db
Add ASTConsumer to CompilerInstance.
...
llvm-svn: 88743
2009-11-14 02:47:17 +00:00
Fariborz Jahanian
da2efb091d
Generate the old API when sending message to super
...
in a category implementation (objc 32bit api related).
llvm-svn: 88741
2009-11-14 02:18:31 +00:00
Anders Carlsson
52ce3bbf57
Handle CXXDefaultArgExprs in EmitLValue. Fixes PR5484.
...
llvm-svn: 88735
2009-11-14 01:51:50 +00:00
Douglas Gregor
ffe14e3712
If we attempt to add a constructor template specialization that looks
...
like a copy constructor to the overload set, just ignore it. This
ensures that we don't try to use such a constructor as a copy
constructor *without* triggering diagnostics at the point of
declaration.
Note that we *do* diagnose such copy constructors when explicitly
written by the user (e.g., as an explicit specialization).
llvm-svn: 88733
2009-11-14 01:20:54 +00:00
Daniel Dunbar
bf410c6fc2
Add static version of Preprocessor::getSpelling.
...
llvm-svn: 88732
2009-11-14 01:20:48 +00:00
Daniel Dunbar
e01dc86d2a
Move CompilerInstance::set* methods out-of-line.
...
llvm-svn: 88731
2009-11-14 01:20:40 +00:00
Ted Kremenek
1a0dd2e30b
Move definition of GRExprEngine::ProcessEndPath() out-of-line.
...
llvm-svn: 88729
2009-11-14 01:05:20 +00:00
Mike Stump
2ec5dd7160
Mangling support for typeinfo names.
...
llvm-svn: 88726
2009-11-14 00:14:13 +00:00
Douglas Gregor
ff7028a55e
Revert r88718, which does NOT solve the constructor-template-as-copy-constructor issue. Big thanks to John for finding this
...
llvm-svn: 88724
2009-11-13 23:59:09 +00:00
Mike Stump
c5a332cefb
Handle descructor printing better.
...
llvm-svn: 88723
2009-11-13 23:45:53 +00:00
Douglas Gregor
2bb756a3be
Template argument deduction of a non-type template parameter from a
...
template argument.
llvm-svn: 88722
2009-11-13 23:45:44 +00:00
Douglas Gregor
5f235a21eb
A constructor template cannot be instantiated to a copy
...
constructor. Make sure that such declarations can never be formed.
llvm-svn: 88718
2009-11-13 23:14:53 +00:00
Mike Stump
559387fe8b
Also track address points for primaries bases.
...
llvm-svn: 88717
2009-11-13 23:13:20 +00:00
Fariborz Jahanian
ebea005812
Code gen. For virtual destructor call on array objects
...
(still part of pr5472).
llvm-svn: 88712
2009-11-13 22:29:45 +00:00
Mike Stump
2fb78c0250
More VTT and constructor vtable testcases from recent work.
...
llvm-svn: 88710
2009-11-13 22:12:05 +00:00
Mike Stump
3693652378
Add more testcase for construction vtables and VTTs.
...
llvm-svn: 88702
2009-11-13 21:55:26 +00:00
Mike Stump
464de23b72
Add some more VTT testcases.
...
llvm-svn: 88699
2009-11-13 21:40:38 +00:00
Eli Friedman
6f04b1e605
Obvious fix for PR5474.
...
llvm-svn: 88696
2009-11-13 21:23:46 +00:00
Fariborz Jahanian
f75c1f7a73
Fixes a code gen. bug for array delete operator call
...
int 32bit abi (pr5472 related).
-This line, and those below, will be ignored--
M lib/CodeGen/CGCXXExpr.cpp
llvm-svn: 88695
2009-11-13 21:20:14 +00:00
Anders Carlsson
bdd124036d
Clear temporaries in more places.
...
llvm-svn: 88687
2009-11-13 20:11:49 +00:00
Ted Kremenek
9430bf20ff
Remove test case's dependency on header file.
...
llvm-svn: 88685
2009-11-13 20:03:22 +00:00
Ted Kremenek
e5e977013c
Add two new test cases for the Malloc/Free checker. Both have to do with
...
storing malloc'ed memory to global storage.
llvm-svn: 88684
2009-11-13 20:00:28 +00:00
Ted Kremenek
c2675568a1
Add test case that shows a leak we don't catch.
...
llvm-svn: 88683
2009-11-13 19:53:32 +00:00
Mike Stump
e56213fc1e
Add a testcase for the recent VTT work.
...
llvm-svn: 88681
2009-11-13 19:36:46 +00:00
Fariborz Jahanian
6814eaa2cc
Code gen for arrady delete operator. Fixes pr5472.
...
llvm-svn: 88680
2009-11-13 19:27:47 +00:00
Anders Carlsson
1fe64cb059
Fix bug Doug noticed.
...
llvm-svn: 88679
2009-11-13 19:21:49 +00:00
Daniel Dunbar
dd6e6918e6
Add test for expr.delete p5, with a FIXME.
...
llvm-svn: 88678
2009-11-13 19:13:56 +00:00
Devang Patel
b40f295037
Do not store DIDescriptor directly into a container. Store MDNode directly, through TrackingVH.
...
llvm-svn: 88677
2009-11-13 19:10:24 +00:00
Mike Stump
88fc7d4202
This falls into the category of stupid pet tricks. I hate to do this,
...
but this is necessary to continue work on virtual vtables. We don't
want to penalize virtual table building testcases, just because
complex virtual conversions don't yet work.
llvm-svn: 88676
2009-11-13 18:53:35 +00:00
Ken Dyck
8d6d4b84e2
add missing slashes to separator line; also testing commit access
...
llvm-svn: 88675
2009-11-13 18:50:18 +00:00
Ted Kremenek
9f2ee2bb26
Use 'eq' operator, and enable regular experimental checks when --experimental-checks is passed to scan-build.
...
llvm-svn: 88673
2009-11-13 18:49:48 +00:00
Ted Kremenek
4ef13f8ac9
Add clang-cc option "--analyzer-experimental-internal-checks". This
...
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.
llvm-svn: 88671
2009-11-13 18:46:29 +00:00
Douglas Gregor
379d84b7ed
When performing copy initialization (= "implicit conversion", here) to
...
a class type from itself or a derived class thereof, enumerate
constructors and permit user-defined conversions to the arguments of
those constructors. This fixes the wacky implicit conversion sequence
used in std::auto_ptr's lame emulation of move semantics.
llvm-svn: 88670
2009-11-13 18:44:21 +00:00
Douglas Gregor
07eae02fc7
When transforming an expression statement (e.g., for template
...
instantiation), be sure to finish the expression statement by
providing a FullExprArg, making sure that temporaries get
destroyed. Fixes an obscure failure when parsing
llvm/LinkAllPasses.h.
llvm-svn: 88668
2009-11-13 18:34:26 +00:00
Daniel Dunbar
420b0f1bd8
Add CompilerInstance utility functions for creating output files.
...
llvm-svn: 88667
2009-11-13 18:32:08 +00:00
Anders Carlsson
fb4dda4fed
Instead of storing CXXMethodDecls in the vtable builder, store GlobalDecls so we can represent both the complete and deleting destructors. Also, when encountering a destructor decl, emit entries for both the complete and deleting destructors. Mike, please review.
...
With this change, FileCheck builds and runs the clang test suite without failures!
llvm-svn: 88663
2009-11-13 17:08:56 +00:00
Anders Carlsson
97df0b40c3
Don't bind arguments to temporaries if the argument has a reference type.
...
llvm-svn: 88662
2009-11-13 17:04:35 +00:00
Daniel Dunbar
045f917edc
Remove local splitLines reimplementation.
...
llvm-svn: 88661
2009-11-13 16:46:11 +00:00
Daniel Dunbar
566eeb2da5
Add output file list to CompilerInstance, so that it can track them instead of
...
forcing all clients to do it.
llvm-svn: 87103
2009-11-13 10:37:48 +00:00
Daniel Dunbar
ac28c38737
clang-cc: Move output file initialization closer to use.
...
llvm-svn: 87102
2009-11-13 10:18:59 +00:00
Daniel Dunbar
39991862e1
Simplify, in anticipation of introducing explicit action instances.
...
llvm-svn: 87101
2009-11-13 09:57:06 +00:00
Daniel Dunbar
f7093b5ae8
Add CodeCompletion consumer to CompilerInvocation.
...
llvm-svn: 87100
2009-11-13 09:36:05 +00:00
Daniel Dunbar
242ea9a05a
Rework Sema code completion interface.
...
- Provide Sema in callbacks, instead of requiring it in constructor. This
eliminates the need for a factory function. Clients now just pass the object
to consume the results in directly.
- CodeCompleteConsumer is cheap to construct, so building it whenever we are
doing code completion is reasonable.
Doug, please review.
llvm-svn: 87099
2009-11-13 08:58:20 +00:00
Daniel Dunbar
599313ef94
Add CompilerInstance::createPCHExternalASTSource.
...
llvm-svn: 87097
2009-11-13 08:21:10 +00:00
Daniel Dunbar
adf6c242a0
Add CompilerInstance::has* methods for testing if the instance has a particular
...
subobject.
llvm-svn: 87096
2009-11-13 08:20:57 +00:00
Daniel Dunbar
df3e30c41c
Add ASTContext to CompilerInstance.
...
llvm-svn: 87095
2009-11-13 08:20:47 +00:00
Zhongxing Xu
c7460964ac
Malloc checker basically works now.
...
llvm-svn: 87094
2009-11-13 07:48:11 +00:00
Zhongxing Xu
c4902a52a0
Hook up Malloc checker.
...
llvm-svn: 87093
2009-11-13 07:25:27 +00:00
Zhongxing Xu
a4276b091d
Check in a new interface of Checker, which will soon be used.
...
llvm-svn: 87092
2009-11-13 06:53:04 +00:00
Zhongxing Xu
0320ad28c7
GRStateManager::CurrentStmt is not used. Remove it.
...
llvm-svn: 87091
2009-11-13 06:04:01 +00:00
Daniel Dunbar
7d75afc56a
Add CompilerInstance::createDiagnostics, and move clang-cc to it.
...
clang-cc.cpp is now under 1k lines, if anyone is counting.
llvm-svn: 87090
2009-11-13 05:52:34 +00:00
Daniel Dunbar
210a80086b
Add a FIXME.
...
llvm-svn: 87089
2009-11-13 05:52:19 +00:00
Daniel Dunbar
aaa148fd36
Add Preprocessor to CompilerInstance, and move clang-cc CreatePreprocessor to
...
CompilerInstance::createPreprocessor.
llvm-svn: 87088
2009-11-13 05:52:11 +00:00
Daniel Dunbar
1b4441915a
Wherein the TargetInfo argument to Preprocessor is made 'const' and propogated.
...
llvm-svn: 87087
2009-11-13 05:51:54 +00:00
Zhongxing Xu
1721ef7a53
Include header for printf.
...
llvm-svn: 87086
2009-11-13 05:46:16 +00:00
Rafael Espindola
46129b0934
Use StringRef::split instead of SplitString.
...
llvm-svn: 87085
2009-11-13 05:13:58 +00:00
Anders Carlsson
e828c36933
Add a special BuildVirtualCall that's going to be used for building calls to destructors. This is needed because when compiling:
...
struct A {
virtual ~A();
};
void f(A* a) {
delete a;
}
A's deleting destructor should be called.
llvm-svn: 87083
2009-11-13 04:45:41 +00:00
Anders Carlsson
78cfaa9e56
Fix two bugs with temporaries:
...
1. For
A f() {
return A();
}
we were incorrectly calling the A destructor on the returned object.
2. For
void f(A);
void g() {
A a;
f(a);
}
we were incorrectly not calling the copy constructor.
llvm-svn: 87082
2009-11-13 04:34:45 +00:00
Anders Carlsson
87f84c1e72
Move GlobalDecl to its own file. Also add DenseMapInfo traits.
...
llvm-svn: 87081
2009-11-13 04:25:07 +00:00
Daniel Dunbar
546a676ae5
Add {File,Source}Manager to CompilerInstance.
...
llvm-svn: 87079
2009-11-13 04:12:06 +00:00
Daniel Dunbar
636404a330
Add CompilerInstance, and starting moving clang-cc to it.
...
- The design philosophy is in the CompilerInstance doxyment, if you don't agree
with it now would be a good time to speak up.
llvm-svn: 87078
2009-11-13 03:51:44 +00:00
Ted Kremenek
2466e0d92f
Only flush plist diagnostics once.
...
llvm-svn: 87073
2009-11-13 03:14:14 +00:00
Ted Kremenek
da00234109
Fix recently introduced use-after-free error reported in <rdar://problem/7387478>.
...
llvm-svn: 87072
2009-11-13 03:02:57 +00:00
Mike Stump
fa81808a11
Refine construction vtables; they don't include bits that don't have
...
virtual bases unless they are morally virtual.
llvm-svn: 87071
2009-11-13 02:35:38 +00:00
Mike Stump
653d0b99df
Refine the construction vtables with respect to offsets. WIP.
...
llvm-svn: 87067
2009-11-13 02:13:54 +00:00
Daniel Dunbar
27b19dc1b5
Move input kind identification (-x) into FrontendOptions.
...
llvm-svn: 87066
2009-11-13 02:06:12 +00:00
Ted Kremenek
3c55718016
Pull static variable within function (for slightly faster startup time).
...
llvm-svn: 87065
2009-11-13 01:58:01 +00:00
Mike Stump
83066c8dee
Allow the tracking of address points for construction vtables as well.
...
llvm-svn: 87063
2009-11-13 01:54:23 +00:00
Ted Kremenek
a2968e59e3
retain/release checker: refactor some of the summary lookup logic for instance method summaries. No real functionality change, but it paves the way for new enhancements.
...
llvm-svn: 87062
2009-11-13 01:54:21 +00:00
Ted Kremenek
aedb7434c8
Add clang-cc option "-analyzer-experimental-checks" to enable experimental path-sensitive checks. The idea is to separate "barely working" or "skunkworks" checks from ones that should always run. Later we need more fine-grain checker control.
...
llvm-svn: 87053
2009-11-13 01:15:47 +00:00
Daniel Dunbar
1e886ebe8c
Move -target-{triple,abi} options into FrontendOptions.
...
llvm-svn: 87051
2009-11-13 01:02:19 +00:00
Daniel Dunbar
4a1f60f777
Move code completion options to clang-cc
...
llvm-svn: 87050
2009-11-13 01:02:10 +00:00
Chris Lattner
956d71a63a
add a fixme, inheriting from PointerIntPair is gross :)
...
llvm-svn: 87048
2009-11-13 00:57:01 +00:00
Daniel Dunbar
a5c3d989fb
Move FixItAtLocations into FrontendOptions
...
llvm-svn: 87046
2009-11-12 23:52:56 +00:00
Daniel Dunbar
eb51586a85
clang-cc: Keep Verbose option with HeaderSearchOptions, for now.
...
llvm-svn: 87045
2009-11-12 23:52:46 +00:00
Daniel Dunbar
f996c05d74
Add FrontendOptions, and starting moving clang-cc to it.
...
llvm-svn: 87044
2009-11-12 23:52:32 +00:00
Mike Stump
2b34bc5a96
Refine which vtbl is refernced in VTTs.
...
llvm-svn: 87043
2009-11-12 23:36:21 +00:00
Mike Stump
ca0de33113
Refine offsets into vtables for the VTT.
...
llvm-svn: 87041
2009-11-12 23:14:15 +00:00
Mike Stump
8677bc27bf
Refine vtable pointers for secondary vtables inside VTTs to point to
...
the right base vtable. WIP.
llvm-svn: 87039
2009-11-12 22:56:32 +00:00
Douglas Gregor
9533e2803f
We need the definition of NamedDecl in DeclContextInternals.h, since Clang is type-checking the template definition more thoroughly
...
llvm-svn: 87037
2009-11-12 22:12:17 +00:00
Mike Stump
2cefe38365
Fix the offset calculations for non-virtual bases with overrides.
...
Refine the VTT entries for virtual bases to refer to the complete
object's vtable instead of constructor vtables.
Refine the AddressPoint calculations for VTT entries for virtual bases.
llvm-svn: 87021
2009-11-12 20:47:57 +00:00
Fariborz Jahanian
eb80c98a72
Fix a code gen bug in i386-apple-darwin (objc fragile abi), sending
...
message to 'super'. Fixes radar 7205866.
llvm-svn: 87017
2009-11-12 20:14:24 +00:00
Daniel Dunbar
b0a1942196
Spell empty StringRef correctly (0 is a null StringRef, which is not the same).
...
llvm-svn: 87011
2009-11-12 18:40:12 +00:00
Douglas Gregor
49ba3cabdd
Recognize (and check) pointer-to-member template arguments that are
...
non-type template parameters or constants of pointer-to-member
type. Once checked, be sure to retain those pointer-to-member
constants as expressions if they are dependent, or as declarations if
they are not dependent.
llvm-svn: 87010
2009-11-12 18:38:13 +00:00
Devang Patel
94f798c079
"Attach debug info with llvm instructions" mode was enabled a month ago. Now make it permanent and remove old way of inserting intrinsics to encode debug info for locations and types.
...
llvm-svn: 87007
2009-11-12 18:21:39 +00:00
Devang Patel
6e98d7af22
Use getNameAsCString() instead of getName().data()
...
llvm-svn: 87001
2009-11-12 17:49:47 +00:00
Douglas Gregor
4e948ce769
When instantiating a reference to a non-type template parameter of pointer to
...
member type (e.g., T Class::*Member), build a pointer-to-member
constant expression. Previously, we we just building a simple
declaration reference expression, which meant that the expression was
not treated as a pointer to member.
llvm-svn: 87000
2009-11-12 17:40:13 +00:00
Chandler Carruth
bc55fe26c6
Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
...
This resolves the layering violation where CodeGen depended on Frontend.
llvm-svn: 86998
2009-11-12 17:24:48 +00:00
Anders Carlsson
9a1cd87d17
Set CK_BaseToDerived in TryStaticDowncast.
...
llvm-svn: 86996
2009-11-12 16:53:16 +00:00
Douglas Gregor
6051c8d344
Give CanQual<T> an implicit conversion to bool, so that it can be used
...
in "if" statements like:
if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())
Thanks to Clang for pointing out this mistake :)
llvm-svn: 86995
2009-11-12 16:49:45 +00:00
Anders Carlsson
a70ad93f8a
Add a CK_BaseToDerived cast kind.
...
llvm-svn: 86994
2009-11-12 16:43:42 +00:00
Douglas Gregor
19ac2d6494
When comparing template parameter lists, distinguish between three cases:
...
- Comparing template parameter lists to determine if we have a redeclaration
- Comparing template parameter lists to determine if we have equivalent
template template parameters
- Comparing template parameter lists to determine whether a template
template argument is valid for a given template template parameter.
Previously, we did not distinguish between the last two cases, which
got us into trouble when we were looking for exact type matches
between the types of non-type template parameters that were dependent
types. Now we do, so we properly delay checking of template template
arguments until instantiation time.
Also, fix an accidental fall-through in a case statement that was
causing crashes.
llvm-svn: 86992
2009-11-12 16:20:59 +00:00
Daniel Dunbar
068ae76e02
Disallow FIX-ITs when generating code.
...
llvm-svn: 86990
2009-11-12 15:42:53 +00:00
Douglas Gregor
ef986e8fc3
Improve source-location information for implicitly-generated member call expressions
...
llvm-svn: 86989
2009-11-12 15:31:47 +00:00
Daniel Dunbar
91cd960d50
clang-cc: Coalesce frontend options further.
...
llvm-svn: 86988
2009-11-12 15:23:20 +00:00
Benjamin Kramer
1eb8569bcb
Fix MSVC build.
...
llvm-svn: 86983
2009-11-12 12:30:05 +00:00
Zhongxing Xu
c6d9292197
update CMakefile
...
llvm-svn: 86979
2009-11-12 08:39:33 +00:00
Zhongxing Xu
88cca6b085
Add boilerplate logic for a malloc/free checker.
...
llvm-svn: 86978
2009-11-12 08:38:56 +00:00
Chris Lattner
55c9877b66
Generalize stdint.h for non-8-bit-multiple types, patch by
...
Ken Dyck!
"This adds definitions for types of 8-bit multiples
from 8 to 64 to stdint.h and rationalizes the selection of types
for the exact-width definitions in InitPreprocessor.cpp."
llvm-svn: 86977
2009-11-12 08:08:27 +00:00
Chris Lattner
0fb5bbd401
do not store wchar/char16/char32/intmax width/alignment info
...
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!
llvm-svn: 86976
2009-11-12 08:04:33 +00:00
Daniel Dunbar
4c0e8274e9
Move warning options into DiagnosticOptions.
...
llvm-svn: 86968
2009-11-12 07:28:44 +00:00
Daniel Dunbar
71ed08ba39
Avoid comparing string literals.
...
llvm-svn: 86967
2009-11-12 07:28:29 +00:00
Daniel Dunbar
8fd69a09cc
Move dump-build-information option into DiagnosticOptions.
...
llvm-svn: 86966
2009-11-12 07:28:21 +00:00
Daniel Dunbar
ec256a921f
clang-cc: Factor CreateDiagnosticEngine out of main.
...
llvm-svn: 86963
2009-11-12 06:48:31 +00:00
Daniel Dunbar
0d1defd4cd
clang-cc: -fixit is actually option, not an action, although its use with non
...
-fsyntax-only is probably untested.
llvm-svn: 86962
2009-11-12 06:48:24 +00:00
Daniel Dunbar
723e74ab75
Simplify.
...
llvm-svn: 86961
2009-11-12 06:48:17 +00:00
Ted Kremenek
6c37c5c356
PthreadLockChecker doesn't need PreVisitCallExpr() yet. All the current logic should be done in PostVisitCallExpr()
...
llvm-svn: 86959
2009-11-12 06:26:58 +00:00
Ted Kremenek
d48568f641
Add most of the boilerplate logic for a simple pthread_mutux_lock() -> pthread_mutex_unlock() checker. We need to add a visitor method to Checker for handling dead symbols in order to detect locks that are not unlocked.
...
llvm-svn: 86958
2009-11-12 06:17:47 +00:00
Ted Kremenek
386a2a52d3
Remove obsolete 'struct NullDerefTag'.
...
llvm-svn: 86957
2009-11-12 06:16:18 +00:00
Rafael Espindola
f401fa0386
Use the --with-c-include-dirs configure option.
...
llvm-svn: 86956
2009-11-12 05:48:41 +00:00
Ted Kremenek
a971afb90f
Enhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs. No clients (yet).
...
llvm-svn: 86949
2009-11-12 04:35:08 +00:00
Ted Kremenek
8f6c4e8617
Remove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, and was easily inlined.
...
llvm-svn: 86948
2009-11-12 04:16:35 +00:00
John McCall
84c16cf824
Random const correctness, and incidentally use computeDeclContext when building
...
a using declaration.
llvm-svn: 86942
2009-11-12 03:15:40 +00:00
Daniel Dunbar
2940303363
Move TokenCache option to PreprocessorOptions.
...
llvm-svn: 86940
2009-11-12 02:53:59 +00:00
Daniel Dunbar
1a54e3fbb9
Switch PTHManager to using diagnostics for most errors.
...
Also, always give errors on a token-cache PTH failure.
llvm-svn: 86939
2009-11-12 02:53:48 +00:00
Daniel Dunbar
51637a9ba4
Simplify.
...
llvm-svn: 86938
2009-11-12 02:53:34 +00:00
Daniel Dunbar
1619831fde
clang-cc: Refactor ParseInputFollow to clearly split on the two primary cases,
...
when we are running an AST consumer and when we are just running the
preprocessor or parser alone.
llvm-svn: 86937
2009-11-12 02:53:27 +00:00
Daniel Dunbar
4806f2ea48
clang-cc: Factor ReadPCHFile out of ProcessInputFile.
...
llvm-svn: 86936
2009-11-12 02:53:20 +00:00
Daniel Dunbar
92641dca86
Simplify.
...
llvm-svn: 86935
2009-11-12 02:53:13 +00:00
Daniel Dunbar
7336edd8b2
clang-cc: Unify InitializeSourceManager calls.
...
llvm-svn: 86934
2009-11-12 02:53:06 +00:00
Zhongxing Xu
383c273966
Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.
...
llvm-svn: 86932
2009-11-12 02:48:32 +00:00
John McCall
495922cb6a
Note to self: don't leave debugging statements in the code for four hours.
...
llvm-svn: 86931
2009-11-12 02:10:34 +00:00
Daniel Dunbar
f7316732b8
clang-cc: Move non-Consumer action handling to common location, to expose the massive amount of redundancy we have introduced through blind copy-and-paste.
...
llvm-svn: 86922
2009-11-12 01:36:27 +00:00
Daniel Dunbar
f4408a29e1
Fix PCH/preprocess test to be more useful, and unbreak -E mode with implicit
...
PCH, which I broke.
llvm-svn: 86921
2009-11-12 01:36:20 +00:00
Devang Patel
7bdf096f8d
Do not use StringRef while using DebugInfo interface.
...
llvm-svn: 86915
2009-11-12 00:51:46 +00:00
Douglas Gregor
dd6c0356ba
Improve recovery in a wonky case where one tries to specialize a
...
template template parameter.
When building a template-id type, check whether the template-name
itself is dependent (even if the template arguments are not!) and
handle it as a template-id type.
llvm-svn: 86913
2009-11-12 00:46:20 +00:00
Daniel Dunbar
0cfa3c4875
Fix Makefile dependency bug with out-of-dir builds.
...
llvm-svn: 86912
2009-11-12 00:41:49 +00:00
Daniel Dunbar
d8ff51bf49
Fix test portability.
...
llvm-svn: 86911
2009-11-12 00:41:41 +00:00
Daniel Dunbar
a970d39ebf
Tweak AnalyzerOptions for consistency, and make sure default constructed object
...
is sane.
llvm-svn: 86908
2009-11-12 00:24:35 +00:00
Daniel Dunbar
39b6e2a0fd
Tweak formatting.
...
llvm-svn: 86907
2009-11-12 00:24:28 +00:00
Daniel Dunbar
e6de40e747
Move AnalyzerOptions into CompilerInvocation.
...
llvm-svn: 86906
2009-11-12 00:24:10 +00:00
John McCall
b0e419e34d
Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
...
and give that category an explicit test. Generalize the internal diagnostic
name.
llvm-svn: 86905
2009-11-12 00:06:05 +00:00
Douglas Gregor
c998409cce
Remove an overly-eager assertion when replacing tokens with an
...
annotation token, because some of the tokens we're annotating might
not be in the set of cached tokens (we could have consumed them
unconditionally).
Also, move the tentative parsing from ParseTemplateTemplateArgument
into the one caller that needs it, improving recovery.
llvm-svn: 86904
2009-11-12 00:03:40 +00:00
Daniel Dunbar
732ef8aefd
Tweak PCH -include handling to make sure it matches the name as would be present
...
in the predefines buffer.
llvm-svn: 86903
2009-11-11 23:58:53 +00:00
John Thompson
92ebab90fe
Fix clang executable path for Windows
...
llvm-svn: 86896
2009-11-11 23:11:14 +00:00
Douglas Gregor
adee3e3b22
Template argument deduction for template template parameters. This
...
permits, among other things, ripping apart and reconstructing
templates via partial specialization:
template<typename T>
struct DeepRemoveConst { typedef T type; };
template<typename T>
struct DeepRemoveConst<const T> {
typedef typename DeepRemoveConst<T>::type type;
};
template<template<typename> class TT, typename T>
struct DeepRemoveConst<TT<T> > {
typedef TT<typename DeepRemoveConst<T>::type> type;
};
Also, fix a longstanding thinko in the code handling partial ordering
of class template partial specializations. We were performing the
second deduction without clearing out the results of the first
deduction. It's amazing we got through so much code with such a
horrendous error :(
llvm-svn: 86893
2009-11-11 23:06:43 +00:00
John McCall
5055e4cdfd
Fix PR 5422: handle lvalue results when evaluating 'based' ptrtoints as part of
...
the -Wconversion check.
llvm-svn: 86891
2009-11-11 22:52:37 +00:00
Fariborz Jahanian
d708eb6b6a
Make test more platform independent.
...
llvm-svn: 86890
2009-11-11 22:49:09 +00:00
Fariborz Jahanian
c3091c9118
Make test more platform independent (per Sebastian's comment).
...
llvm-svn: 86888
2009-11-11 22:45:41 +00:00
Fariborz Jahanian
13e0c90fc1
writable atomic property's setter/getter must be in 'lock' step of
...
either both synthesized or bith user defined.
Implements radar 6557233.
llvm-svn: 86887
2009-11-11 22:40:11 +00:00
Douglas Gregor
84d49a2085
Improve diagnostics when a default template argument does not match
...
with its corresponding template parameter. This can happen when we
performed some substitution into the default template argument and
what we had doesn't match any more, e.g.,
template<int> struct A;
template<typename T, template<T> class X = A> class B;
B<long> b;
Previously, we'd emit a pretty but disembodied diagnostic showing how
the default argument didn't match the template parameter. The
diagnostic was good, but nothing tied it to the *use* of the default
argument in "B<long>". This commit fixes that.
Also, tweak the counting of active template instantiations to avoid
counting non-instantiation records, such as those we create for
(surprise!) checking default arguments, instantiating default
arguments, and performing substitutions as part of template argument
deduction.
llvm-svn: 86884
2009-11-11 21:54:23 +00:00
Daniel Dunbar
2856ae444b
Always initialize the header search object as part of InitializePreprocessor;
...
not doing this has little to no utility.
llvm-svn: 86883
2009-11-11 21:44:42 +00:00
Daniel Dunbar
0c6c930f05
Allow Preprocessor to take ownership of the HeaderSearch object. I think it should probably always own the header search object, but I'm not sure...
...
llvm-svn: 86882
2009-11-11 21:44:21 +00:00
Daniel Dunbar
55b781f85e
Sink AttachDependencyFileGen into CreatePreprocessor.
...
llvm-svn: 86881
2009-11-11 21:44:00 +00:00
Daniel Dunbar
89d1fdff65
Add DependencyOutputOptions to wrap -M... options, and propogate to
...
CompilerInvocation and clang-cc.
llvm-svn: 86880
2009-11-11 21:43:12 +00:00
Mike Stump
fd84d6d808
Fix ctor vtable name. WIP.
...
llvm-svn: 86879
2009-11-11 20:32:03 +00:00
Mike Stump
eac4559790
Push ctor vtable construction down further. WIP.
...
llvm-svn: 86878
2009-11-11 20:26:26 +00:00
Ted Kremenek
7cf8238291
Remove some stale ErrorNodes variables in GRExprEngine and the old buffer overflow logic in GRExprEngineInternalChecks.cpp.
...
llvm-svn: 86877
2009-11-11 20:16:36 +00:00
Chandler Carruth
062c291949
After drinking caffeine, add the two files missing from the previous submit.
...
Sorry about that.
llvm-svn: 86869
2009-11-11 19:43:37 +00:00
Douglas Gregor
eebed72fbb
Move handling of template parameter packs out of the
...
template-type-parameter specific template argument checking code and
up to the template argument checking loop. In theory, this should make
variadic templates work better; in practice, they don't well enough
for us to care anyway (YET!), so this is mostly a re-organization to
simplify CheckTemplateArgument.
llvm-svn: 86868
2009-11-11 19:41:09 +00:00
Douglas Gregor
da0fb53c16
Refactoring of template-argument checking code to reduce nesting,
...
increase sanity. No intended functionality change.
llvm-svn: 86866
2009-11-11 19:31:23 +00:00
Douglas Gregor
e62e6a0191
Before checking a template template argument against its corresponding
...
template template parameter, substitute any prior template arguments
into the template template parameter. This, for example, allows us to
properly check the template template argument for a class such as:
template<typename T, template<T Value> class X> struct Foo;
The actual implementation of this feature was trivial; most of the
change is dedicated to giving decent diagnostics when this
substitution goes horribly wrong. We now get a note like:
note: while substituting prior template arguments into template
template parameter 'X' [with T = float]
As part of this change, enabled some very pedantic checking when
comparing template template parameter lists, which shook out a bug in
our overly-eager checking of default arguments of template template
parameters. We now perform only minimal checking of such default
arguments when they are initially parsed.
llvm-svn: 86864
2009-11-11 19:13:48 +00:00
Chandler Carruth
5375309250
Move the ManagerRegistry to the Analysis library to resolve the layering violation.
...
llvm-svn: 86863
2009-11-11 19:10:59 +00:00
Devang Patel
5348515193
Do not eagerly set stop point for arguments. This misleads the debugger in identifying beginning of function body. Instead, create new location to attach with llvm.dbg.declare. This location is only used to find the context of the variable by the code generator, and it is not used to emit line number info.
...
llvm-svn: 86862
2009-11-11 19:10:19 +00:00
Fariborz Jahanian
03f62ed9bb
Value initialize non-class array members in ctor's
...
initializer list. Fixes PR5463.
llvm-svn: 86849
2009-11-11 17:55:25 +00:00
Ted Kremenek
91989d166a
Split buffer overflow test case into two test cases, removing out logic that was commented out.
...
llvm-svn: 86845
2009-11-11 17:17:06 +00:00
Douglas Gregor
38fee967ae
Instantiation of template template parameters for nested templates, e.g.,
...
template<typename T>
struct X {
template<template<T Value> class Y> struct Inner;
};
llvm-svn: 86844
2009-11-11 16:58:32 +00:00
Douglas Gregor
120635bc9c
Fix speculative parsing of dependent template names in
...
nested-name-specifiers so that they don't gobble the template name (or
operator-function-id) unless there is also a
template-argument-list. For example, given
T::template apply
we would previously consume both "template" and "apply" as part of
parsing the nested-name-specifier, then error when we see that there
is no "<" starting a template argument list. Now, we parse such
constructs tentatively, and back off if the "<" is not present. This
allows us to parse dependent template names as one would use them for,
e.g., template template parameters:
template<typename T, template<class> class X = T::template apply>
struct MetaSomething;
Also, test default arguments for template template parameters.
llvm-svn: 86841
2009-11-11 16:39:34 +00:00
Zhongxing Xu
b166712d02
Add undefined array subscript checker.
...
llvm-svn: 86837
2009-11-11 13:42:54 +00:00
Zhongxing Xu
83c4374e72
Remove the old out-of-bound checking code.
...
llvm-svn: 86836
2009-11-11 12:52:39 +00:00
Zhongxing Xu
4f7759a339
Reimplement out-of-bound array access checker with the new checker interface.
...
Now only one test case is XFAIL'ed.
llvm-svn: 86834
2009-11-11 12:33:27 +00:00
Zhongxing Xu
3ef93badbe
ReturnPointerRangeChecker: use StripCasts() instead of checking for zero index
...
explicitly.
Fix 80-col violations.
llvm-svn: 86833
2009-11-11 11:55:54 +00:00
Daniel Dunbar
f580187aed
Simplify.
...
llvm-svn: 86830
2009-11-11 10:22:48 +00:00
Daniel Dunbar
559f7a5c3c
Fix unsafe use of StringRef I introduced.
...
llvm-svn: 86829
2009-11-11 10:10:25 +00:00
Daniel Dunbar
22bdabf05f
Add PreprocessorOutputOptions to CompilerInvocation, and move initialization to
...
clang-cc/Options.cpp
llvm-svn: 86828
2009-11-11 10:07:44 +00:00
Daniel Dunbar
531f6c662b
Add PreprocessorOutputOptions, for things like -dM, -C, -CC which control -E
...
mode.
llvm-svn: 86827
2009-11-11 10:07:22 +00:00
Daniel Dunbar
979586e755
Simplifiy target feature handling by coalescing all the logic into
...
InitializeCompileOptions.
llvm-svn: 86826
2009-11-11 09:38:56 +00:00
Daniel Dunbar
eced7e065f
Minor formatting tweaks.
...
llvm-svn: 86825
2009-11-11 09:38:42 +00:00
Daniel Dunbar
759cab9a54
clang-cc: Refactor some -fixit-at handling.
...
llvm-svn: 86824
2009-11-11 09:38:35 +00:00
Daniel Dunbar
d0c3bb0df2
Allow TextDiagnosticPrinter to have optional ownership of its output stream.
...
llvm-svn: 86823
2009-11-11 09:38:24 +00:00
Daniel Dunbar
23ede2d9d1
Update CMake.
...
llvm-svn: 86822
2009-11-11 08:14:02 +00:00
Daniel Dunbar
d2cfa0111c
clang-cc: Move InitializeAnalyzerOptions into Options.cpp
...
llvm-svn: 86821
2009-11-11 08:13:55 +00:00
Daniel Dunbar
ef0147c0e9
clang-cc: Start coalescing "frontend" options.
...
llvm-svn: 86820
2009-11-11 08:13:47 +00:00
Daniel Dunbar
dcd40fb95f
clang-cc: Move InitializeDiagnosticOptions to Options.cpp
...
llvm-svn: 86819
2009-11-11 08:13:40 +00:00
Daniel Dunbar
f527a12e47
clang-cc: Move HeaderSearchOptions to Options.cpp
...
llvm-svn: 86818
2009-11-11 08:13:32 +00:00
Daniel Dunbar
b6bac22d02
Turn LoggingDiagnosticClient into a more general ChainedDiagnosticClient and
...
move to libFrontend.
llvm-svn: 86817
2009-11-11 08:13:24 +00:00
Daniel Dunbar
84dfbfde26
clang-cc: Move InitializeLangOptions to Options.cpp.
...
Also, inline InitializeLanguageStandard into InitializeLangOptions; this code
needs to be refactored but the current division doesn't make any sense.
llvm-svn: 86816
2009-11-11 07:26:12 +00:00
Daniel Dunbar
f0f6f0efb0
Inline some trivial functions.
...
llvm-svn: 86815
2009-11-11 07:26:02 +00:00
Ted Kremenek
04552cbef0
CastToStructChecker: use 'isStructureType()' instead of 'isRecordType()' to determine if a pointer is casted to a struct pointer. This fixes an observed false positive when a value is casted to a union.
...
llvm-svn: 86813
2009-11-11 06:43:42 +00:00
Ted Kremenek
55d59bf785
Fix display of "ANALYZE" statements in AnalysisConsumer by correctly resetting the flag indicating that the current Decl* has not yet been displayed. Also move this out of AnalysisManager, since AnalysisManager should not handle text output to the user.
...
llvm-svn: 86812
2009-11-11 06:28:42 +00:00
Daniel Dunbar
999215c8c8
clang-cc: Move InitializePreprocessorOptions to Options.cpp
...
llvm-svn: 86811
2009-11-11 06:10:03 +00:00
Ted Kremenek
4325315935
Remove public headers for UndefinedArgChecker, AttrNonNullChecker, and BadCallChecker, making their implementations completely private.
...
llvm-svn: 86809
2009-11-11 05:50:44 +00:00
Daniel Dunbar
de142beafb
clang-cc: Simplify this code, now that predefines handling is uniform in the
...
PCH/-E and PCH/not--E cases.
llvm-svn: 86808
2009-11-11 05:33:31 +00:00
Daniel Dunbar
000c4ffd16
Redo how PCH handles its implicit include. Instead of treating this specially in
...
the front-end (as far as the preprocessor goes), follow the usual logic of
inserting the (original include path) name into the predefines buffer. This
pushes the responsibility for handling this to PCH instead of the front-end. In
PCH this requires being a little more clever when we diff the predefines
buffers.
Neither of these solutions are particularly great, I think what we eventually
should do is something like gcc where we insert a special marker to indicate the
PCH file, but then run the preprocessor as usual. This would be clearer and
would allow us to drop the overly clever predefines handling.
llvm-svn: 86806
2009-11-11 05:29:04 +00:00
Daniel Dunbar
499baed8a8
More StringRef simplification to PCHValidator::ReadPredefinesBuffer.
...
llvm-svn: 86805
2009-11-11 05:26:28 +00:00
Daniel Dunbar
775f18520c
And now a test fix in +Asserts mode, which I broke.
...
llvm-svn: 86801
2009-11-11 03:48:34 +00:00
Daniel Dunbar
568e302a7f
Fix some tests in -Asserts mode.
...
- FileCheck is a *huuuuge* improvement here.
- Still feels like we could use a better tool for this though, either teach
llvm-dis to spit out the FileCheck syntax, or provide another tool to turn a
.ll into a "matchable" input.
- Also on my Christmas list is better FileCheck diagnostics with missing
variables or mismatches.
llvm-svn: 86800
2009-11-11 03:48:26 +00:00
Daniel Dunbar
8665c7e39d
Rewrite splitLines using StringRef; this is much simpler, and also now avoids
...
tons of std::string trashing. I plan to move this and other fun string munging
utilities to a StringRefExtras.h at some point if no one beats me to it.
On a synthetic benchmark on x86_64, llvm-gcc actually generates code thats 10%
faster using the StringRef version. gcc miscompiles the synthetic benchmark,
which I'm crossing my fingers and hoping won't happen here. clang compiles the
sythetic benchmark correctly (wootness), but the StringRef version is
slower. Silly clang.
llvm-svn: 86799
2009-11-11 03:45:59 +00:00
Ted Kremenek
5e1f78aeb1
Refactor DereferenceChecker to use only the new Checker API instead of
...
the old builder API. This percolated a bunch of changes up to the
Checker class (where CheckLocation has been renamed VisitLocation) and
GRExprEngine. ProgramPoint now has the notion of a "LocationCheck"
point (with PreLoad and PreStore respectively), and a bunch of the old
ProgramPoints that are no longer used have been removed.
llvm-svn: 86798
2009-11-11 03:26:34 +00:00
John McCall
7e1d6d78d5
Preserve source locations when building offsetof expressions featuring
...
anonymous members. Partial fix for PR 5390.
llvm-svn: 86796
2009-11-11 03:23:23 +00:00
Mike Stump
c7b9f5e762
More VTT work. We now track offsets and use the ctor vtable builder
...
interface. WIP.
llvm-svn: 86793
2009-11-11 03:08:24 +00:00
Mike Stump
4e16d05dc4
Fixup spacing.
...
llvm-svn: 86792
2009-11-11 02:49:00 +00:00
John McCall
0506e4af2c
Apparently the following idiom is specifically encouraged:
...
if (self = [super init])
Recognize it and only warn if -Wparentheses is explicitly enabled.
llvm-svn: 86790
2009-11-11 02:41:58 +00:00
Fariborz Jahanian
e6c8112572
Avoid generating additional destructor(s) for initialized constructed
...
objects.
llvm-svn: 86778
2009-11-11 01:13:34 +00:00
Douglas Gregor
9167f8bbd5
Introduce a new representation for template template
...
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.
The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.
This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
- the inability to use dependent template names as template template
arguments
- template template parameter default arguments cannot be
instantiation
However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.
llvm-svn: 86777
2009-11-11 01:00:40 +00:00
Daniel Dunbar
3618834da8
Recognize -fsyntax-only as a "consumer only" action.
...
llvm-svn: 86776
2009-11-11 00:54:56 +00:00
Daniel Dunbar
20a682de6b
StringRefify some PCH interfaces.
...
llvm-svn: 86775
2009-11-11 00:52:11 +00:00
Daniel Dunbar
045c92f812
Replace startsWith functions with StringRef.
...
llvm-svn: 86774
2009-11-11 00:52:00 +00:00
Mike Stump
8b2d2d0707
Stub out most of the VTT building code. WIP.
...
llvm-svn: 86772
2009-11-11 00:35:07 +00:00
John McCall
caef2448da
Create a new Scope when parsing a declaration with a C++ scope specifier.
...
llvm-svn: 86764
2009-11-11 00:21:18 +00:00
Daniel Dunbar
93097b3906
Add Diagnostic::Report method for reporting diagnostics without a location.
...
llvm-svn: 86760
2009-11-10 23:55:23 +00:00
Daniel Dunbar
de02f63945
PreprocessorOptions: Get rid of unnecessary 'isPTH' flag for include entries.
...
llvm-svn: 86757
2009-11-10 23:53:43 +00:00
Fariborz Jahanian
4e088941ad
Diagnose illegally typed operator new/new[].
...
llvm-svn: 86755
2009-11-10 23:47:18 +00:00
Devang Patel
af993bf5cc
Attach location info with llvm.dbg.declare.
...
llvm-svn: 86750
2009-11-10 23:07:24 +00:00
Ted Kremenek
0b61a805b9
Add FIXIT hint for -Wsemicolon-before-method-body
...
llvm-svn: 86746
2009-11-10 22:55:49 +00:00
Eli Friedman
d76f438369
Revert r86741; it doesn't handle virtual bases correctly.
...
llvm-svn: 86745
2009-11-10 22:48:10 +00:00
Eli Friedman
0960059c0c
Minor optimization to skip null check in generated code where it isn't
...
necessary.
llvm-svn: 86741
2009-11-10 22:42:26 +00:00
Eli Friedman
3ad2645430
Fix for PR5454: make sure to use the right block as the predecessor in the
...
generated PHI node for the null check of a new operator.
llvm-svn: 86738
2009-11-10 22:39:09 +00:00
Ted Kremenek
42855f2043
Shuffle order of warning declarations (alphabetize).
...
llvm-svn: 86733
2009-11-10 22:22:50 +00:00
Ted Kremenek
f9a28abe8d
Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>.
...
llvm-svn: 86731
2009-11-10 22:16:29 +00:00
Daniel Dunbar
47ea8628a5
Decouple more of clang-cc by moving ImplicitP[CT]H options into
...
PreprocessorOptions.
Global variables used as [in] [out] parameters considered harmful.
llvm-svn: 86728
2009-11-10 22:09:38 +00:00
Ted Kremenek
4a720a363c
Update CMake file.
...
llvm-svn: 86721
2009-11-10 21:38:41 +00:00
Benjamin Kramer
aed9a1aadb
Add newline at EOF.
...
llvm-svn: 86720
2009-11-10 21:33:20 +00:00
Benjamin Kramer
2c9a91c290
Silence warning.
...
llvm-svn: 86719
2009-11-10 21:29:56 +00:00
Dan Gohman
ad5ef3d70f
Use #include <stdio.h> when using fprintf and stderr.
...
llvm-svn: 86717
2009-11-10 21:21:27 +00:00
Daniel Dunbar
f89a32ac45
clang-cc: Start moving "pure" option handling to Options.cpp, to separate it
...
from the logic part of clang-cc, and to enforce limited scoping.
llvm-svn: 86711
2009-11-10 19:51:53 +00:00
Daniel Dunbar
d96cd43f13
clang-cc: Sink more options inside codegenopts namespace.
...
llvm-svn: 86710
2009-11-10 19:51:46 +00:00
Daniel Dunbar
a35a2cb56b
Change LangOpts initialization to directly test the code generation options,
...
instead of reproducing their logic.
llvm-svn: 86709
2009-11-10 19:51:33 +00:00
Douglas Gregor
b53edfb8dc
Improve parsing of template arguments to lay the foundation for
...
handling template template parameters properly. This refactoring:
- Parses template template arguments as id-expressions, representing
the result of the parse as a template name (Action::TemplateTy)
rather than as an expression (lame!).
- Represents all parsed template arguments via a new parser-specific
type, ParsedTemplateArgument, which stores the kind of template
argument (type, non-type, template) along with all of the source
information about the template argument. This replaces an ad hoc
set of 3 vectors (one for a void*, which was either a type or an
expression; one for a bit telling whether the first was a type or
an expression; and one for a single source location pointing at
the template argument).
- Moves TemplateIdAnnotation into the new Parse/Template.h. It never
belonged in the Basic library anyway.
llvm-svn: 86708
2009-11-10 19:49:08 +00:00
Fariborz Jahanian
dc21610419
Changed a variable name to match what it represents
...
(Ted's feedback).
llvm-svn: 86702
2009-11-10 19:31:09 +00:00
Fariborz Jahanian
1254a0978c
This patch implements Code gen. for destruction of
...
global array of objects.
llvm-svn: 86701
2009-11-10 19:24:06 +00:00
Ted Kremenek
ba64574c9a
CIndex: Only display diagnostics to llvm::errs() when the client has set the 'displayDiagnostics' option to 1 in clang_createIndex(). This fixes <rdar://problem/7370691>.
...
llvm-svn: 86700
2009-11-10 19:18:52 +00:00
Mike Stump
b47222144b
Only generate a VTT for classes that need a VTT.
...
llvm-svn: 86699
2009-11-10 19:13:04 +00:00
Daniel Dunbar
f76c9d270a
Driver: Run 'clang' in C++ mode based on the name it was invoked by. We match
...
anything that ends with ++ or ++-FOO (e.g., c++, clang++, clang++-1.1) as being
a "C++ compiler".
This allows easy testing of the C++ compiler by 'ln -s clang clang++', or by 'cp
clang clang++'.
Based on patch by Roman Divacky.
llvm-svn: 86697
2009-11-10 18:47:41 +00:00
Daniel Dunbar
ef2919f1fa
Factor out parts of InitializeCompileOptions that depend on the LangOptions.
...
llvm-svn: 86696
2009-11-10 18:47:35 +00:00
Daniel Dunbar
be50f5ab9d
Localize -disable-llvm-optzns handling to BackendConsumer::CreatePasses.
...
- This is conceptually better since the only thing we want this option to do is
preserve the internal module as constructed by IRgen, before running any
passes.
- This also fixes bugs in -disable-llvm-optzns handling with regards to debug
info.
llvm-svn: 86691
2009-11-10 17:50:53 +00:00
Daniel Dunbar
ede182ef05
clang-cc: Start sinking (CodeGen) options into namespaces to limit their scope.
...
llvm-svn: 86690
2009-11-10 17:50:42 +00:00
Daniel Dunbar
68ac06142b
Cleanup some clang-cc FIXMEs
...
llvm-svn: 86686
2009-11-10 16:23:44 +00:00
Daniel Dunbar
754c11ec48
Add CompileOptions to CompilerInvocation.
...
llvm-svn: 86685
2009-11-10 16:19:45 +00:00
John McCall
b8be78b753
Fix a similar problem with qualified lookup through using directives,
...
although in this case we probably just run a risk of duplicating work;
I can't think of how this could cause a bug.
llvm-svn: 86680
2009-11-10 09:25:37 +00:00
John McCall
9757d0363d
Make a somewhat more convincing test case for unqualified lookup through
...
using directives, and fix a bug thereby exposed: since we're playing
tricks with pointers, we need to make certain we're always using the same
pointers for things.
Also tweak an existing error message.
llvm-svn: 86679
2009-11-10 09:20:04 +00:00
Zhongxing Xu
f9667229a1
Ignore parentheses when check the type of the expr.
...
llvm-svn: 86677
2009-11-10 08:33:44 +00:00
John McCall
a31577ce9a
Simple test case for [basic.lookup.udir].
...
llvm-svn: 86674
2009-11-10 07:56:40 +00:00
Zhongxing Xu
537db5d652
SizeofPointerChecker: Many false positives have the form 'sizeof *p'.
...
This is reasonable because people know what they are doing when they
intentionally dereference the pointer.
So now we only emit warning when a pointer variable is use literally.
llvm-svn: 86673
2009-11-10 07:52:53 +00:00
Mike Stump
d846d0825b
Add vtable caching to prevent multiple vtables for the same class from
...
being generated.
Add the most derived vtable pointer to the VTT.
llvm-svn: 86671
2009-11-10 07:44:33 +00:00