Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Try to not emit the dead side of ?: if the condition is a constant. | Chris Lattner | 2008-11-11 | 1 | -4/+21 |
| | | | | llvm-svn: 59061 | ||||
* | Introduce a single AST node SizeOfAlignOfExpr for all sizeof and alignof ↵ | Sebastian Redl | 2008-11-11 | 16 | -232/+167 |
| | | | | | | expressions, both of values and types. llvm-svn: 59057 | ||||
* | Add transfer function support for ObjCForCollectionStmt to LiveVariables. | Ted Kremenek | 2008-11-11 | 1 | -1/+17 |
| | | | | llvm-svn: 59053 | ||||
* | Add CFG support for Objective-C 2.0 fast enumeration 'for' statement: | Ted Kremenek | 2008-11-11 | 1 | -13/+77 |
| | | | | | | | | 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 | ||||
* | Implement C++ 'typeid' parsing and sema. | Sebastian Redl | 2008-11-11 | 12 | -7/+169 |
| | | | | llvm-svn: 59042 | ||||
* | Add CodeGenFunction::EmitBranch. | Daniel Dunbar | 2008-11-11 | 6 | -41/+40 |
| | | | | | | | - Emits an unconditional branch, with extra logic to avoid generating spurious branches out of dummy blocks. llvm-svn: 59037 | ||||
* | Fix cmake build, patch from Jjgod Jiang. | Daniel Dunbar | 2008-11-11 | 1 | -0/+2 |
| | | | | llvm-svn: 59036 | ||||
* | short circuit && and || when possible. This substantially reduces | Chris Lattner | 2008-11-11 | 4 | -28/+64 |
| | | | | | | | | 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 | ||||
* | Make codegen smart enough to not emit the dead side of an if whose | Chris Lattner | 2008-11-11 | 1 | -5/+49 |
| | | | | | | | condition is a constant. This shrinks -O0 codegen by quite a bit on some cases. llvm-svn: 59033 | ||||
* | implement debug info for typeof() | Chris Lattner | 2008-11-11 | 1 | -6/+9 |
| | | | | llvm-svn: 59032 | ||||
* | Fix PR3031 by silencing follow-on errors in invalid declarations. | Chris Lattner | 2008-11-11 | 2 | -3/+5 |
| | | | | llvm-svn: 59027 | ||||
* | Add CodeGenFunction::EmitDummyBlock for marking places where we make | Daniel Dunbar | 2008-11-11 | 3 | -7/+16 |
| | | | | | | | "dummy" blocks (blocks just used to make sure we have a place to dump code to). llvm-svn: 59022 | ||||
* | Remove CodeGenFunction::StartBlock. | Daniel Dunbar | 2008-11-11 | 2 | -14/+4 |
| | | | | | | - Was confusing and only used in one small part of the code. llvm-svn: 59020 | ||||
* | Centralize basic block creation in CodeGenFunction::createBasicBlock. | Daniel Dunbar | 2008-11-11 | 9 | -68/+73 |
| | | | | | | - No functionality change. llvm-svn: 59017 | ||||
* | Fix StringLiteral print bug. | Zhongxing Xu | 2008-11-11 | 1 | -1/+17 |
| | | | | llvm-svn: 59015 | ||||
* | Fix Release-Asserts warning. | Daniel Dunbar | 2008-11-11 | 1 | -0/+1 |
| | | | | llvm-svn: 59013 | ||||
* | Basic support for taking the address of an overloaded function | Douglas Gregor | 2008-11-10 | 5 | -5/+147 |
| | | | | llvm-svn: 59000 | ||||
* | Remove an out-of-date FIXME | Douglas Gregor | 2008-11-10 | 1 | -1/+0 |
| | | | | llvm-svn: 58990 | ||||
* | Improve parser error recovery after a constructor initializer | Douglas Gregor | 2008-11-10 | 1 | -2/+22 |
| | | | | llvm-svn: 58989 | ||||
* | Allow user-defined conversions during reference binding | Douglas Gregor | 2008-11-10 | 1 | -2/+62 |
| | | | | llvm-svn: 58988 | ||||
* | Don't create a typedef for the injected-class-name | Douglas Gregor | 2008-11-10 | 1 | -14/+5 |
| | | | | llvm-svn: 58987 | ||||
* | Some cleanups to the declaration/checking of overloaded operators in C++. ↵ | Douglas Gregor | 2008-11-10 | 3 | -95/+43 |
| | | | | | | Thanks to Sebastian for the review llvm-svn: 58986 | ||||
* | Add pretty printing to StringRegion. | Zhongxing Xu | 2008-11-10 | 1 | -0/+4 |
| | | | | llvm-svn: 58985 | ||||
* | Implement RegionStoreManager::RemoveDeadBindings(). This prunes several ↵ | Zhongxing Xu | 2008-11-10 | 1 | -4/+20 |
| | | | | | | 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 | ||||
* | don't preserve names on IR instructions. This matches llvm-gcc's behavior and | Chris Lattner | 2008-11-10 | 1 | -1/+2 |
| | | | | | | speeds up the compiler by ~8% at -emit-llvm -O0. llvm-svn: 58977 | ||||
* | Fix even more bugs in debug info support: | Chris Lattner | 2008-11-10 | 1 | -5/+0 |
| | | | | | | | | | 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 | ||||
* | reimplement debug info generation in terms of DebugInfo.h instead of | Chris Lattner | 2008-11-10 | 3 | -722/+410 |
| | | | | | | | 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 | ||||
* | Print integer value instead of raw pointer. This is a hack to be fixed by ↵ | Zhongxing Xu | 2008-11-10 | 1 | -3/+1 |
| | | | | | | migrating the output in analyzer to llvm::raw_ostream. llvm-svn: 58965 | ||||
* | silence a warning from gcc. | Chris Lattner | 2008-11-10 | 1 | -0/+1 |
| | | | | llvm-svn: 58956 | ||||
* | Introduce ScopedDecl::getLexicalDeclContext() which is different from ↵ | Argyrios Kyrtzidis | 2008-11-09 | 4 | -21/+64 |
| | | | | | | | | | | | | | 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 | ||||
* | When a tag has nested-name ('struct foo::bar'), use not 'CurContext' but the ↵ | Argyrios Kyrtzidis | 2008-11-09 | 1 | -15/+19 |
| | | | | | | context of the nested-name ('foo::'). llvm-svn: 58945 | ||||
* | Simplify handling of nested-names in tags ('struct foo::bar'). | Argyrios Kyrtzidis | 2008-11-09 | 2 | -59/+55 |
| | | | | | | | -Use more of the non nested-name code path. -Also use the ActOnTagStruct code path. llvm-svn: 58944 | ||||
* | Support named operands in inline asm statements. | Anders Carlsson | 2008-11-09 | 1 | -6/+51 |
| | | | | llvm-svn: 58940 | ||||
* | Implement Sema support for C++ nested-name-specifiers. | Argyrios Kyrtzidis | 2008-11-08 | 6 | -44/+344 |
| | | | | llvm-svn: 58916 | ||||
* | Implement support for C++ nested-name-specifiers ('foo::bar::x') in the ↵ | Argyrios Kyrtzidis | 2008-11-08 | 11 | -79/+392 |
| | | | | | | | | Parser side. No Sema functionality change, just the signatures of the Action/Sema methods. llvm-svn: 58913 | ||||
* | Introduce annotation tokens, a special kind of token, created and used only ↵ | Argyrios Kyrtzidis | 2008-11-08 | 1 | -0/+24 |
| | | | | | | | | 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 | ||||
* | Move named cast helpers out of Sema, as Chris requested. This requirse ↵ | Sebastian Redl | 2008-11-08 | 2 | -141/+148 |
| | | | | | | making a few functions public that weren't before. llvm-svn: 58906 | ||||
* | Revert r58880, it breaks test/SemaCXX/constructor.cpp | Argyrios Kyrtzidis | 2008-11-08 | 1 | -2/+1 |
| | | | | llvm-svn: 58904 | ||||
* | Use only one constructor for CXXMethodDecl. Keep initialization stuff into ↵ | Argyrios Kyrtzidis | 2008-11-08 | 1 | -1/+1 |
| | | | | | | one place. llvm-svn: 58902 | ||||
* | Avoid redundant cast<>s / simplify type dispatch. | Daniel Dunbar | 2008-11-08 | 2 | -45/+34 |
| | | | | llvm-svn: 58892 | ||||
* | Support getTypeInfo, getTypeAlign, getTypeSize on const Type*s. | Daniel Dunbar | 2008-11-08 | 1 | -6/+8 |
| | | | | | | | | - Size/align are not effected by CVR qualifiers. Support getCanonicalType: const Type* -> const Type*. llvm-svn: 58891 | ||||
* | "Fix" PR3021, don't crash on generating record types when we can't | Daniel Dunbar | 2008-11-08 | 1 | -2/+6 |
| | | | | | | generate the type of a member. llvm-svn: 58889 | ||||
* | Silence a gcc warning. | Daniel Dunbar | 2008-11-08 | 1 | -1/+1 |
| | | | | llvm-svn: 58888 | ||||
* | Add a boilerplate for out-of-bound array checking. This has no real function ↵ | Zhongxing Xu | 2008-11-08 | 1 | -0/+22 |
| | | | | | | currently. llvm-svn: 58886 | ||||
* | In a declarator, consider an identifier a constructor only if it is followed ↵ | Argyrios Kyrtzidis | 2008-11-08 | 1 | -1/+2 |
| | | | | | | | | | | | | by '('. Previously: class C { int C; // Declarator::SetConstructor was called here. }; llvm-svn: 58880 | ||||
* | Greatly improve static_cast diagnostics | Sebastian Redl | 2008-11-07 | 2 | -67/+129 |
| | | | | llvm-svn: 58873 | ||||
* | Initial, partially-baked support for implicit user-defined conversions by ↵ | Douglas Gregor | 2008-11-07 | 3 | -3/+144 |
| | | | | | | conversion functions llvm-svn: 58870 | ||||
* | Changes in preparation for nested-name-specifiers. | Argyrios Kyrtzidis | 2008-11-07 | 2 | -31/+44 |
| | | | | | | | -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 | ||||
* | Parsing, ASTs, and semantic analysis for the declaration of conversion | Douglas Gregor | 2008-11-07 | 7 | -7/+267 |
| | | | | | | | | | | | | | 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 | ||||
* | Assert that Parser::MaybeParseOperatorFunctionId is called when token is ↵ | Argyrios Kyrtzidis | 2008-11-07 | 1 | -3/+2 |
| | | | | | | kw_operator, and replace ExpectAndConsume for the 'operator' token with a ConsumeToken. llvm-svn: 58855 |