Commit Graph

686 Commits

Author SHA1 Message Date
Douglas Gregor 197e5f7bb7 Improve argument-dependent lookup to find associated classes and
namespaces based on the template arguments of a class template
specialization type.

llvm-svn: 74993
2009-07-08 07:51:57 +00:00
Douglas Gregor 9fc6097145 Template argument deduction from a call has improved a bit
llvm-svn: 74966
2009-07-07 23:12:18 +00:00
Ted Kremenek b1281025f1 Update checker build.
llvm-svn: 74849
2009-07-06 19:57:59 +00:00
Ted Kremenek c17bab0b13 Update checker build.
llvm-svn: 74757
2009-07-03 03:26:09 +00:00
Douglas Gregor 0799d916e1 Add a Last Updated field to the C++ status page
llvm-svn: 74387
2009-06-27 19:33:58 +00:00
Douglas Gregor 1e880602ad Make a note of improvements to function templates
llvm-svn: 74360
2009-06-27 00:08:54 +00:00
Daniel Dunbar e5ebf02e0e Fix bar title in graphs.
llvm-svn: 74302
2009-06-26 18:29:52 +00:00
Daniel Dunbar 3ecc92147d Update performance numbers (missed a link)
llvm-svn: 74297
2009-06-26 18:15:47 +00:00
Daniel Dunbar 5b165e4930 Update performance numbers.
llvm-svn: 74296
2009-06-26 18:14:41 +00:00
Chris Lattner 6dde0bfef7 oink is dead.
llvm-svn: 74263
2009-06-26 04:10:17 +00:00
Anders Carlsson b7fe2d672a We now support decltype (as far as I know :)
llvm-svn: 74127
2009-06-24 22:10:19 +00:00
Ted Kremenek 6ea5dda489 Fix typo.
llvm-svn: 74107
2009-06-24 19:20:24 +00:00
Ted Kremenek d2ece0703c Reference the correct image...
llvm-svn: 74106
2009-06-24 19:19:18 +00:00
Ted Kremenek ffd586aa64 Add scan-build screenshot for attribute 'nonnull' example.
llvm-svn: 74104
2009-06-24 19:17:54 +00:00
Ted Kremenek 6e7d59f0c6 Fix broken HTML tag.
llvm-svn: 74103
2009-06-24 19:12:56 +00:00
Ted Kremenek b49fe2aff7 Remove reference to using 'clang' directly to analyze projects.
llvm-svn: 74102
2009-06-24 19:12:07 +00:00
Ted Kremenek 9f345e1cad Tighten screenshot.
llvm-svn: 74100
2009-06-24 19:08:56 +00:00
Ted Kremenek 550e701cf5 Replace 'clang --analyze' example for attribute cf_returns_retained with screenshots.
llvm-svn: 74098
2009-06-24 19:04:37 +00:00
Ted Kremenek 645c54ef11 Replace 'clang --analyze' example (in text) with screenshot from scan-build.
llvm-svn: 74095
2009-06-24 18:50:14 +00:00
Anders Carlsson b50f45f9b2 Nested classes are now complete.
llvm-svn: 74052
2009-06-24 02:03:09 +00:00
Anders Carlsson 58b19d5310 class.nested.type is done.
llvm-svn: 74034
2009-06-24 00:32:04 +00:00
Ted Kremenek 50d131dea1 Update checker build.
llvm-svn: 73518
2009-06-16 17:45:57 +00:00
Douglas Gregor baafda8394 Tweak the C++ open projects page
llvm-svn: 73409
2009-06-15 19:53:21 +00:00
Ted Kremenek a1cc273ab3 Revert r73341.
llvm-svn: 73393
2009-06-15 17:23:35 +00:00
Douglas Gregor ac1798a859 Note that we've implemented the right angle brackets extension in C++0x
llvm-svn: 73389
2009-06-15 16:50:45 +00:00
Zhongxing Xu a2937bc3cb 'not magic' => 'is not magic'
llvm-svn: 73386
2009-06-15 13:22:32 +00:00
Nuno Lopes 52c17e7201 fix the menu's links
llvm-svn: 73341
2009-06-14 09:40:09 +00:00
Douglas Gregor 33834516f3 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.

llvm-svn: 73332
2009-06-14 07:33:30 +00:00
Douglas Gregor 170bc42547 It looks like we've finished off matching of class template partial specializations; add comments and update the C++ status page
llvm-svn: 73263
2009-06-12 22:31:52 +00:00
Douglas Gregor 30b0197169 Finish implementing checking of class template partial specializations
llvm-svn: 73260
2009-06-12 22:21:45 +00:00
Douglas Gregor 09a3023e65 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.

