aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2009-09-09Allow a declaration of an array to complete a prior, incompleteDouglas Gregor
declaration of that array in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81309 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-09Initial stab at implement dependent member references to memberDouglas Gregor
templates, e.g., x.template get<T> We can now parse these, represent them within an UnresolvedMemberExpr expression, then instantiate that expression node in simple cases. This allows us to stumble through parsing LLVM's Casting.h. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81300 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08More objc GC's API work for array of pointers declaredFariborz Jahanian
as __strong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81283 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Fix ShouldUseClangCompiler to use llvm::Triple.Daniel Dunbar
- -1 FIXME, and fixes 'clang -arch armv4t ...', for example. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81276 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Fixes a regression in generating objc's GC APIFariborz Jahanian
in assiging to c pointer types with a GC'able attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81244 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08convert this to filecheck, hopefully it will fix PR4888. If nothingChris Lattner
else it will make tests run faster and make 4888 easier to diagnose. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81238 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Vastly improve PredefinedExpr output, both in Sema and CodeGen. Patch by Sam ↵Anders Carlsson
Weinig! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Support templateids in friend declarations. Fixes bug 4859.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81233 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Support running tests using the new 'lit', via 'make test LIT2=1'.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81225 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Remove FIXMEs for pedantically-gcc-bug-compatible behavior.Daniel Dunbar
- We aren't going to fix these since they haven't caused problems in practice. - Similarly, don't forward -object to Darwin ld. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81224 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08Handle variadic constructors better. Share code between ↵Anders Carlsson
BuildCXXConstructExpr and BuildCXXTemporaryObjectExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81181 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-08reject returning a block expr even when it has parens and casts in the way.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-07Check that the destination type of a static_cast expression is a complete type.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81151 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-07Refine vcall offsets. Cleanups. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81143 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-06Test for generation of objc_assign_strongCast in a variety ofFariborz Jahanian
situations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81129 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-06Reapply 81096, now with a fix. Spot the bug:Anders Carlsson
for (unsigned i = numargs; i < NumArgs; ++i) Args[0] = 0; ;) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81123 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-06Revert "Initialize default CXXConstructExpr arguments to 0. Fixes a crash whenDaniel Dunbar
destroying the CXXConstructExpr.", this is causing test failures across the board. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81100 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-06lit: Set requireAndAnd config variable (currently unused).Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-05Initialize default CXXConstructExpr arguments to 0. Fixes a crash when ↵Anders Carlsson
destroying the CXXConstructExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81096 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-05Report errors for member functions correctly.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81063 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-05Use a separate diagnostic for default function argument expressions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81062 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Improve the AST representation and semantic analysis for externDouglas Gregor
templates. We now distinguish between an explicit instantiation declaration and an explicit instantiation definition, and know not to instantiate explicit instantiation declarations. Unfortunately, there is some remaining confusion w.r.t. instantiation of out-of-line member function definitions that causes trouble here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81053 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Don't generate any code for an explicit call to a trivial destructor. Douglas Gregor
Now that parsing, semantic analysis, and (I think) code generation of pseudo-destructor expressions and explicit destructor calls works, update the example-dynarray.cpp test to destroy the objects it allocates and update the test to actually compile + link. The code seems correct, but the Clang-compiled version dies with a malloc error. Time to debug! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81025 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04If a destructor is referenced or a pseudo-destructor expression isDouglas Gregor
formed without a trailing '(', diagnose the error (these expressions must be immediately called), emit a fix-it hint, and fix the code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81015 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Support 'make test TESTSUITE=CodeGen', etc.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81011 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Implement AST, semantics, and CodeGen for C++ pseudo-destructorDouglas Gregor
expressions, e.g., p->~T() when p is a pointer to a scalar type. We don't currently diagnose errors when pseudo-destructor expressions are used in any way other than by forming a call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81009 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Parse extern templates, pass that information all the way to Sema,Douglas Gregor
then drop it on the floor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80989 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Introduce an egregious hack to fix PR4828.Douglas Gregor
The problem this change addresses is that we treat __is_pod and __is_empty as keywords in C++, because they are built-in type traits in GCC >= 4.3. However, GNU libstdc++ 4.2 (and possibly earlier versions) define implementation-detail struct templates named __is_pod and __is_empty. This commit solves the problem by recognizing struct __is_pod and struct __is_empty as special token sequences. When one of these token sequences is encountered, the keyword (__is_pod or __is_empty) is implicitly downgraded to an identifier so that parsing can continue. This is an egregious hack, but it has the virtue of "just working" whether someone is using libstdc++ 4.2 or not, without the need for special flags. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80988 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-04Correctly handle elaborated template ids. Still not handled properly for ↵John McCall
friends. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80977 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Patch to instantiate destructors used to destructFariborz Jahanian
base and data members when they are needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80967 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03If the alignment of the chosen field in a union is greater than the ↵Anders Carlsson
alignment of the union, we need to use a packed LLVM struct. Fixes <rdar://problem/7184250>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Implement tree transformations for DeclarationNames. Among otherDouglas Gregor
things, this means that we can properly cope with member access expressions such as t->operator T() where T is a template parameter (or other dependent type). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Improve template instantiation for member access expressions thatDouglas Gregor
involve qualified names, e.g., x->Base::f. We now maintain enough information in the AST to compare the results of the name lookup of "Base" in the scope of the postfix-expression (determined at template definition time) and in the type of the object expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80953 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Mark constructors used in initialization of base(s) and fieldsFariborz Jahanian
as referecned with location where they are used. Still need to look at destructor aspects of them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80950 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Issue diagnostics in variety of situations involvingFariborz Jahanian
reference/const data members when user has declared the constructor. This necessitated some non-minor refactoring. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80934 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03Improved handling for dependent, qualified member access expressions, e.g.,Douglas Gregor
t->Base::f where t has a dependent type. We save the nested-name-specifier in the CXXUnresolvedMemberExpr then, during instantiation, substitute into the nested-name-specifier with the (transformed) object type of t, so that we get name lookup into the type of the object expression. Note that we do not yet retain information about name lookup into the lexical scope of the member access expression, so several regression tests are still disabled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80925 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03This patch does the following.Fariborz Jahanian
1) Issue digsnostics in non-fragile ABI, when an expression evaluates to an interface type (except when it is used to access a non-fragile ivar). 2) Issue unsupported error in fragile ABI when an expression evaluates to an interface type (except when it is used to access a fragile ivar). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80860 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Add a wicked little test-case that illustrates what we have to dealDouglas Gregor
with to properly support member access expressions in templates. This test is XFAIL'd, because we get it completely wrong, but I've made the minimal changes to the representation to at least avoid a crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Referenced instatiated default constructors Fariborz Jahanian
must be defined. Fixed pr4853. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80846 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Rewrite of our handling of name lookup in C++ member access expressions, e.g.,Douglas Gregor
x->Base::f We no longer try to "enter" the context of the type that "x" points to. Instead, we drag that object type through the parser and pass it into the Sema routines that need to know how to perform lookup within member access expressions. We now implement most of the crazy name lookup rules in C++ [basic.lookup.classref] for non-templated code, including performing lookup both in the context of the type referred to by the member access and in the scope of the member access itself and then detecting ambiguities when the two lookups collide (p1 and p4; p3 and p7 are still TODO). This change also corrects our handling of name lookup within template arguments of template-ids inside the nested-name-specifier (p6; we used to look into the scope of the object expression for them) and fixes PR4703. I have disabled some tests that involve member access expressions where the object expression has dependent type, because we don't yet have the ability to describe dependent nested-name-specifiers starting with an identifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80843 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Added a FIXME to the test case.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80840 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Fix an assertion when initializing a union using a member initializer. (We ↵Anders Carlsson
weren't casting from the union type to the initializer type correctly). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80837 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Changed abi mode for these test which are dereferencing Fariborz Jahanian
an interface pointer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80836 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Fix a crash when referencing static data members.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80835 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Borrow a friend class's previous declaration's access specifier regardless ofJohn McCall
whether the current context is dependent. Thanks to Anders for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80828 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Fix a codegen crash when a class template has a constructor that does member ↵Anders Carlsson
initialization of an anonymous union. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80826 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Packed unions should be packed. Fixes an assert Daniel reported.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80808 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Allow null initialization of scalara data membersFariborz Jahanian
in constructors's initializer list. pr4854 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80802 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02Add a few more typename-specifier tests that involve simple-template-ids in ↵Douglas Gregor
the nested-name-specifier git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80784 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-02When parsing typename specifiers (with either the identifier orDouglas Gregor
simple-template-id form), check whether the scope specifier is computable as a declaration context rather than checking whether it is dependent, so that we properly cope with members of the current instantiation. Improve testing for typename specifiers that terminate in a simpe-template-id. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80783 91177308-0d34-0410-b5e6-96231b3b80d8