Граф коммитов

120 Коммитов

Автор SHA1 Сообщение Дата
Anton Korobeynikov 555d04f615 Fix typo
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95664 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09 16:50:54 +00:00
Anton Korobeynikov 0488124fb9 Clearify Qt status a bit
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95663 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09 16:46:25 +00:00
Douglas Gregor 95e636cd19 Add Qt, CMake projects to the list of C++ projects we're working on compiling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95662 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09 16:36:17 +00:00
Douglas Gregor 57f1a00bf2 Update Clang C++ status, with a more project-centric focus.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95455 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05 23:51:14 +00:00
Chris Lattner c5a857fa56 comments shouldn't go in the AST, and we already make it easy
to go from a decl to the doc comments for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91785 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-19 20:59:13 +00:00
Douglas Gregor 125cebdc35 Update C++ status page to reflect reality
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91541 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-16 16:23:48 +00:00
Douglas Gregor d90e0eee43 Update C++ status
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89492 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-20 22:00:06 +00:00
Benjamin Kramer 31abe8ce85 Doug says this is medium done.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85592 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30 14:54:38 +00:00
Benjamin Kramer cec517bf75 cxx_status: fix some missing/wrong cells.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85591 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-30 14:41:58 +00:00
Fariborz Jahanian a662e05287 Restored note on pointer to members with a pointer
to issue involved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85409 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28 18:06:53 +00:00
Fariborz Jahanian 4efd398b14 Removed a Note related to pointer to member functions which
does not seem to exist any longer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85405 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28 17:25:01 +00:00
Douglas Gregor 268fb5bca1 Test
explicit-instantiation-declaration-after-explicit-instantiation-definition
errors. This wraps up explicit template instantiation for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85347 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-27 23:55:05 +00:00
Fariborz Jahanian 3a9f03d5ac Updated, we support == and != builtins for member pointers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84679 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20 21:10:15 +00:00
Fariborz Jahanian 093709796c Changes to reflect more pointer-to-member support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84670 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20 20:31:50 +00:00
Douglas Gregor dcde1909f6 Give ourselves an A- on ASTs for explicit specializations, since they
aren't rich enough to reproduce the source accurately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84012 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13 19:41:44 +00:00
Douglas Gregor 096ebfda90 Diagnose attempts to add default function arguments to a
specialization. This completes C++ [temp.expl.spec]!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83980 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13 17:02:54 +00:00
Sebastian Redl e094fe8278 This ought to complete exception spec support. Man, am I glad.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83767 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11 09:14:57 +00:00
Douglas Gregor b656d88235 Tests for C++ [expr], from James Porter!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83588 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08 22:38:14 +00:00
Benjamin Kramer 0519b286c0 Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83246 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-02 12:19:16 +00:00
Douglas Gregor 30a46b54f1 Update C++ status page
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-30 18:32:57 +00:00
Fariborz Jahanian d8307b1033 Patch for AST representation for the implicit conversion to a function
reference/pointer. And a test case for code gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83000 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-28 18:35:46 +00:00
Fariborz Jahanian 6826365294 Update for inherited conversion function support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81865 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-15 16:15:23 +00:00
Fariborz Jahanian 0d36aa8c23 Status update related to code gen for type conversion
functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81373 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-09 20:00:07 +00:00
Douglas Gregor 4fe95f99a2 Don't generate any code for an explicit call to a trivial destructor.
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-04 19:04:08 +00:00
Douglas Gregor 464061a729 Update C++ status, since a bunch of the comments were out-of-date
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80954 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-03 21:51:43 +00:00
Douglas Gregor c68afe2cbe Improve template instantiation for member access expressions that
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-03 21:38:09 +00:00
Douglas Gregor 20b3e9918c Implement support for equality comparisons (!=, ==) of member
pointers, by extending the "composite pointer type" logic to include
member pointer types.