llvm-svn: 73259
2009-06-12 22:08:06 +00:00
Douglas Gregor dc41eb18e9 Update the C++ status to reflect improvements in template argument deduction and the handling of class template partial specializations
llvm-svn: 73242
2009-06-12 19:15:38 +00:00
Douglas Gregor 873495ad98 Point to the clang driver, not the ccc driver
llvm-svn: 73192
2009-06-11 14:59:18 +00:00
Douglas Gregor f0ca0a684d Add pseudo-destructors to the Open Projects list
llvm-svn: 73191
2009-06-11 14:55:39 +00:00
Douglas Gregor 3afbdbd8b4 Prune some projects that have already been started
llvm-svn: 73190
2009-06-11 14:53:37 +00:00
Ted Kremenek e6d3ae9d99 Add redirects to new static analysis web site.
llvm-svn: 73120
2009-06-09 02:17:37 +00:00
Ted Kremenek 0da03ed2ae Update static analyzer link to new website.
llvm-svn: 73119
2009-06-09 01:37:34 +00:00
Ted Kremenek 0a7a2c45a4 Comment out preliminary text due to wishful thinking of getting more documentation done by this point.
llvm-svn: 73118
2009-06-09 01:32:41 +00:00
Ted Kremenek f588f6b8ca Last menu color tweaking (for now).
llvm-svn: 73117
2009-06-09 01:31:18 +00:00
Ted Kremenek cd698b2cc9 More color tweaking.
llvm-svn: 73116
2009-06-09 01:28:57 +00:00
Ted Kremenek 66a34398d0 Update menu colors.
llvm-svn: 73115
2009-06-09 01:28:04 +00:00
Ted Kremenek 15636b43b0 Update menu color.
llvm-svn: 73114
2009-06-09 01:26:30 +00:00
Ted Kremenek 642171d5f2 Update checker build file (accidentally used old one).
llvm-svn: 73113
2009-06-09 01:25:03 +00:00
Ted Kremenek 681d7ebc99 Fix link.
llvm-svn: 73112
2009-06-09 01:24:15 +00:00
Ted Kremenek f9f689b3ab Add skeleton files for new analyzer site.
llvm-svn: 73086
2009-06-08 21:21:24 +00:00
Ted Kremenek 800c20f11a Update checker build.
llvm-svn: 73001
2009-06-06 17:44:12 +00:00
Daniel Dunbar 5773c600ad Put "Language Extensions" and "C++ status" in the regular info section.
llvm-svn: 72879
2009-06-04 18:39:08 +00:00
Daniel Dunbar 15b86228cf Mention unsupported GCC duplicate-definition-with-inline extension.
Also, link users manual from the main web page.

llvm-svn: 72878
2009-06-04 18:37:52 +00:00
Daniel Dunbar 91b418ea3c Another tweak to the clang Getting Started page.
llvm-svn: 72355
2009-05-24 01:40:10 +00:00
Daniel Dunbar b402d5c32d Minor updates to the clang Getting Started page.
llvm-svn: 72354
2009-05-24 01:00:12 +00:00
Ted Kremenek 59328da69f Update checker build.
llvm-svn: 72084
2009-05-19 00:48:25 +00:00
Ted Kremenek f0d3237474 Update checker build.
llvm-svn: 71929
2009-05-16 06:05:27 +00:00
Ted Kremenek 926dffce01 Update checker build.
llvm-svn: 71900
2009-05-15 21:56:27 +00:00
Ted Kremenek a3d4d7b4fa Update checker build.
llvm-svn: 71874
2009-05-15 18:40:51 +00:00
Ted Kremenek 2aab87f393 Update checker build.
llvm-svn: 71846
2009-05-15 05:59:34 +00:00
Ted Kremenek 2b77677322 Update checker build.
llvm-svn: 71716
2009-05-13 20:49:00 +00:00
Douglas Gregor a1f4997368 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).

llvm-svn: 71613
2009-05-13 00:25:59 +00:00
Douglas Gregor 1b57ff32a8 Implement parsing for explicit instantiations of class templates, e.g.,
template class X<int>;

This also cleans up the propagation of template information through
declaration parsing, which is used to improve some diagnostics.

llvm-svn: 71608
2009-05-12 23:25:50 +00:00
Ted Kremenek 14fbc56a09 Update checker build.
llvm-svn: 71605
2009-05-12 22:44:02 +00:00
Douglas Gregor 9e0d21a444 Align the N/A in the C++ status table, from Anders Johnsen
llvm-svn: 71576
2009-05-12 18:36:58 +00:00
Douglas Gregor 5a4d12afbf Fill in more C++ status. We're now using the check mark to mean,
"complete, and we have tests for every paragraph".

llvm-svn: 71564
2009-05-12 17:55:28 +00:00
Ted Kremenek df5a6b6070 Update checker build.
llvm-svn: 71523
2009-05-12 00:45:33 +00:00
Ted Kremenek 3a4360c728 Update checker build.
llvm-svn: 71463
2009-05-11 19:02:11 +00:00
Ted Kremenek f16992866a Update checker build.
llvm-svn: 71435
2009-05-11 16:31:31 +00:00
Sebastian Redl 9257b234a5 Update minor points in C++ status table.
llvm-svn: 71406
2009-05-10 20:06:11 +00:00
Sebastian Redl 576fd424df Implement C++0x nullptr.
llvm-svn: 71405
2009-05-10 18:38:11 +00:00
Ted Kremenek 9a627e60cd Update checker build.
llvm-svn: 71404
2009-05-10 17:41:29 +00:00
Ted Kremenek 9dc1bed4a6 Update checker build.
llvm-svn: 71387
2009-05-10 05:54:23 +00:00
Ted Kremenek 1e0d6a5957 Update checker build.
llvm-svn: 71375
2009-05-10 02:22:16 +00:00
Ted Kremenek 6631d7c4be Roll back to checker build 0.195.
llvm-svn: 71348
2009-05-09 07:05:44 +00:00
Douglas Gregor 1bbffbceae Big update to the C++ status table to reflect "recent"
development. Still much more to write!

