| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
rdar://11220251
llvm-svn: 154893
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have a new flavor of exception specification, EST_Uninstantiated. A function
type with this exception specification carries a pointer to a FunctionDecl, and
the exception specification for that FunctionDecl is instantiated (if needed)
and used in the place of the function type's exception specification.
When a function template declaration with a non-trivial exception specification
is instantiated, the specialization's exception specification is set to this
new 'uninstantiated' kind rather than being instantiated immediately.
Expr::CanThrow has migrated onto Sema, so it can instantiate exception specs
on-demand. Also, any odr-use of a function triggers the instantiation of its
exception specification (the exception specification could be needed by IRGen).
In passing, fix two places where a DeclRefExpr was created but the corresponding
function was not actually marked odr-used. We used to get away with this, but
don't any more.
Also fix a bug where instantiating an exception specification which refers to
function parameters resulted in a crash. We still have the same bug in default
arguments, which I'll be looking into next.
This, plus a tiny patch to fix libstdc++'s common_type, is enough for clang to
parse (and, in very limited testing, support) all of libstdc++4.7's standard
headers.
llvm-svn: 154886
|
| |
|
|
|
|
|
| |
EmitFinalDestCopy (and thus pass EmitAggregateCopy the correct alignment).
rdar://11220251
llvm-svn: 154883
|
| |
|
|
| |
llvm-svn: 154880
|
| |
|
|
|
|
| |
block literal is imported. // rdar://11259664
llvm-svn: 154876
|
| |
|
|
|
|
|
| |
cast to/from block pointer types. // rdar://11202764
Also, many more modern translator tests.
llvm-svn: 154869
|
| |
|
|
|
|
| |
Along with it, fix a couple of other corner cases and add more tests.
llvm-svn: 154866
|
| |
|
|
|
|
|
| |
type for rewriter project will be BoolTy.
// rdar://11231426.
llvm-svn: 154861
|
| |
|
|
| |
llvm-svn: 154851
|
| |
|
|
|
|
| |
constant-folding relational comparisons safely in case the user is using -fwrapv or equivalent.
llvm-svn: 154849
|
| |
|
|
| |
llvm-svn: 154846
|
| |
|
|
|
|
|
|
|
| |
exception specifications on member functions until after the closing
'}' for the containing class. This allows, for example, a member
function to throw an instance of its own class. Fixes PR12564 and a
fairly embarassing oversight in our C++98/03 support.
llvm-svn: 154844
|
| |
|
|
|
|
| |
ConsiderGlobalVisibility. No functionality change.
llvm-svn: 154843
|
| |
|
|
|
|
| |
up to this yet.
llvm-svn: 154835
|
| |
|
|
| |
llvm-svn: 154828
|
| |
|
|
| |
llvm-svn: 154824
|
| |
|
|
| |
llvm-svn: 154814
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the declaration of a non-static member function after the
(optional) cv-qualifier-seq, which in practice means in the exception
specification and late-specified return type.
The new scheme here used to manage 'this' outside of a member function
scope is more general than the Scope-based mechanism previously used
for non-static data member initializers and late-parsesd attributes,
because it can also handle the cv-qualifiers on the member
function. Note, however, that a separate pass is required for static
member functions to determine whether 'this' was used, because we
might not know that we have a static function until after declaration
matching.
Finally, this introduces name mangling for 'this' and for the implicit
'this', which is intended to match GCC's mangling. Independent
verification for the new mangling test case would be appreciated.
Fixes PR10036 and PR12450.
llvm-svn: 154799
|
| |
|
|
|
|
| |
uncommon cases. <rdar://problem/10962435>.
llvm-svn: 154794
|
| |
|
|
| |
llvm-svn: 154792
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
lvalue during constant expression evaluation.
Otherwise we would get this error in C++11 mode (because of a recent change):
error: non-type template argument of type 'const _GUID *' is not a constant expression
For code like:
template <const GUID* g = &__uuidof(struct_with_uuid)>
class COM_CLASS { };
llvm-svn: 154790
|
| |
|
|
| |
llvm-svn: 154789
|
| |
|
|
|
|
|
|
|
|
|
| |
includes a patch from Matthias Kleine with a regression testcase!
Adds a new iterator 'data_iterator' to OnDiskHashTable which doesn't try to
reconstruct the external_key from the internal_key, which is useful for traits
that don't store enough information to do that mapping in their key. Also
deletes the 'item_iterator' from OnDiskHashTable as dead code.
llvm-svn: 154784
|
| |
|
|
|
|
| |
builtin_shufflevector instead of specific builtins. Old builtins will be removed from llvm now that vpermq/vpermpd are supported by shuffle lowering code.
llvm-svn: 154777
|
| |
|
|
| |
llvm-svn: 154774
|
| |
|
|
| |
llvm-svn: 154767
|
| |
|
|
|
|
|
|
| |
delete.
It would be nice to use OwningPtr here, but DeclContextInfo is stored in a DenseMap.
llvm-svn: 154763
|
| |
|
|
| |
llvm-svn: 154762
|
| |
|
|
| |
llvm-svn: 154760
|
| |
|
|
|
|
|
|
|
| |
initialize an array of unsigned char. Outside C++11 mode, this bug was benign,
and just resulted in us emitting a constant which was double the required
length, padded with 0s. In C++11, it resulted in us generating an array whose
first element was something like i8 ptrtoint ([n x i8]* @str to i8).
llvm-svn: 154756
|
| |
|
|
|
|
| |
definition for protocols static. // rdar://11248048
llvm-svn: 154753
|
| |
|
|
|
|
| |
I am working on a cleaner fix, but this gets the case in PR12552 passing.
llvm-svn: 154749
|
| |
|
|
| |
llvm-svn: 154748
|
| |
|
|
| |
llvm-svn: 154747
|
| |
|
|
| |
llvm-svn: 154746
|
| |
|
|
|
|
|
|
|
| |
thinking of generalizing it to be able to specify other freedoms beyond accuracy
(such as that NaN's don't have to be respected). I'd like the 3.1 release (the
first one with this metadata) to have the more generic name already rather than
having to auto-upgrade it in 3.2.
llvm-svn: 154745
|
| |
|
|
|
|
|
|
|
|
| |
Instead, make it the allocation function's responsibility to add them
to a list and clear it when a top-level decl is finished.
This plugs leakage of TemplateAnnotationIds. DelayedCleanupPool is
ugly and unused, remove it.
llvm-svn: 154743
|
| |
|
|
| |
llvm-svn: 154739
|
| |
|
|
|
|
| |
manual deletion.
llvm-svn: 154736
|
| |
|
|
|
|
|
|
|
| |
attached. Since we do not support any attributes which appertain to a statement
(yet), testing of this is necessarily quite minimal.
Patch by Alexander Kornienko!
llvm-svn: 154723
|
| |
|
|
|
|
|
| |
This manual deleting is error-prone, but we can't just put an OwningPtr in a
std::map :(
llvm-svn: 154707
|
| |
|
|
|
|
|
|
| |
jump into these scopes, and the cleanup-entering code sometimes wants
to do some operations first (e.g. a GEP), which can leave us with
unparented IR.
llvm-svn: 154684
|
| |
|
|
|
|
|
| |
__typeof which is a regression by reverting
r154360. // rdar://11233924
llvm-svn: 154679
|
| |
|
|
| |
llvm-svn: 154678
|
| |
|
|
| |
llvm-svn: 154676
|
| |
|
|
| |
llvm-svn: 154672
|
| |
|
|
|
|
|
|
| |
call to 'super' use __rw_objc_super as type of the
'super' meta-data instead of objc_super.
// rdar://11239894
llvm-svn: 154670
|
| |
|
|
|
|
| |
expressions without their OpaqueValueExprs
llvm-svn: 154669
|
| |
|
|
|
|
| |
out of the tree and use the tooling infrastructure.
llvm-svn: 154668
|
| |
|
|
|
|
| |
rebuilt. Fixes <rdar://problem/11052352>.
llvm-svn: 154667
|