Ted Kremenek
fbd2f4006b
Add transfer function support for ObjCForCollectionStmt to LiveVariables.
...
llvm-svn: 59053
2008-11-11 17:42:10 +00:00
Ted Kremenek
9d56e64543
Add CFG support for Objective-C 2.0 fast enumeration 'for' statement:
...
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_7_section_2.html#//apple_ref/doc/uid/TP30001163-CH18-SW3
Need to modify GRExprEngine, LiveVariables, and UninitializedValues to understand this construct.
llvm-svn: 59049
2008-11-11 17:10:00 +00:00
Sebastian Redl
c470476420
Implement C++ 'typeid' parsing and sema.
...
llvm-svn: 59042
2008-11-11 11:37:55 +00:00
Daniel Dunbar
c56e67644f
Add CodeGenFunction::EmitBranch.
...
- Emits an unconditional branch, with extra logic to avoid generating
spurious branches out of dummy blocks.
llvm-svn: 59037
2008-11-11 09:41:28 +00:00
Daniel Dunbar
a0821bf8a2
Fix cmake build, patch from Jjgod Jiang.
...
llvm-svn: 59036
2008-11-11 08:29:24 +00:00
Chris Lattner
5b1964b5f9
short circuit && and || when possible. This substantially reduces
...
the size of the -O0 output on some cases. For example, on expr.c from
176.gcc, it shrinks the .ll file from 43164 to 42835 lines, and removed
references to two external symbols.
llvm-svn: 59034
2008-11-11 07:41:27 +00:00
Chris Lattner
aaaa199ad1
Make codegen smart enough to not emit the dead side of an if whose
...
condition is a constant. This shrinks -O0 codegen by quite a bit
on some cases.
llvm-svn: 59033
2008-11-11 07:24:28 +00:00
Chris Lattner
cd2523b41c
implement debug info for typeof()
...
llvm-svn: 59032
2008-11-11 07:01:36 +00:00
Chris Lattner
8c5dd730ce
Fix PR3031 by silencing follow-on errors in invalid declarations.
...
llvm-svn: 59027
2008-11-11 06:13:16 +00:00
Daniel Dunbar
29ac59f25c
Add CodeGenFunction::EmitDummyBlock for marking places where we make
...
"dummy" blocks (blocks just used to make sure we have a place to dump
code to).
llvm-svn: 59022
2008-11-11 04:34:23 +00:00
Daniel Dunbar
05e629aec6
Remove CodeGenFunction::StartBlock.
...
- Was confusing and only used in one small part of the code.
llvm-svn: 59020
2008-11-11 04:12:31 +00:00
Daniel Dunbar
75283ff38a
Centralize basic block creation in CodeGenFunction::createBasicBlock.
...
- No functionality change.
llvm-svn: 59017
2008-11-11 02:29:29 +00:00
Zhongxing Xu
deb7cac332
Fix StringLiteral print bug.
...
llvm-svn: 59015
2008-11-11 01:36:32 +00:00
Daniel Dunbar
e27d7b5530
Fix Release-Asserts warning.
...
llvm-svn: 59013
2008-11-11 01:16:00 +00:00
Douglas Gregor
cd695e500d
Basic support for taking the address of an overloaded function
...
llvm-svn: 59000
2008-11-10 20:40:00 +00:00
Douglas Gregor
d36ed56c52
Remove an out-of-date FIXME
...
llvm-svn: 58990
2008-11-10 17:01:38 +00:00
Douglas Gregor
49de5340c0
Improve parser error recovery after a constructor initializer
...
llvm-svn: 58989
2008-11-10 16:59:40 +00:00
Douglas Gregor
f52cdd0124
Allow user-defined conversions during reference binding
...
llvm-svn: 58988
2008-11-10 16:14:15 +00:00
Douglas Gregor
1cd48f1645
Don't create a typedef for the injected-class-name
...
llvm-svn: 58987
2008-11-10 14:41:22 +00:00
Douglas Gregor
6cf0806e75
Some cleanups to the declaration/checking of overloaded operators in C++. Thanks to Sebastian for the review
...
llvm-svn: 58986
2008-11-10 13:38:07 +00:00
Zhongxing Xu
bba5c7c629
Add pretty printing to StringRegion.
...
llvm-svn: 58985
2008-11-10 13:05:26 +00:00
Zhongxing Xu
18d6fd45de
Implement RegionStoreManager::RemoveDeadBindings(). This prunes several false warning caused by removal of symbolic constraints. Currently we just mark all symbols live. Further optimization for dead binding removal needed.
...
llvm-svn: 58982
2008-11-10 09:39:04 +00:00
Chris Lattner
b5d21a4d03
don't preserve names on IR instructions. This matches llvm-gcc's behavior and
...
speeds up the compiler by ~8% at -emit-llvm -O0.
llvm-svn: 58977
2008-11-10 06:31:46 +00:00
Chris Lattner
f61801403d
Fix even more bugs in debug info support:
...
1. emit proper debug info for forward decls of structs.
2. emit DW_TAG_member nodes around members of a field like llvm-gcc does.
This slows down debug info generation, but is required for correctness.
llvm-svn: 58973
2008-11-10 06:10:01 +00:00
Chris Lattner
affb37337f
reimplement debug info generation in terms of DebugInfo.h instead of
...
using MachineModuleInfo. This runs at about the same speed as the old
code, but fixes a bunch of bugs and is simpler and shorter.
llvm-svn: 58971
2008-11-10 06:08:34 +00:00
Zhongxing Xu
1c31dbe417
Print integer value instead of raw pointer. This is a hack to be fixed by migrating the output in analyzer to llvm::raw_ostream.
...
llvm-svn: 58965
2008-11-10 05:00:06 +00:00
Chris Lattner
231f7bbdbe
silence a warning from gcc.
...
llvm-svn: 58956
2008-11-10 03:00:37 +00:00
Argyrios Kyrtzidis
9e59b577d8
Introduce ScopedDecl::getLexicalDeclContext() which is different from ScopedDecl::getDeclContext() when there are nested-names.
...
e.g.:
namespace A {
void f(); // SemanticDC (getDeclContext) == LexicalDC (getLexicalDeclContext) == 'namespace A'
}
void A::f(); // SemanticDC == namespace 'A'
// LexicalDC == global namespace
llvm-svn: 58948
2008-11-09 23:41:00 +00:00
Argyrios Kyrtzidis
8ad00b26ee
When a tag has nested-name ('struct foo::bar'), use not 'CurContext' but the context of the nested-name ('foo::').
...
llvm-svn: 58945
2008-11-09 22:53:32 +00:00
Argyrios Kyrtzidis
e02eb2bac2
Simplify handling of nested-names in tags ('struct foo::bar').
...
-Use more of the non nested-name code path.
-Also use the ActOnTagStruct code path.
llvm-svn: 58944
2008-11-09 22:09:58 +00:00
Anders Carlsson
3442f82c2f
Support named operands in inline asm statements.
...
llvm-svn: 58940
2008-11-09 18:54:14 +00:00
Argyrios Kyrtzidis
16ac9be7f0
Implement Sema support for C++ nested-name-specifiers.
...
llvm-svn: 58916
2008-11-08 17:17:31 +00:00
Argyrios Kyrtzidis
32a0379575
Implement support for C++ nested-name-specifiers ('foo::bar::x') in the Parser side.
...
No Sema functionality change, just the signatures of the Action/Sema methods.
llvm-svn: 58913
2008-11-08 16:45:02 +00:00
Argyrios Kyrtzidis
c7e67a04c3
Introduce annotation tokens, a special kind of token, created and used only by the parser to replace a group of tokens with a single token encoding semantic information.
...
Will be fully utilized later for C++ nested-name-specifiers.
llvm-svn: 58911
2008-11-08 16:17:04 +00:00
Sebastian Redl
842ef52ff3
Move named cast helpers out of Sema, as Chris requested. This requirse making a few functions public that weren't before.
...
llvm-svn: 58906
2008-11-08 13:00:26 +00:00
Argyrios Kyrtzidis
0d9ee2eb2e
Revert r58880, it breaks test/SemaCXX/constructor.cpp
...
llvm-svn: 58904
2008-11-08 12:02:25 +00:00
Argyrios Kyrtzidis
13042a4a4a
Use only one constructor for CXXMethodDecl. Keep initialization stuff into one place.
...
llvm-svn: 58902
2008-11-08 11:24:06 +00:00
Daniel Dunbar
238475c8ca
Avoid redundant cast<>s / simplify type dispatch.
...
llvm-svn: 58892
2008-11-08 06:12:46 +00:00
Daniel Dunbar
bbc0af7e37
Support getTypeInfo, getTypeAlign, getTypeSize on const Type*s.
...
- Size/align are not effected by CVR qualifiers.
Support getCanonicalType: const Type* -> const Type*.
llvm-svn: 58891
2008-11-08 05:48:37 +00:00
Daniel Dunbar
8ec8048f93
"Fix" PR3021, don't crash on generating record types when we can't
...
generate the type of a member.
llvm-svn: 58889
2008-11-08 04:42:29 +00:00
Daniel Dunbar
ad0a0f9cd2
Silence a gcc warning.
...
llvm-svn: 58888
2008-11-08 04:28:37 +00:00
Zhongxing Xu
3d43015bc7
Add a boilerplate for out-of-bound array checking. This has no real function currently.
...
llvm-svn: 58886
2008-11-08 03:45:42 +00:00
Argyrios Kyrtzidis
19b66a5e32
In a declarator, consider an identifier a constructor only if it is followed by '('.
...
Previously:
class C {
int C; // Declarator::SetConstructor was called here.
};
llvm-svn: 58880
2008-11-08 01:09:16 +00:00
Sebastian Redl
015085fafa
Greatly improve static_cast diagnostics
...
llvm-svn: 58873
2008-11-07 23:29:29 +00:00
Douglas Gregor
a1f013e8ed
Initial, partially-baked support for implicit user-defined conversions by conversion functions
...
llvm-svn: 58870
2008-11-07 22:36:19 +00:00
Argyrios Kyrtzidis
e442635c37
Changes in preparation for nested-name-specifiers.
...
-When parsing declarators, don't depend on "CurScope->isCXXClassScope() == true" for constructors/destructors
-For C++ member declarations, don't depend on "Declarator.getContext() == Declarator::MemberContext"
llvm-svn: 58866
2008-11-07 22:02:30 +00:00
Douglas Gregor
dbc5daf058
Parsing, ASTs, and semantic analysis for the declaration of conversion
...
functions in C++, e.g.,
struct X {
operator bool() const;
};
Note that these conversions don't actually do anything, since we don't
yet have the ability to use them for implicit or explicit conversions.
llvm-svn: 58860
2008-11-07 20:08:42 +00:00
Argyrios Kyrtzidis
56fa31bc87
Assert that Parser::MaybeParseOperatorFunctionId is called when token is kw_operator, and replace ExpectAndConsume for the 'operator' token with a ConsumeToken.
...
llvm-svn: 58855
2008-11-07 15:54:02 +00:00
Douglas Gregor
450c75a15f
Separate the parsing of type-specifiers from other declaration specifiers, so that we can parse a C++ type-specifier-seq
...
llvm-svn: 58854
2008-11-07 15:42:26 +00:00
Argyrios Kyrtzidis
3175fa5139
Properly deserialize ParamInfo of FunctionDecl.
...
When allocating an array for ParamInfo, the "decl->getNumParams()" call was used, but this will return 0 since it checks ParamInfo (which isn't yet defined and is null).
The result was that ParamInfo got an array of zero length to hold the ParmVarDecls.
llvm-svn: 58850
2008-11-07 14:22:23 +00:00