llvm-svn: 71167
2009-05-07 17:50:16 +00:00
Ted Kremenek 83ffab06ef Update checker build.
llvm-svn: 71112
2009-05-06 20:13:50 +00:00
Ted Kremenek 82f7cfa156 Update checker build.
llvm-svn: 71046
2009-05-06 00:14:14 +00:00
Ted Kremenek 09356a83c4 Update checker build.
llvm-svn: 70961
2009-05-05 03:56:29 +00:00
Ted Kremenek 66f8fe18ef Update checker build.
llvm-svn: 70858
2009-05-04 14:24:29 +00:00
Daniel Dunbar 032dc63cd4 Nightly test coverage reporting is back online.
llvm-svn: 70814
2009-05-03 23:46:18 +00:00
Ted Kremenek f520136939 Update checker build.
llvm-svn: 70615
2009-05-02 00:42:33 +00:00
Chris Lattner 2ab6983e41 C/ObjC work well enough with clang for them not to be a gcc strength anymore.
llvm-svn: 70528
2009-05-01 01:42:13 +00:00
Chris Lattner 0936387c46 add word
llvm-svn: 70527
2009-05-01 01:40:42 +00:00
Chris Lattner 0cfae87d80 C/ObjC work well enough to claim support for them now.
llvm-svn: 70526
2009-05-01 01:40:17 +00:00
Ted Kremenek 10e21109d7 Update checker build.
llvm-svn: 70489
2009-04-30 15:15:37 +00:00
Sebastian Redl 2b9cacbffa Have the parser communicate the exception specification to the action.
llvm-svn: 70389
2009-04-29 17:30:04 +00:00
Ted Kremenek ed70968484 Update analyzer build.
llvm-svn: 70295
2009-04-28 14:32:50 +00:00
Sebastian Redl 4c018663b2 Track down return statements in the handlers of a function-try-block of constructors. Meh ...
llvm-svn: 70256
2009-04-27 21:33:24 +00:00
Sebastian Redl 4de47b445b Improve validation of C++ exception handling: diagnose throwing incomplete types and jumps into protected try-catch scopes.
llvm-svn: 70242
2009-04-27 20:27:31 +00:00
Sebastian Redl 21b349d5ea Fill in the C++ status table for exceptions
llvm-svn: 70217
2009-04-27 18:25:15 +00:00
Ted Kremenek b62db80c83 Updated checker build.
llvm-svn: 70065
2009-04-25 19:12:36 +00:00
Ted Kremenek 9099126795 Update checker build.
llvm-svn: 69940
2009-04-23 23:42:21 +00:00
Ted Kremenek 9dae596dc1 Update checker build.
llvm-svn: 69776
2009-04-22 05:13:56 +00:00
Sebastian Redl 8ce189f9ce Conditional operator C++ checking complete. What issues remain are in more general code.
llvm-svn: 69555
2009-04-19 21:53:20 +00:00
Sebastian Redl d1309a3c4d Add deleted functions and rvalue references to C++ status.
llvm-svn: 68903
2009-04-12 17:41:24 +00:00
Ted Kremenek be4fe9e239 Update analyzer build.
llvm-svn: 68860
2009-04-11 04:57:08 +00:00
Ted Kremenek 7318290ab9 Fix typo.
llvm-svn: 68782
2009-04-10 14:30:24 +00:00
Ted Kremenek cda32a1e0c Update analyzer build.
llvm-svn: 68781
2009-04-10 14:29:25 +00:00
Ted Kremenek 8cdc351ed3 Update analyzer build.
llvm-svn: 68707
2009-04-09 14:06:37 +00:00
Ted Kremenek c4631b2809 Update checker build.
llvm-svn: 68516
2009-04-07 14:26:58 +00:00
Ted Kremenek b594fa1289 Fix grammar.
llvm-svn: 68331
2009-04-02 18:20:13 +00:00
Ted Kremenek 01cccbfb03 Update checker build.
llvm-svn: 68302
2009-04-02 06:33:06 +00:00
Douglas Gregor 60f3c95926 Add some examples of Fix-it hints to our documentation
llvm-svn: 68210
2009-04-01 16:24:40 +00:00
Douglas Gregor 2e0757f319 Give Type::getDesugaredType a "for-display" mode that can apply more
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
2009-04-01 15:47:24 +00:00
Anders Carlsson 452e1c8a6a We fully support namespace aliases now.
llvm-svn: 68116
2009-03-31 17:17:14 +00:00
Ted Kremenek 42361b3eb5 Update checker build.
llvm-svn: 67976
2009-03-29 00:43:39 +00:00
Ted Kremenek b3e8f6531d Update "Getting Started" with more current information about 'clang-cc' and 'clang'.
llvm-svn: 67850
2009-03-27 16:32:57 +00:00
Douglas Gregor 0caea8cca7 Add another C++ open project
llvm-svn: 67620
2009-03-24 16:16:53 +00:00
Anders Carlsson b0ab31b7f6 Remove a task that's completed now.
llvm-svn: 67596
2009-03-24 01:25:56 +00:00
Anders Carlsson b6da73f2e0 class.abstract is complete. Anything that doesn't work is a bug.
llvm-svn: 67595
2009-03-24 01:24:06 +00:00
Ted Kremenek 74250d1d68 Update checker build.
llvm-svn: 67584
2009-03-24 00:35:59 +00:00
Ted Kremenek 673a4eef07 Update checker build.
llvm-svn: 67553
2009-03-23 19:53:30 +00:00
Ted Kremenek 43e2deee22 Update checker build.
llvm-svn: 67498
2009-03-23 02:00:36 +00:00
Douglas Gregor 2460c0c37c Link from the C++ status page to the open projects page
llvm-svn: 67399
2009-03-20 20:39:57 +00:00
Douglas Gregor 7262d1c003 Document some small- to mid-size open C++ projects
llvm-svn: 67398
2009-03-20 20:37:36 +00:00
Chris Lattner 308fdf6ee9 wording.
llvm-svn: 67337
2009-03-19 22:03:42 +00:00
Chris Lattner 8fda6749aa add link to new page
llvm-svn: 67324
2009-03-19 18:58:22 +00:00
Chris Lattner 3d26bc8fdf link to diags page.
llvm-svn: 67323
2009-03-19 18:57:33 +00:00
Chris Lattner 2302ee59e1 move most of the diags info out to its own file.
llvm-svn: 67321
2009-03-19 18:56:04 +00:00
Chris Lattner 136d84dbeb split diagnostics examples out to its own file.
llvm-svn: 67318
2009-03-19 18:52:17 +00:00
Chris Lattner 480bb91b18 add a note
llvm-svn: 67290
2009-03-19 07:06:44 +00:00
Chris Lattner 2b7dbf4d0a update our bragging about diagnostics. :)
llvm-svn: 67289
2009-03-19 06:52:51 +00:00
Ted Kremenek bb93b788b7 Update checker build
llvm-svn: 67279
2009-03-19 01:51:49 +00:00
Ted Kremenek b7e6aea63e Update checker build.
llvm-svn: 67266
2009-03-19 00:20:07 +00:00
Anders Carlsson bd1a1d2fa6 We support static_assert.
llvm-svn: 67043
2009-03-16 17:28:26 +00:00
Ted Kremenek fcf7348f80 Update checker build.
llvm-svn: 66999
2009-03-14 00:46:46 +00:00
Ted Kremenek 80caa92255 Update checker build.
llvm-svn: 66926
2009-03-13 18:48:36 +00:00
Douglas Gregor 201217324a Split get_involved into Get Involved and Open Projects pages
llvm-svn: 66891
2009-03-13 15:06:27 +00:00
Ted Kremenek 4d4d2277a9 Update checker build.
llvm-svn: 66855
2009-03-13 00:43:31 +00:00
Douglas Gregor 83e9e91479 Note some advances in our C++ support
llvm-svn: 66742
2009-03-12 00:09:31 +00:00
Ted Kremenek 4bb994a319 Update checker build.
llvm-svn: 66643
2009-03-11 06:11:39 +00:00
Chris Lattner 5013d3a893 update this, C headers don't need hacks anymore.
llvm-svn: 66544
2009-03-10 16:01:44 +00:00
Ted Kremenek 07393e0546 Update analyzer build.
llvm-svn: 66538
2009-03-10 07:03:32 +00:00
Ted Kremenek 623d2a3ce4 Update checker build.
llvm-svn: 66507
2009-03-09 23:45:57 +00:00
Ted Kremenek 62d9de7cae Update checker build.
llvm-svn: 66226
2009-03-06 00:53:59 +00:00
Ted Kremenek 1d09f6a221 Update checker build.
llvm-svn: 66152
2009-03-05 07:55:15 +00:00
Daniel Dunbar 817b7692fb Add new performance numbers; no discussion yet. Obvious two
conclusions are our PCH generation is way faster than gcc, and the
Python based driver kills compile times.

