Chris Lattner
85e2e141db
various cleanups
...
llvm-svn: 67981
2009-03-29 05:01:10 +00:00
Chris Lattner
20d79aa1c2
adjust to llvm mainline changes.
...
llvm-svn: 67980
2009-03-29 04:32:54 +00:00
Chris Lattner
114597d69b
tighten this up, the decl *must* be a declcontext, no need for the dynamic check.
...
llvm-svn: 67978
2009-03-29 04:30:19 +00:00
Chris Lattner
59f1a41f2e
add fixme
...
llvm-svn: 67977
2009-03-29 01:03:29 +00:00
Ted Kremenek
42361b3eb5
Update checker build.
...
llvm-svn: 67976
2009-03-29 00:43:39 +00:00
Chris Lattner
ed6b4b0598
add getNumLowBitsAvailable for OpaquePtr and QualType.
...
llvm-svn: 67975
2009-03-29 00:41:20 +00:00
Chris Lattner
22d059dbde
follow llvm mainline, where PointerLikeTypeInfo got renamed
...
to PointerLikeTypeTraits.
llvm-svn: 67974
2009-03-29 00:39:47 +00:00
Ted Kremenek
554b5370e4
scan-build: Also look for clang-cc in ../libexec
...
llvm-svn: 67972
2009-03-29 00:31:32 +00:00
Eli Friedman
bbcf49e410
Initial implementation of ARM ABI. Mostly untested. Note that I'm not
...
really intending to take ownership of this; I wrote this mostly because
I was curious about how the ARM ABI works. It should be a decent start,
though.
llvm-svn: 67969
2009-03-29 00:15:25 +00:00
Chris Lattner
a59a3e2d10
QualType can go in SmallPtrSet now, simplify code that used to have
...
to work around this.
llvm-svn: 67968
2009-03-29 00:04:01 +00:00
Chris Lattner
5ab14f5175
implement the PointerLikeTypeInfo trait for QualType, allowing
...
it to be stuck into a SmallPtrSet.
llvm-svn: 67967
2009-03-29 00:03:08 +00:00
Anders Carlsson
bb1e4724f1
More improvements to namespace aliases. We now support everything except aliases in using directives.
...
llvm-svn: 67966
2009-03-28 23:53:49 +00:00
Anders Carlsson
c8820e5f9f
Handle the case where the namespace decl is an alias.
...
llvm-svn: 67965
2009-03-28 23:50:18 +00:00
Anders Carlsson
3694935cd2
Fix lookup bug
...
llvm-svn: 67964
2009-03-28 23:49:35 +00:00
Anders Carlsson
f03bb51a00
Let getIdentifierNamespaceForKind know about aliases and have it treat them just like namespace decls.
...
llvm-svn: 67963
2009-03-28 23:02:53 +00:00
Anders Carlsson
ff25fdf2fb
Create AST nodes for namespace aliases.
...
llvm-svn: 67962
2009-03-28 22:58:02 +00:00
Anders Carlsson
47952aec09
Parse the location of the 'namespace' token to ActOnNamespaceAliasDef. No functionality change.
...
llvm-svn: 67961
2009-03-28 22:53:22 +00:00
Ted Kremenek
035cf930d5
Fix regression in pointer comparison with NULL (e.g., 0 != ptr). This fixes
...
<rdar://problem/6732151>.
llvm-svn: 67954
2009-03-28 19:59:33 +00:00
Chris Lattner
83f095cc7e
Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a
...
pointer. Its purpose in life is to be a glorified void*, but which does not
implicitly convert to void* or other OpaquePtr's with a different UID.
Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the
entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This
makes the C++ compiler enforce that these aren't convertible to other opaque
types.
We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
but I don't plan to do that in the short term.
The one outstanding known problem with this patch is that we lose the
bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
bitmangle the success bit into the low bit of DeclPtrTy. I will rectify
this with a subsequent patch.
llvm-svn: 67952
2009-03-28 19:18:32 +00:00
Chris Lattner
b7de9b7704
sort alphabetically
...
llvm-svn: 67951
2009-03-28 19:10:22 +00:00
Ted Kremenek
b505811250
Adjust control-flow endpoints for '&&' and '||'.
...
llvm-svn: 67948
2009-03-28 17:33:57 +00:00
Ted Kremenek
ae1c4a40ef
Add comparison operators for PathDiagosticLocation.
...
llvm-svn: 67947
2009-03-28 17:33:08 +00:00
Ted Kremenek
04ab6c8b17
Add comparison operators for SourceRange.
...
llvm-svn: 67946
2009-03-28 17:32:39 +00:00
Cedric Venet
351c71a85f
CMake: remove TranslationUnit.cpp from build (file has been removed).
...
llvm-svn: 67944
2009-03-28 12:41:49 +00:00
Chris Lattner
8372efd39a
move file to proper place.
...
llvm-svn: 67933
2009-03-28 08:04:44 +00:00
Anders Carlsson
b81608499e
As Eli pointed out, it is possible that a namespace lookup is ambiguous!
...
llvm-svn: 67932
2009-03-28 07:51:31 +00:00
Chris Lattner
a3d4aeb113
add accessors.
...
llvm-svn: 67929
2009-03-28 07:00:38 +00:00
Chris Lattner
6b6185b18f
some random cleanups
...
llvm-svn: 67928
2009-03-28 06:53:40 +00:00
Chris Lattner
e173d44137
eliminate unneeded iterator wrappers.
...
llvm-svn: 67927
2009-03-28 06:47:16 +00:00
Chris Lattner
330958e9b0
change NamespaceDecl to hold its 'NextNamespace' pointer itself
...
instead of in NextDeclarator. This temporarily increases memory
usage, but simplifies and decouples things.
llvm-svn: 67926
2009-03-28 06:44:59 +00:00
Anders Carlsson
ac2c96528f
Check that the alias points to a valid namespace.
...
llvm-svn: 67925
2009-03-28 06:42:02 +00:00
Ted Kremenek
ae1aa43617
Properly escape special characters in <string>'s in plist file.
...
llvm-svn: 67924
2009-03-28 06:40:54 +00:00
Chris Lattner
529efc74ad
rename some methods.
...
llvm-svn: 67923
2009-03-28 06:33:19 +00:00
Chris Lattner
23b88b73e1
Cleanups for DeclGroup.
...
llvm-svn: 67922
2009-03-28 06:26:18 +00:00
Anders Carlsson
dca83c4676
Check that the namespace alias doesn't conflict with a previous declaration in this scope.
...
llvm-svn: 67921
2009-03-28 06:23:46 +00:00
Chris Lattner
2f14ce0a74
tidy whitespace.
...
llvm-svn: 67920
2009-03-28 06:13:37 +00:00
Chris Lattner
fcd33a68e4
rename NextDeclInScope to NextDeclInContext, since the pointer
...
points within contexts not scopes.
llvm-svn: 67919
2009-03-28 06:04:26 +00:00
Chris Lattner
b129e28d11
simplify getNextDeclInScope
...
llvm-svn: 67918
2009-03-28 05:59:45 +00:00
Chris Lattner
c0c3dffa3d
reduce indentation, no functionality change.
...
llvm-svn: 67916
2009-03-28 05:44:17 +00:00
Anders Carlsson
9205d55390
Add an ActOnNamespaceAliasDef action and have the parser call it.
...
llvm-svn: 67915
2009-03-28 05:27:17 +00:00
Chris Lattner
1ad4eeb9c7
remove TranslationUnit.
...
llvm-svn: 67914
2009-03-28 04:31:31 +00:00
Chris Lattner
a5adead17b
push more ASTContext goodness out through interfaces that use
...
TranslationUnit
llvm-svn: 67913
2009-03-28 04:27:18 +00:00
Anders Carlsson
72f307a26e
Revert Sebastian's rvalue patch (r67870) since it caused test failures in
...
SemaCXX//overload-member-call.cpp
SemaCXX//overloaded-operator.cpp
SemaTemplate//instantiate-method.cpp
llvm-svn: 67912
2009-03-28 04:17:27 +00:00
Chris Lattner
66918ee148
remove TranslationUnit from ParseAST.
...
llvm-svn: 67911
2009-03-28 04:13:34 +00:00
Chris Lattner
cf16983179
change HandleTranslationUnit to take an ASTContext instead of TranslationUnit
...
llvm-svn: 67910
2009-03-28 04:11:33 +00:00
Ted Kremenek
cd58cced81
Text PathDiagnosticBuilder::getEnclosingStmt() about '?'
...
llvm-svn: 67909
2009-03-28 04:08:14 +00:00
Anders Carlsson
1894f0d499
Parse namespace aliases.
...
llvm-svn: 67908
2009-03-28 04:07:16 +00:00
Chris Lattner
040d4570c7
remove dead ivar.
...
llvm-svn: 67907
2009-03-28 04:05:05 +00:00
Chris Lattner
d070278ec9
simplify away some dead ownership stuff, TranslationUnit is now
...
just a wrapper around ASTContext.
llvm-svn: 67906
2009-03-28 04:00:23 +00:00
Chris Lattner
edf7eb77cf
hoist TranslationUnit some more.
...
llvm-svn: 67905
2009-03-28 03:56:54 +00:00
Chris Lattner
96c339a661
eliminate some wrappers.
...
llvm-svn: 67904
2009-03-28 03:53:02 +00:00
Chris Lattner
f7d9e2ba1c
eliminate ReadASTBitcodeFile
...
llvm-svn: 67903
2009-03-28 03:49:26 +00:00
Chris Lattner
d286851b57
move serialization logic from TranslationUnit to ASTContext.
...
llvm-svn: 67902
2009-03-28 03:45:20 +00:00
Ted Kremenek
b9411565ea
Teach PathDiagnosticBuilder::getEnclosingStmtLocation() about while/if/do/for,
...
etc., so that the "body" is always considered a top-level statement for edge
transitions (even if it is an expression).
llvm-svn: 67901
2009-03-28 03:37:59 +00:00
Chris Lattner
a0b08dcd6b
don't poke at TranslationUnit directly
...
llvm-svn: 67900
2009-03-28 03:29:40 +00:00
Eli Friedman
754d5ac658
Trivial cleanup.
...
llvm-svn: 67899
2009-03-28 03:27:06 +00:00
Eli Friedman
09a9b6e335
Move where block-related variables are initialized so that block
...
types don't get generated when blocks aren't used.
llvm-svn: 67898
2009-03-28 03:24:54 +00:00
Eli Friedman
7c7a0e86ae
Fix silly mistake in test.
...
llvm-svn: 67897
2009-03-28 03:14:28 +00:00
Eli Friedman
9127aa1caf
Minor cleanup.
...
llvm-svn: 67896
2009-03-28 03:10:45 +00:00
Eli Friedman
e381f7e3e9
Misc small fixes/cleanups/comment changes.
...
llvm-svn: 67895
2009-03-28 02:45:41 +00:00
Chris Lattner
5cf49fe587
eliminate ASTConsumer::InitializeTU, all clients are
...
happy with just ASTContext, they don't need a TU.
llvm-svn: 67894
2009-03-28 02:18:25 +00:00
Chris Lattner
8671ca9d97
revert mike's patch which broke test/CodeGen/no-common.c.
...
llvm-svn: 67893
2009-03-28 02:12:08 +00:00
Chris Lattner
a6f4ca2b6f
remove TranslationUnit::OwnsDecls, which is only set, never read.
...
llvm-svn: 67891
2009-03-28 01:44:40 +00:00
Chris Lattner
84bcc4795e
simplify ParseAST by sucking -disable-free handling logic up into
...
clang.cpp
llvm-svn: 67890
2009-03-28 01:37:17 +00:00
Eli Friedman
8b7b1b1aee
Change compound assignment operators to keep track of both the promoted
...
LHS type and the computation result type; this encodes information into
the AST which is otherwise non-obvious. Fix Sema to always come up with the
right answer for both of these types. Fix IRGen and the analyzer to
account for these changes. This fixes PR2601. The approach is inspired
by PR2601 comment 2.
Note that this changes real *= complex in CodeGen from a silent
miscompilation to an explicit error.
I'm not really sure that the analyzer changes are correct, or how to
test them... someone more familiar with the analyzer should check those
changes.
llvm-svn: 67889
2009-03-28 01:22:36 +00:00
Anders Carlsson
0cb4cc106c
Implement access checking for protected base classes.
...
llvm-svn: 67887
2009-03-28 01:09:05 +00:00
Chris Lattner
2b9e7efccd
move StatListener out to top level.
...
llvm-svn: 67886
2009-03-28 00:55:35 +00:00
Douglas Gregor
5c7c9cb678
Make our diagnostics about the obsolete GNU designated-initializer
...
syntax into extension warnings, and provide code-modification hints
showing how to fix the problem.
llvm-svn: 67885
2009-03-28 00:41:23 +00:00
Chris Lattner
a94d139a1f
various cleanups, no functionality change
...
llvm-svn: 67883
2009-03-28 00:16:20 +00:00
Douglas Gregor
c741fb15a5
Better way to free NestedNameSpecifiers. Thanks, Chris
...
llvm-svn: 67880
2009-03-27 23:54:10 +00:00
Douglas Gregor
8aa6bf5b8e
Fix <rdar://problem/6724396>, where we were silently dropping
...
GNU-style array designators, causing us to emit broken initializers.
llvm-svn: 67878
2009-03-27 23:40:29 +00:00
Douglas Gregor
6fcec66525
Perform a very, very ugly song-and-dance number to free the
...
NestedNameSpecifiers without causing problems for the FoldingSet that
contains them.
llvm-svn: 67877
2009-03-27 23:25:45 +00:00
Devang Patel
afc1c1d405
Do not emit debug information for variables while generating optimized code. The llvm optimizer and code generator are not yet ready to support optimized code debugging.
...
llvm-svn: 67876
2009-03-27 23:16:32 +00:00
Douglas Gregor
333489bba3
Initial implementation of parsing, semantic analysis, and template
...
instantiation for C++ typename-specifiers such as
typename T::type
The parsing of typename-specifiers is relatively easy thanks to
annotation tokens. When we see the "typename", we parse the
typename-specifier and produce a typename annotation token. There are
only a few places where we need to handle this. We currently parse the
typename-specifier form that terminates in an identifier, but not the
simple-template-id form, e.g.,
typename T::template apply<U, V>
Parsing of nested-name-specifiers has a similar problem, since at this
point we don't have any representation of a class template
specialization whose template-name is unknown.
Semantic analysis is only partially complete, with some support for
template instantiation that works for simple examples.
llvm-svn: 67875
2009-03-27 23:10:48 +00:00
Ted Kremenek
8f5ec29b91
Add missing header file change.
...
llvm-svn: 67871
2009-03-27 22:00:38 +00:00
Sebastian Redl
ec74096050
Better overload resolution for rvalue references.
...
llvm-svn: 67870
2009-03-27 21:36:42 +00:00
Ted Kremenek
7a621b9747
BugReporter: For control-flow edges from 'if', 'for', 'do', 'while' to
...
successor, using 'getEnclosingStmt()' to have the end location be the top-level
Stmt* enclosing the target Expr*.
llvm-svn: 67869
2009-03-27 21:16:25 +00:00
Eli Friedman
7044b76707
Finish off semantic analysis for regparm, and remove the warning. Also
...
remove a redundant error in CodeGen.
llvm-svn: 67868
2009-03-27 21:06:47 +00:00
Eli Friedman
6ecb5afcd6
Fix test failures caused by reading memory after freeing it. My fix is
...
rather nasty, but I can't think of a better fix off the top of my head.
llvm-svn: 67867
2009-03-27 20:56:17 +00:00
Ted Kremenek
41d865cbaa
BugReporter: PathDiagnosticBuilder::ExecutionContinues now returns a
...
PathDiagnosticLocation.
llvm-svn: 67866
2009-03-27 20:55:39 +00:00
Chris Lattner
8e097198fc
minor cleanups: make getIdentifierNamespace() be a single load
...
instead of a load + large inlined switch.
llvm-svn: 67864
2009-03-27 20:18:19 +00:00
Mike Stump
e5fdfd5930
Fixup -fcommon and -fno-common to be more gcc compatible.
...
llvm-svn: 67863
2009-03-27 20:15:22 +00:00
Chris Lattner
17a1bfa9d8
reduce # const_casts, no functionality change.
...
llvm-svn: 67861
2009-03-27 19:19:59 +00:00
Anders Carlsson
af06b977f9
It is OK to cast to a private base class if the current member belongs to the class that the private base class is a base of:
...
class A {};
class B : private A {
void f(B *b) { A* a = b; }
};
llvm-svn: 67860
2009-03-27 19:01:12 +00:00
Anders Carlsson
93d35acb28
Add a Class field to the base path element structure. This holds the record decl of the class taht the base is a base of.
...
llvm-svn: 67859
2009-03-27 18:54:29 +00:00
Chris Lattner
586c66d5ba
change Decl::DeclCtx to use a PointerIntPair instead of hand bitmangling.
...
llvm-svn: 67858
2009-03-27 18:46:15 +00:00
Fariborz Jahanian
a2d609e2f1
Besides the warning, issue unsupported diagnostics in
...
ir gen. No intended change in functionality.
llvm-svn: 67857
2009-03-27 18:38:55 +00:00
Chris Lattner
839150e0d2
push line markers through -E mode.
...
llvm-svn: 67854
2009-03-27 17:13:49 +00:00
Ted Kremenek
b3e8f6531d
Update "Getting Started" with more current information about 'clang-cc' and 'clang'.
...
llvm-svn: 67850
2009-03-27 16:32:57 +00:00
Ted Kremenek
15b3753858
analyzer plist: For PathDiagnosticControlFlowPieces, now output an array of
...
start-end points, where start and end are source ranges.
llvm-svn: 67847
2009-03-27 15:53:20 +00:00
Ted Kremenek
073da05fa4
Emit aggregate "location" for PathDiagnostic to plist. This fixes <rdar://problem/6729558>.
...
llvm-svn: 67845
2009-03-27 15:31:11 +00:00
Ted Kremenek
d10307debb
Move declaration of 'PathDiagnostic' to the end of PathDiagnostic.h and add PathDiagnostic::getLocation().
...
llvm-svn: 67842
2009-03-27 15:24:36 +00:00
Daniel Dunbar
a21c833d74
Driver: Pass -f[no-]pascal-strings on to clang, even if it has been
...
turned into -m[no-]pascal-strings by the tool chain.
- This still has issue that derived arguments don't propogate "used"
information correctly so spurious "argument unused" warnings will
still show up.
llvm-svn: 67841
2009-03-27 15:22:28 +00:00
Ted Kremenek
33e6f91ec3
PathDiagnostic: replace 'std::list' with 'std::deque'
...
llvm-svn: 67840
2009-03-27 14:59:04 +00:00
Ted Kremenek
b630d5b2c9
Add iterators to PathDiagnosticControlFlowDiagnostic for iterating over the
...
multiple location vectors.
llvm-svn: 67838
2009-03-27 14:54:49 +00:00
Daniel Dunbar
565eefd4ab
Driver: -print-libgcc-file-name was searching wrong path list.
...
llvm-svn: 67837
2009-03-27 14:26:33 +00:00
Anders Carlsson
733d77f1b4
Implement checking for base class access. Right now it's overly conservative but that will change. (Also, protected isn't implemented right now).
...
llvm-svn: 67827
2009-03-27 06:03:27 +00:00
Douglas Gregor
0b08ba44a1
If the user is trying to apply the -> or . member reference operator
...
to a function or function pointer, it's probably because the user
forgot to put in parentheses () to call the function.
llvm-svn: 67826
2009-03-27 06:00:30 +00:00
Zhongxing Xu
17e28b7a54
remove dead code.
...
llvm-svn: 67825
2009-03-27 05:31:12 +00:00
Douglas Gregor
43f1bdbdc3
Update CMake
...
llvm-svn: 67824
2009-03-27 05:18:33 +00:00