| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).
llvm-svn: 138985
|
| |
|
|
|
|
|
|
|
| |
LangOptions, rather than making distinct copies of
LangOptions. Granted, LangOptions doesn't actually get modified, but
this will eventually make it easier to construct ASTContext and
Preprocessor before we know all of the LangOptions.
llvm-svn: 138959
|
| |
|
|
|
|
| |
// rdar://9362887.
llvm-svn: 138412
|
| |
|
|
| |
llvm-svn: 138235
|
| |
|
|
| |
llvm-svn: 137896
|
| |
|
|
| |
llvm-svn: 137585
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Microsoft mode. A new AST node is introduced: ClassScopeFunctionSpecialization. This node holds a FunctionDecl that is not yet specialized; then during the class template instantiation the ClassScopeFunctionSpecialization will spawn the actual function specialization.
Example:
template <class T>
class A {
public:
template <class U> void f(U p) { }
template <> void f(int p) { } // <== class scope specialization
};
This extension is necessary to parse MSVC standard C++ headers, MFC and ATL code.
BTW, with this feature in, clang can parse (-fsyntax-only) all the MSVC 2010 standard header files without any error.
llvm-svn: 137573
|
| |
|
|
|
|
| |
attribute of a property. patch by Remy Demarest fixes it.
llvm-svn: 137509
|
| |
|
|
|
|
|
| |
in the AST format, which are built lazily by the ASTContext when
requested.
llvm-svn: 137437
|
| |
|
|
|
|
|
| |
AST file format, lazily generating the actual declaration in
ASTContext as needed.
llvm-svn: 137434
|
| |
|
|
|
|
|
| |
AST file format, lazily generating the actual declaration in
ASTContext as needed.
llvm-svn: 137431
|
| |
|
|
|
|
|
|
|
| |
type over into the AST context, then make that declaration a
predefined declaration in the AST format. This ensures that different
AST files will at least agree on the (global) declaration ID for 'id',
and eliminates one of the "special" types in the AST file format.
llvm-svn: 137429
|
| |
|
|
|
|
|
|
|
| |
ASTContext with accessors/mutators. The only functional change is that
the AST writer won't bother writing the id/Class/SEL redefinition type
if it hasn't been explicitly set; previously, it ended up being
written as a synonym for the built-in id/Class/SEL.
llvm-svn: 137349
|
| |
|
|
|
|
|
|
| |
enumerations from the ASTContext into CodeGen, so that we don't need
to serialize it to AST files. This appears to be the last of the
low-hanging fruit for SpecialTypes.
llvm-svn: 137124
|
| |
|
|
|
|
|
| |
types to AST files; they're only used by debug info generation anyway,
and shouldn't ever exist in the AST anyway.
llvm-svn: 137122
|
| |
|
|
|
|
|
|
| |
layout of a constant NSString from the ASTContext over to CodeGen,
since this is solely CodeGen's responsibility. Eliminates one of the
unnecessary "special" types that we serialize.
llvm-svn: 137121
|
| |
|
|
| |
llvm-svn: 136944
|
| |
|
|
| |
llvm-svn: 136929
|
| |
|
|
| |
llvm-svn: 136907
|
| |
|
|
|
|
| |
llvm::capacity_in_bytes().
llvm-svn: 136235
|
| |
|
|
|
|
| |
the preferred alignment. Thus, revert r135934, r135935, and r135940.
llvm-svn: 136062
|
| |
|
|
|
|
|
|
|
| |
care of
FIXME: Override "preferred align" for double and long long for ARM apcs-gnu ABI.
Also part of rdar://9802874
llvm-svn: 135940
|
| |
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
| |
|
|
|
|
|
|
|
| |
This was previously not-const only because it has to lazily construct a chain
of ivars the first time it is called (and after the chain is invalidated).
In practice, all the clients were just const_casting their const Decls;
all those now-unnecessary const_casts have been removed.
llvm-svn: 135741
|
| |
|
|
|
|
| |
Fixes PR10233!
llvm-svn: 135377
|
| |
|
|
| |
llvm-svn: 135010
|
| |
|
|
|
|
| |
Make it also available in ObjC++ propeties. // rdar://9740328
llvm-svn: 135001
|
| |
|
|
|
|
| |
code so that they only occur in a single place. No functionality change.
llvm-svn: 134961
|
| |
|
|
|
|
| |
so roll it out.
llvm-svn: 134638
|
| |
|
|
|
|
| |
function. Fixes PR10233!
llvm-svn: 134634
|
| |
|
|
| |
llvm-svn: 134578
|
| |
|
|
|
|
| |
fprintf. There is more cleanup to be done to the AST stats printing...
llvm-svn: 134373
|
| |
|
|
|
|
|
|
| |
-Remove unnecessary 'return'.
-Remove unnecessary 'if' check (llvm_unreachable make sure attrStr will be non-null)
-Add a test of transferring ownership to a reference cast type.
llvm-svn: 134285
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
ownership, if the
cast type has no ownership specified, implicitly "transfer" the ownership of the cast'ed type
to the cast type:
id x;
static_cast<NSString**>(&x); // Casting as (__strong NSString**).
This currently only works for C++ named casts, C casts to follow.
llvm-svn: 134273
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
type/expression/template argument/etc. is instantiation-dependent if
it somehow involves a template parameter, even if it doesn't meet the
requirements for the more common kinds of dependence (dependent type,
type-dependent expression, value-dependent expression).
When we see an instantiation-dependent type, we know we always need to
perform substitution into that instantiation-dependent type. This
keeps us from short-circuiting evaluation in places where we
shouldn't, and lets us properly implement C++0x [temp.type]p2.
In theory, this would also allow us to properly mangle
instantiation-dependent-but-not-dependent decltype types per the
Itanium C++ ABI, but we aren't quite there because we still mangle
based on the canonical type in cases like, e.g.,
template<unsigned> struct A { };
template<typename T>
void f(A<sizeof(sizeof(decltype(T() + T())))>) { }
template void f<int>(A<sizeof(sizeof(int))>);
and therefore get the wrong answer.
llvm-svn: 134225
|
| |
|
|
|
|
|
|
|
|
|
| |
for a template template parameter.
Uses to follow.
I've also made the uniquing of SubstTemplateTemplateParmPacks
use a ContextualFoldingSet as a minor space efficiency.
llvm-svn: 134137
|
| |
|
|
|
|
|
| |
a vector for collection. Use iterators where needed instead.
// rdar://6817577
llvm-svn: 134015
|
| |
|
|
| |
llvm-svn: 134011
|
| |
|
|
| |
llvm-svn: 133312
|
| |
|
|
|
|
|
|
|
|
| |
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
were just punting on template argument deduction for a number of type
nodes. Most of them, obviously, didn't matter.
As a consequence of this, make extended vector types (via the
ext_vector_type attribute) actually work properly for several
important cases:
- If the attribute appears in a type-id (i.e, not attached to a
typedef), actually build a proper vector type
- Build ExtVectorType whenever the size is constant; previously, we
were building DependentSizedExtVectorType when the size was constant
but the type was dependent, which makes no sense at all.
- Teach template argument deduction to handle
ExtVectorType/DependentSizedExtVectorType.
llvm-svn: 133060
|
| |
|
|
| |
llvm-svn: 132878
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
parameter types to be ill-formed. However, it relies on the
completeness of method parameter types when producing metadata, e.g.,
for a protocol, leading IR generating to crash in such cases.
Since there's no real way to tighten down the semantics of Objective-C
here without breaking existing code, do something safe but lame:
suppress the generation of metadata when this happens.
Fixes <rdar://problem/9123036>.
llvm-svn: 132171
|
| |
|
|
|
|
|
|
| |
behind implicit moves. We now correctly identify move constructors and
assignment operators and update bits on the record correctly. Generation
of implicit moves (declarations or definitions) is not yet supported.
llvm-svn: 132080
|
| |
|
|
| |
llvm-svn: 132064
|
| |
|
|
|
|
|
|
| |
type that turns one type into another. This is used as the basis to
implement __underlying_type properly - with TypeSourceInfo and proper
behavior in the face of templates.
llvm-svn: 132017
|
| |
|
|
|
|
|
| |
function type. Educate template argument deduction thusly, fixing
PR9974 / <rdar://problem/9479155>.
llvm-svn: 131811
|
| |
|
|
| |
llvm-svn: 131446
|
| |
|
|
|
|
| |
131365 caused PR9927.
llvm-svn: 131401
|
| |
|
|
| |
llvm-svn: 131377
|