llvm-svn: 65980
2009-03-04 00:04:28 +00:00
Ted Kremenek d62491a808 Update checker build.
llvm-svn: 65916
2009-03-03 01:44:57 +00:00
Ted Kremenek 8a56e5c29b Update checker build.
llvm-svn: 65676
2009-02-28 02:04:49 +00:00
Ted Kremenek 918ae24edd Update checker build.
llvm-svn: 65625
2009-02-27 07:16:04 +00:00
Gabor Greif dd4ddf13a6 fix (hopefully) some validation errors
llvm-svn: 65455
2009-02-25 15:22:45 +00:00
Gabor Greif 267e01cb28 minor tweaks to readability
llvm-svn: 65440
2009-02-25 09:45:40 +00:00
Chris Lattner d79eb11e22 update
llvm-svn: 65433
2009-02-25 05:43:33 +00:00
Chris Lattner 014d2ad55f Headers are basically done, debug info is just about done (and
will improve a lot this week hopefully), and a libgcc replacement
is ready once I wrangle lawyers.

llvm-svn: 65432
2009-02-25 05:39:01 +00:00
Chris Lattner a004a1846b clang seems "generally useful" for c and objc by now, though obviously bugs
still remain.

llvm-svn: 65431
2009-02-25 05:35:47 +00:00
Ted Kremenek 7a164114f6 Update checker build.
llvm-svn: 65421
2009-02-25 00:54:41 +00:00
Ted Kremenek 80049e0b6f Updated checker build.
llvm-svn: 65350
2009-02-23 23:37:29 +00:00
Ted Kremenek cd25abed46 Update to checker-0.162 (fixed header issue in tar.bz2 package).
llvm-svn: 65283
2009-02-22 08:50:06 +00:00
Ted Kremenek 589aa282dd Reverted back to checker-0.161 because of a header issue.
llvm-svn: 65281
2009-02-22 08:42:49 +00:00
Ted Kremenek 1f19573c84 Updated checker build.
llvm-svn: 65280
2009-02-22 08:38:12 +00:00
Ted Kremenek bc7d915c4c Update checker build.
llvm-svn: 65227
2009-02-21 06:58:08 +00:00
Ted Kremenek 193cbdcbe3 Update checker build.
llvm-svn: 65054
2009-02-19 19:08:21 +00:00
Ted Kremenek 1d1d39757a Update checker build.
llvm-svn: 65033
2009-02-19 07:22:21 +00:00
Ted Kremenek aa61951171 Fix comment: analyzer builds are universal binaries.
llvm-svn: 64950
2009-02-18 21:24:14 +00:00
Ted Kremenek a16c98b97d Update checker build.
llvm-svn: 64879
2009-02-18 03:09:29 +00:00
Ted Kremenek 386e590239 Update checker build.
llvm-svn: 64753
2009-02-17 07:47:57 +00:00
Cedric Venet 08438133da Add svn:eol-style=native to some files
Correct two files with inconsistent lines endings.