Introduce test cases for member pointer comparisons, including those
that involve the builtin operator candidates implemented earlier. 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79925 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-24 17:42:35 +00:00
Fariborz Jahanian c141086bff Updated statuc page to reflect recent implementations
of section 12 [special member functions]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79704 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-22 00:18:52 +00:00
Douglas Gregor be1ad92798 Update Clang C++ status to better reflect what is implemented.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79695 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-21 23:27:46 +00:00
Douglas Gregor 65ec1fda47 Implement conversion function templates, along with the ability to use
template argument deduction from a conversion function (C++
[temp.deduct.conv]) with implicit conversions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79693 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-21 23:19:43 +00:00
Douglas Gregor 1e185d9737 We have fairly good support for namespaces, now. Namespace aliases are parsed correctly
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77900 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-02 18:22:38 +00:00
Sebastian Redl 9cc11e7003 Implement C++ semantics for C-style and functional-style casts. This regresses Clang extension conversions, like vectors, but allows conversions via constructors and conversion operators.
Add custom conversions to static_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77076 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25 15:41:38 +00:00
Douglas Gregor 9c09b886c0 We now do complete semantic checking for unions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76918 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-24 00:05:42 +00:00
Douglas Gregor 75b451eb31 Update C++ status to reflect progress on out-of-line definitions of class template members
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76917 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-23 23:58:15 +00:00
Douglas Gregor 00aeb52314 Implement the simple form of overload resolution used when taking the
address of an overloaded function (which may involve both functions
and function templates). 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75069 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-08 23:33:52 +00:00
Douglas Gregor 4668509630 Update the C++ status table to better reflect our support for function overloading
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74997 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-08 10:03:09 +00:00
Douglas Gregor 69be8d60de Improve argument-dependent lookup to find associated classes and
namespaces based on the template arguments of a class template
specialization type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74993 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-08 07:51:57 +00:00
Douglas Gregor 8fdc3c49e3 Template argument deduction from a call has improved a bit
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74966 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07 23:12:18 +00:00
Douglas Gregor 4c9b68f70e Add a Last Updated field to the C++ status page
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74387 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-27 19:33:58 +00:00
Douglas Gregor b10d2fbe98 Make a note of improvements to function templates
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74360 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-27 00:08:54 +00:00
Anders Carlsson 3eb43a0f62 We now support decltype (as far as I know :)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74127 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 22:10:19 +00:00
Anders Carlsson e6510f1945 Nested classes are now complete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74052 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 02:03:09 +00:00
Anders Carlsson 43f24e05ce class.nested.type is done.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74034 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 00:32:04 +00:00
Douglas Gregor 7420c2dee7 Note that we've implemented the right angle brackets extension in C++0x
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73389 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-15 16:50:45 +00:00
Douglas Gregor 5e9f35c7cb Update LLVM.
Implement support for C++ Substitution Failure Is Not An Error
(SFINAE), which says that errors that occur during template argument
deduction do *not* produce diagnostics and do not necessarily make a
program ill-formed. Instead, template argument deduction silently
fails. This is currently implemented for template argument deduction
during matching of class template partial specializations, although
the mechanism will also apply to template argument deduction for
function templates. The scheme is simple:

  - If we are in a template argument deduction context, any diagnostic
    that is considered a SFINAE error (or warning) will be
    suppressed. The error will be propagated up the call stack via the
    normal means.
  - By default, all warnings and errors are SFINAE errors. Add the
    NoSFINAE class to a diagnostic in the .td file to make it a hard
    error (e.g., for access-control violations).

Note that, to make this fully work, every place in Sema that emits an
error *and then immediately recovers* will need to check
Sema::isSFINAEContext() to determine whether it must immediately
return an error rather than recovering.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73332 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-14 07:33:30 +00:00
Douglas Gregor c1efb3faef It looks like we've finished off matching of class template partial specializations; add comments and update the C++ status page
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73263 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12 22:31:52 +00:00
Douglas Gregor 16df850bb7 Finish implementing checking of class template partial specializations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73260 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12 22:21:45 +00:00
Douglas Gregor 6aa75cfbdd Diagnose C++ [temp.class.spec]p9b3, where a class template partial
specialization's arguments are identical to the implicit template
arguments of the primary template. Typically, this is meant to be a
declaration/definition of the primary template, so we give that
advice.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73259 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12 22:08:06 +00:00
Douglas Gregor 7e8976b22e Update the C++ status to reflect improvements in template argument deduction and the handling of class template partial specializations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12 19:15:38 +00:00
Douglas Gregor 93dfdb1299 Semantic analysis for explicit instantiation of class templates. We
still aren't instantiating the definitions of class template members,
and core issues 275 and 259 will both affect the checking that we do
for explicit instantiations (but are not yet implemented).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13 00:25:59 +00:00