| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
compound, case, default, if, switch, and break statements.
llvm-svn: 69329
|
| |
|
|
|
|
| |
declaring a static Block 'const'.
llvm-svn: 69306
|
| |
|
|
| |
llvm-svn: 69251
|
| |
|
|
| |
llvm-svn: 69245
|
| |
|
|
| |
llvm-svn: 69244
|
| |
|
|
| |
llvm-svn: 69240
|
| |
|
|
|
|
| |
__string/__weak attributes.
llvm-svn: 69229
|
| |
|
|
| |
llvm-svn: 69186
|
| |
|
|
| |
llvm-svn: 69172
|
| |
|
|
|
|
| |
anonymous structs or unions. Fixes PR3778.
llvm-svn: 69153
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Strip off extra parens when looking for casts.
- Change the location info to point at the cast (instead of the
assignment).
For example, on
int *b;
#define a ((void*) b)
void f0() {
a = 10;
}
we now emit:
/tmp/t.c:4:3: error: assignment to cast is illegal, lvalue casts are not supported
a = 10;
^ ~
/tmp/t.c:2:12: note: instantiated from:
#define a ((void*) b)
~^~~~~~~~~~
instead of:
/tmp/t.c:4:5: error: expression is not assignable
a = 10;
~ ^
llvm-svn: 69114
|
| |
|
|
|
|
| |
extension.
llvm-svn: 69100
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
it like 'id').
This fixes <rdar://problem/6782722> XCDataTipsManager.m registers, observes notifications in class methods.
The radar above is the result of clang typing 'self' in a class method as 'Class', which results in some spurious warnings (GCC types 'self' in a class method as 'id').
I considered changing the type of 'self' to 'id' (to conform to GCC), however this resulted in *many* test cases breaking. In addition, I really prefer a more strongly typed 'self'.
All in all, this is the least obtrusive fix I could find for removing the spurious warnings (though we do loose some valid warnings).
llvm-svn: 69041
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Exposed quite a few Sema issues and a CodeGen crash.
- See FIXMEs in test case, and in SemaDecl.cpp (PR3983).
I'm skeptical that __private_extern__ should actually be a storage
class value. I think that __private_extern__ basically amounts to
extern A __attribute__((visibility("hidden")))
and would be better off handled (a) as that, or (b) with an extra bit
in the VarDecl.
llvm-svn: 69020
|
| |
|
|
|
|
| |
- No functionality change.
llvm-svn: 69019
|
| |
|
|
| |
llvm-svn: 69007
|
| |
|
|
|
|
| |
This was exposed as a result of something else that was recently fixed.
llvm-svn: 69004
|
| |
|
|
|
|
| |
by making ASTContext::isObjCObjectPointerType accept typedefs of id.
llvm-svn: 68931
|
| |
|
|
|
|
| |
the attribute set on them.
llvm-svn: 68844
|
| |
|
|
|
|
|
| |
cleanup. Aside from a minor tweak to the PCH file format, no
functionality change.
llvm-svn: 68793
|
| |
|
|
| |
llvm-svn: 68769
|
| |
|
|
|
|
| |
Expr as an LValue.
llvm-svn: 68763
|
| |
|
|
| |
llvm-svn: 68762
|
| |
|
|
| |
llvm-svn: 68761
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
de-serialization of abstract syntax trees.
PCH support serializes the contents of the abstract syntax tree (AST)
to a bitstream. When the PCH file is read, declarations are serialized
as-needed. For example, a declaration of a variable "x" will be
deserialized only when its VarDecl can be found by a client, e.g.,
based on name lookup for "x" or traversing the entire contents of the
owner of "x".
This commit provides the framework for serialization and (lazy)
deserialization, along with support for variable and typedef
declarations (along with several kinds of types). More
declarations/types, along with important auxiliary structures (source
manager, preprocessor, etc.), will follow.
llvm-svn: 68732
|
| |
|
|
| |
llvm-svn: 68729
|
| |
|
|
|
|
| |
No functionality change (really).
llvm-svn: 68726
|
| |
|
|
|
|
|
|
| |
StoredDeclsMap, instead of using the it's-an-array-or-its-a-map
trick. I'll verify that performance isn't impacted later; for now, I
need the common representation.
llvm-svn: 68715
|
| |
|
|
| |
llvm-svn: 68680
|
| |
|
|
| |
llvm-svn: 68646
|
| |
|
|
| |
llvm-svn: 68634
|
| |
|
|
|
|
|
| |
value of its subexpressions unless it is a comma (in which case it doesn't
consume the left subexpression).
llvm-svn: 68628
|
| |
|
|
| |
llvm-svn: 68586
|
| |
|
|
| |
llvm-svn: 68548
|
| |
|
|
| |
llvm-svn: 68533
|
| |
|
|
|
|
|
|
| |
Simplify the addition of a case statement to a switch.
Fix -print-stats for attribute-qualified types.
llvm-svn: 68522
|
| |
|
|
|
|
| |
had too many false positives in the analyzer.
llvm-svn: 68492
|
| |
|
|
|
|
| |
operand. This matches llvm-gcc and fixes PR3908.
llvm-svn: 68371
|
| |
|
|
| |
llvm-svn: 68346
|
| |
|
|
|
|
| |
objc's continuation class.
llvm-svn: 68339
|
| |
|
|
| |
llvm-svn: 68301
|
| |
|
|
|
|
|
| |
class which was exposed by implementation of
objc2's nonfragile abi code gen.
llvm-svn: 68259
|
| |
|
|
|
|
| |
class.
llvm-svn: 68234
|
| |
|
|
| |
llvm-svn: 68232
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
heuristics to determine when it's useful to desugar a type for display
to the user. Introduce two C++-specific heuristics:
- For a qualified type (like "foo::bar"), only produce a new
desugred type if desugaring the qualified type ("bar", in this
case) produces something interesting. For example, if "foo::bar"
refers to a class named "bar", don't desugar. However, if
"foo::bar" refers to a typedef of something else, desugar to that
something else. This gives some useful desugaring such as
"foo::bar (aka 'int')".
- Don't desugar class template specialization types like
"basic_string<char>" down to their underlying "class
basic_string<char, char_traits<char>, allocator<char>>, etc.";
it's better just to leave such types alone.
Update diagnostics.html with some discussion and examples of type
preservation in C++, showing qualified names and class template
specialization types.
llvm-svn: 68207
|
| |
|
|
|
|
|
| |
should only be an error if that value is consumed. This fix was largely
accomplished by moving 'isConsumedExpr' back to ParentMap.
llvm-svn: 68195
|
| |
|
|
|
|
|
|
| |
types. It is no longer needed now that the code generator
re-lays-out interfaces if they are defines after being laid out
from a forward decl.
llvm-svn: 68194
|
| |
|
|
|
|
| |
distinguish between the true and false branches for path-sensitive analyses.
llvm-svn: 68185
|
| |
|
|
| |
llvm-svn: 68171
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
specifiers that terminate in a simple-template-id, e.g.,
typename MetaFun::template apply<T1, T2>
Also, implement template instantiation for dependent
nested-name-specifiers that involve unresolved identifiers, e.g.,
typename T::type::type
llvm-svn: 68166
|