llvm-svn: 64564
2009-02-14 20:20:19 +00:00
Ted Kremenek 10251c91a8 Update checker build.
llvm-svn: 64507
2009-02-13 23:41:12 +00:00
Ted Kremenek 0ae9df8377 Update checker build.
llvm-svn: 64365
2009-02-12 07:09:27 +00:00
Ted Kremenek 345749aff4 Update checker build.
llvm-svn: 64297
2009-02-11 07:50:23 +00:00
Ted Kremenek f83882987e Updated checker build.
llvm-svn: 64208
2009-02-10 07:38:50 +00:00
Ted Kremenek a446e95891 Update checker build.
llvm-svn: 64190
2009-02-10 00:53:39 +00:00
Chris Lattner 10c16ca0b9 spell out explicitly
llvm-svn: 64129
2009-02-09 08:47:44 +00:00
Chris Lattner f5e9242dd4 add doc
llvm-svn: 64128
2009-02-09 08:47:17 +00:00
Chris Lattner cd2b504d5f add another crazy idea :)
llvm-svn: 64092
2009-02-08 20:41:34 +00:00
Ted Kremenek beb1ce6504 Updated checker build.
llvm-svn: 64071
2009-02-08 05:05:02 +00:00
Sebastian Redl f3b5e27fee Make const-initialized const integral variables I-C-Es in C++.
llvm-svn: 64015
2009-02-07 13:06:23 +00:00
Sebastian Redl 779dd9382d Fill in C++ status table for section 7 (declarations).
llvm-svn: 64013
2009-02-07 12:42:13 +00:00
Sebastian Redl 112a976616 Implement dereferencing of pointers-to-member.
llvm-svn: 63983
2009-02-07 00:15:38 +00:00
Ted Kremenek 686a09d7b8 Updated checker build.
llvm-svn: 63897
2009-02-05 23:19:12 +00:00
Ted Kremenek cc41c07227 Update checker build.
llvm-svn: 63869
2009-02-05 15:48:51 +00:00
Sebastian Redl 18f8ff62a3 Implement taking address of member functions, including overloaded ones.
llvm-svn: 63779
2009-02-04 21:23:32 +00:00
Ted Kremenek 77de9885f8 Update checker build.
llvm-svn: 63753
2009-02-04 19:09:38 +00:00
Douglas Gregor 7bad6d1d32 Argument Dependent Lookup is done (for now). Also, update the status
for a few other name-lookup sections.

llvm-svn: 63734
2009-02-04 15:07:16 +00:00
Chris Lattner a4e0d1d177 codegen is much farther along than when this was first written.
llvm-svn: 63668
2009-02-03 21:54:08 +00:00
Chris Lattner ab5d0ca71a update a couple entries, add a new idea
llvm-svn: 63665
2009-02-03 21:51:37 +00:00
Ted Kremenek a377abfe26 Update checker build.
llvm-svn: 63464
2009-01-31 01:32:23 +00:00
Douglas Gregor d14247a9e5 Implement and test aggregate initialization in C++. Major changes:
- Support initialization of reference members; complain if any
  reference members are left uninitialized.
  - Use C++ copy-initialization for initializing each element (falls
  back to constraint checking in C)
  - Make sure we diagnose when one tries to provide an initializer
  list for a non-aggregate.
  - Don't complain about empty initializers in C++ (they are permitted)
  - Unrelated but necessary: don't bother trying to convert the
  decl-specifier-seq to a type when we're dealing with a C++
  constructor, destructor, or conversion operator; it results in
  spurious warnings.

llvm-svn: 63431
2009-01-30 22:09:00 +00:00
Sebastian Redl ed8f200318 Implement pointer to member handling in static_cast.
Fix a stupid mistake in UnwrapSimilarPointers that made any two member pointers compatible as long as the pointee was the same.
Make a few style corrections as suggested by Chris.

llvm-svn: 63215
2009-01-28 18:33:18 +00:00
Douglas Gregor fb03466388 Complete semantic checking for typedef redeclarations in C++. The
rules are slightly different than in C, and now we handle both
dialects properly.

llvm-svn: 63211
2009-01-28 17:15:10 +00:00
Ted Kremenek cdca288cf8 Updated checker build.
llvm-svn: 63200
2009-01-28 15:05:42 +00:00
Sebastian Redl a5a77a6dc6 Add handling of member pointers to reinterpret_cast.
llvm-svn: 63150
2009-01-27 23:18:31 +00:00
Ted Kremenek 3efd355b9d Updated checker build.
llvm-svn: 63140
2009-01-27 22:24:33 +00:00
Sebastian Redl b44ab5f25d Add support for member pointers to const_cast.
llvm-svn: 63055
2009-01-26 22:19:12 +00:00
Sebastian Redl cf8e1fa58e Update C++ status table with new member pointer conversion capabilities.
llvm-svn: 62977
2009-01-26 00:11:25 +00:00
Ted Kremenek b239341ec4 Updated checker build.
llvm-svn: 62914
2009-01-24 08:11:59 +00:00
Ted Kremenek 94e826df0b Updated checker build.
llvm-svn: 62818
2009-01-23 00:11:54 +00:00
Ted Kremenek b46aead702 Updated checker build.
llvm-svn: 62655
2009-01-21 01:41:30 +00:00
Eli Friedman 75a495b495 Pixel font sizes are evil.
llvm-svn: 62586
2009-01-20 17:56:18 +00:00
Ted Kremenek 1da5987cb9 Update checker build.
llvm-svn: 62409
2009-01-17 06:41:35 +00:00
Ted Kremenek f5359ea9d0 Updated checker build.
llvm-svn: 62379
2009-01-16 23:26:38 +00:00
Douglas Gregor 5fb5397238 Introduce support for C++0x explicit conversion operators (N2437)
Small cleanup in the handling of user-defined conversions. 

Also, implement an optimization when constructing a call. We avoid
recomputing implicit conversion sequences and instead use those
conversion sequences that we computed as part of overload resolution.

llvm-svn: 62231
2009-01-14 15:45:31 +00:00
Ted Kremenek f9d3f0711a Updated checker build.
llvm-svn: 62137
2009-01-13 01:41:37 +00:00
Douglas Gregor c5e61070f6 Add the proper restrictions on the left-hand argument of a built-in
assignment operator candidate (C++ [over.match.oper]p4).

llvm-svn: 62128
2009-01-13 00:52:54 +00:00
Douglas Gregor ae5e28578c Update C++ status and add a few more tests of overloading for member function calls
llvm-svn: 62121
2009-01-12 23:20:38 +00:00
Douglas Gregor f4d332797b Finished semantic analysis of anonymous unions in C++.
Duplicate-member checking within classes is still a little messy, and
anonymous unions are still completely broken in C. We'll need to unify
the handling of fields in C and C++ to make this code applicable in
both languages.

llvm-svn: 61878
2009-01-07 19:46:03 +00:00
Ted Kremenek 4cfd63b5a4 Update checker build.
llvm-svn: 61843
2009-01-07 01:10:24 +00:00
Douglas Gregor d7c4d984d0 Parser support for C++ using directives, from Piotr Rak
llvm-svn: 61486
2008-12-30 03:27:21 +00:00
Sebastian Redl 58097c79c2 Fill in C++ status table for statements.
llvm-svn: 61457
2008-12-28 17:18:13 +00:00
Sebastian Redl e10c2c32af Implement checks for bool in increment and decrement.
llvm-svn: 61275
2008-12-20 09:35:34 +00:00
Ted Kremenek ab66b87f7f Updated checker build.
llvm-svn: 61273
2008-12-20 02:16:48 +00:00
Ted Kremenek dde7df9de2 Updated checker build.
llvm-svn: 61233
2008-12-19 00:19:19 +00:00
Ted Kremenek a1fd586dca Updated checker build.
llvm-svn: 61173
2008-12-17 23:55:41 +00:00
Ted Kremenek be3864ae6f Updated checker build.
llvm-svn: 61151
2008-12-17 21:02:35 +00:00
Douglas Gregor dd12c786a0 Added a test for default arguments added to out-of-line member
functions. They work except that name lookup within the default
arguments needs to be deferred until the class definition is complete
(see FIXME in the test).

llvm-svn: 61059
2008-12-16 00:08:34 +00:00
Ted Kremenek d2f9cd1cbd Updated checker build.
llvm-svn: 61002
2008-12-14 01:25:59 +00:00
Ted Kremenek 0bc1320d95 Updated checker build.
llvm-svn: 60864
2008-12-11 00:20:13 +00:00
Ted Kremenek a30391c31f Updated checker build.
llvm-svn: 60819
2008-12-10 00:50:24 +00:00
Sebastian Redl e0c2affc5e Fill in C++ status table for expressions.
llvm-svn: 60763
2008-12-09 14:40:01 +00:00
Sebastian Redl 82639aff7b Fill in some parts of cxx_status.html
llvm-svn: 60699
2008-12-08 16:24:08 +00:00
Sebastian Redl 5c6ebcc198 Parsing new and delete is now complete.
llvm-svn: 60425
2008-12-02 17:22:40 +00:00
Sebastian Redl 351bb78a10 Handle new by passing the Declaration to the Action, not a processed type.
llvm-svn: 60413
2008-12-02 14:43:59 +00:00
Nuno Lopes 6cdcbd1f95 add note about running the test suite with valgrind
llvm-svn: 60029
2008-11-25 15:46:06 +00:00
Douglas Gregor 8e3e16ed2e Update C++ status
llvm-svn: 59735
2008-11-20 16:46:32 +00:00
Douglas Gregor ab7897ac44 Implement the rest of C++ [over.call.object], which permits the object
being called to be converted to a reference-to-function,
pointer-to-function, or reference-to-pointer-to-function. This is done
through "surrogate" candidate functions that model the conversions
from the object to the function (reference/pointer) and the
conversions in the arguments.

llvm-svn: 59674
2008-11-19 22:57:39 +00:00
Douglas Gregor 91cea0ad1e Support for calling overloaded function call operators (operator())
with function call syntax, e.g.,

  Functor f;
  f(x, y);

This is the easy part of handling calls to objects of class type 
(C++ [over.call.object]). The hard part (coping with conversions from
f to function pointer or reference types) will come later. Nobody uses
that stuff anyway, right? :)

llvm-svn: 59663
2008-11-19 21:05:33 +00:00
Douglas Gregor 40412acc02 Support overloading of the subscript operator[], including support for
built-in operator candidates. Test overloading of '&' and ','.

In C++, a comma expression is an lvalue if its right-hand
subexpression is an lvalue. Update Expr::isLvalue accordingly.

llvm-svn: 59643
2008-11-19 17:17:41 +00:00
Douglas Gregor d08452f60a Added operator overloading for unary operators, post-increment, and
post-decrement, including support for generating all of the built-in
operator candidates for these operators. 

C++ and C have different rules for the arguments to the builtin unary
'+' and '-'. Implemented both variants in Sema::ActOnUnaryOp.

In C++, pre-increment and pre-decrement return lvalues. Update
Expr::isLvalue accordingly.

llvm-svn: 59638
2008-11-19 15:42:04 +00:00
Ted Kremenek 29704928b7 Updated checker build.
llvm-svn: 59591
2008-11-19 05:46:43 +00:00
Daniel Dunbar bf45c9a4e4 Add some quick notes on the clang tests and running the LLVM test
suite with clang.

llvm-svn: 59536
2008-11-18 17:56:21 +00:00
Ted Kremenek ee4fa9cfbb Updated checker build.
llvm-svn: 59503
2008-11-18 07:27:02 +00:00
Ted Kremenek f9f58f085d Updated checker build.
llvm-svn: 59457
2008-11-17 19:26:13 +00:00
Ted Kremenek 9f748e23e3 Updated checker build.
llvm-svn: 59353
2008-11-15 04:57:19 +00:00
Sebastian Redl ccdfabab35 Implement parsing and semantic checking of the 'mutable' keyword.
Thanks to Doug for the review. Actual effects of mutable to follow.

llvm-svn: 59331
2008-11-14 23:42:31 +00:00
Daniel Dunbar 62efa23518 Fix some validation errors.
llvm-svn: 59272
2008-11-13 23:01:34 +00:00
Daniel Dunbar ed40bc19c9 Start a "hacking" page with some simple notes on getting started
developing clang.

llvm-svn: 59270
2008-11-13 22:49:41 +00:00
Ted Kremenek 83844100fb Revert to older checker build.
llvm-svn: 59209
2008-11-13 01:30:19 +00:00
Ted Kremenek d0e32791d5 Update checker build.
llvm-svn: 59206
2008-11-13 01:23:50 +00:00
Ted Kremenek e9c16a6a79 Updated checker build.
llvm-svn: 59195
2008-11-12 23:26:57 +00:00
Sebastian Redl c470476420 Implement C++ 'typeid' parsing and sema.
llvm-svn: 59042
2008-11-11 11:37:55 +00:00
Douglas Gregor cd695e500d Basic support for taking the address of an overloaded function
llvm-svn: 59000
2008-11-10 20:40:00 +00:00
Sebastian Redl e0b2b1bf8c Update C++ status: class support improved due to nested name parsing.
llvm-svn: 58932
2008-11-09 11:32:32 +00:00
Sebastian Redl f4485de48a Update C++ status to reflect parser capabilities for chapter 9 (classes). Slightly extend the class parser test.
llvm-svn: 58909
2008-11-08 15:40:37 +00:00
Sebastian Redl 2e133e47aa Update C++ status: dynamic_cast is sema-complete.
llvm-svn: 58907
2008-11-08 14:43:13 +00:00
Cedric Venet 571c662350 Use css style instead of hard coded color in cxx_status. No visible change.
llvm-svn: 58867
2008-11-07 22:24:44 +00:00
Ted Kremenek 47a6235491 Updated checker build.
llvm-svn: 58864
2008-11-07 20:55:59 +00:00
Douglas Gregor 60e64cfc43 Update C++ status
llvm-svn: 58862
2008-11-07 20:16:04 +00:00
Douglas Gregor 7d5fc7e28b Initial, rudimentary implementation of operator overloading for binary
operators. For example, one can now write "x + y" where x or y is a
class or enumeration type, and Clang will perform overload resolution
for "+" based on the overloaded operators it finds.

The other kinds of overloadable operators in C++ will follow this same
approach. 

Three major issues remain:
  1) We don't find member operators
  2) Since we don't have user-defined conversion operators, we can't
  call any of the built-in overloaded operators in C++ [over.built].
  3) Once we've done the semantic checks, we drop the overloaded
  operator on the floor; it doesn't get into the AST at all.

llvm-svn: 58821
2008-11-06 23:29:22 +00:00
Douglas Gregor 11d0c4c098 Parsing, ASTs, and semantic analysis for the declaration of overloaded
operators in C++. Overloaded operators can be called directly via
their operator-function-ids, e.g., "operator+(foo, bar)", but we don't
yet implement the semantics of operator overloading to handle, e.g.,
"foo + bar".

llvm-svn: 58817
2008-11-06 22:13:31 +00:00
Ted Kremenek efc44cbf1f Updated checker build.
llvm-svn: 58776
2008-11-05 22:47:25 +00:00
Douglas Gregor 831c93f6c0 Parsing, representation, and preliminary semantic analysis of destructors.
Implicit declaration of destructors (when necessary).

Extended Declarator to store information about parsed constructors
and destructors; this will be extended to deal with declarators that
name overloaded operators (e.g., "operator +") and user-defined
conversion operators (e.g., "operator int").

llvm-svn: 58767
2008-11-05 20:51:48 +00:00
Douglas Gregor e8381c00eb Initial implementation of parsing, semantic analysis, and AST-building
for constructor initializations, e.g.,

  class A { };
  class B : public A { 
    int m;
  public:
    B() : A(), m(17) { };
  };

llvm-svn: 58749
2008-11-05 04:29:56 +00:00
Daniel Dunbar 40346506f1 Remove stray character.
llvm-svn: 58713
2008-11-04 18:44:31 +00:00
Douglas Gregor 242ee9dfae Fine-grained C++ status page
llvm-svn: 58699
2008-11-04 15:52:45 +00:00
Ted Kremenek 307b2c4078 Updated checker build.
llvm-svn: 58672
2008-11-04 01:24:32 +00:00
Ted Kremenek a3199323fe Updated checker build.
llvm-svn: 58658
2008-11-04 00:03:24 +00:00
Daniel Dunbar 925dc26d51 Clarify performance experiments description based on feedback from
Eric C, thanks!

llvm-svn: 58634
2008-11-03 20:03:58 +00:00
Chris Lattner ce149def9d minor tweaks.
llvm-svn: 58545
2008-11-01 01:46:51 +00:00
Daniel Dunbar 05f13bcc2c Grammar tweaks.
llvm-svn: 58544
2008-11-01 01:24:31 +00:00
Daniel Dunbar 13569f8dd6 Add recent timing results to web page.
llvm-svn: 58542
2008-11-01 01:14:36 +00:00
Ted Kremenek 883af75f01 Updated checker build.
llvm-svn: 58473
2008-10-30 23:41:37 +00:00
Daniel Dunbar def9076430 Fix specification references link.
llvm-svn: 58412
2008-10-30 00:53:12 +00:00
Ted Kremenek f521e4a90b Update checker build.
llvm-svn: 58369
2008-10-29 06:19:03 +00:00
Ted Kremenek 02f9fd4a6c Update checker build.
llvm-svn: 58289
2008-10-27 22:42:11 +00:00