<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/libcxx/docs/DesignDocs, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-06-11T22:53:49+00:00</updated>
<entry>
<title>Add documentation and tests for Clangs C++11 extensions in C++03.</title>
<updated>2019-06-11T22:53:49+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-06-11T22:53:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=4959542657ba7965db0f34f630830000bbdd6563'/>
<id>urn:sha1:4959542657ba7965db0f34f630830000bbdd6563</id>
<content type='text'>
As we gear up to drop support for GCC in C++03, we should make clear
what our C++03 mode is, the C++11 extensions it provides,
and the C++11 extensions it depends on.

The section of this document discussing user-facing extensions has
been left blank while the community discusses new directions. For now
it's just a warning to users.

Additionally, the document contains examples of how these extensions
should be used and why. For example, using alias templates over class
templates.

llvm-svn: 363110
</content>
</entry>
<entry>
<title>[libcxx] Slightly improved policy for handling experimental features</title>
<updated>2019-06-11T14:48:40+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2019-06-11T14:48:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=776acf225b371b4f4623751a3de8c2d3d324473c'/>
<id>urn:sha1:776acf225b371b4f4623751a3de8c2d3d324473c</id>
<content type='text'>
Summary:
Following the discussion on the libcxx-dev mailing list
(http://lists.llvm.org/pipermail/libcxx-dev/2019-May/000358.html),
this implements the new policy for handling experimental features and
their deprecation. We basically add a deprecation warning for
std::experimental::filesystem, and we remove a bunch of &lt;experimental/*&gt;
headers that were now empty.

Reviewers: mclow.lists, EricWF

Subscribers: mgorny, christof, jkorous, dexonsmith, arphaman, libcxx-commits, jfb

Tags: #libc

Differential Revision: https://reviews.llvm.org/D62428

llvm-svn: 363072
</content>
</entry>
<entry>
<title>update debugging docs to be less out of date</title>
<updated>2019-06-08T04:59:41+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-06-08T04:59:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=99dfd7084d628457c459c3c74159d2122f759d2c'/>
<id>urn:sha1:99dfd7084d628457c459c3c74159d2122f759d2c</id>
<content type='text'>
llvm-svn: 362866
</content>
</entry>
<entry>
<title>[libcxx] Start defining lit features for tests depending on availability</title>
<updated>2019-02-05T19:22:38+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2019-02-05T19:22:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=51358e45e23ea0889d11a91c4077bb3af406be55'/>
<id>urn:sha1:51358e45e23ea0889d11a91c4077bb3af406be55</id>
<content type='text'>
This patch removes some vendor-specific availability XFAILs from the
test suite. In the future, when a new feature is introduced in the
dylib, an availability macro should be created and a matching lit
feature should be created. That way, the test suite can XFAIL whenever
the implementation lacks the necessary feature instead of being
cluttered by vendor-specific annotations.

Right now, those vendor-specific annotations are still somewhat cluttering
the test suite by being in `config.py`, but at least they are localized.
In the future, we could design a way to define those less intrusively or
even automatically based on the availability macros that already exist
in &lt;__config&gt;.

llvm-svn: 353201
</content>
</entry>
<entry>
<title>Support tests in freestanding</title>
<updated>2019-02-04T20:31:13+00:00</updated>
<author>
<name>JF Bastien</name>
<email>jfbastien@apple.com</email>
</author>
<published>2019-02-04T20:31:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2df59c50688c122bbcae7467d3eaf862c3ea3088'/>
<id>urn:sha1:2df59c50688c122bbcae7467d3eaf862c3ea3088</id>
<content type='text'>
Summary:
Freestanding is *weird*. The standard allows it to differ in a bunch of odd
manners from regular C++, and the committee would like to improve that
situation. I'd like to make libc++ behave better with what freestanding should
be, so that it can be a tool we use in improving the standard. To do that we
need to try stuff out, both with "freestanding the language mode" and
"freestanding the library subset".

Let's start with the super basic: run the libc++ tests in freestanding, using
clang as the compiler, and see what works. The easiest hack to do this:

In utils/libcxx/test/config.py add:

  self.cxx.compile_flags += ['-ffreestanding']

Run the tests and they all fail.

Why? Because in freestanding `main` isn't special. This "not special" property
has two effects: main doesn't get mangled, and main isn't allowed to omit its
`return` statement. The first means main gets mangled and the linker can't
create a valid executable for us to test. The second means we spew out warnings
(ew) and the compiler doesn't insert the `return` we omitted, and main just
falls of the end and does whatever undefined behavior (if you're luck, ud2
leading to non-zero return code).

Let's start my work with the basics. This patch changes all libc++ tests to
declare `main` as `int main(int, char**` so it mangles consistently (enabling us
to declare another `extern "C"` main for freestanding which calls the mangled
one), and adds `return 0;` to all places where it was missing. This touches 6124
files, and I apologize.

The former was done with The Magic Of Sed.

The later was done with a (not quite correct but decent) clang tool:

  https://gist.github.com/jfbastien/793819ff360baa845483dde81170feed

This works for most tests, though I did have to adjust a few places when e.g.
the test runs with `-x c`, macros are used for main (such as for the filesystem
tests), etc.

Once this is in we can create a freestanding bot which will prevent further
regressions. After that, we can start the real work of supporting C++
freestanding fairly well in libc++.

&lt;rdar://problem/47754795&gt;

Reviewers: ldionne, mclow.lists, EricWF

Subscribers: christof, jkorous, dexonsmith, arphaman, miyuki, libcxx-commits

Differential Revision: https://reviews.llvm.org/D57624

llvm-svn: 353086
</content>
</entry>
<entry>
<title>Move the feature test macros script to the utils directory.</title>
<updated>2019-02-02T23:13:49+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-02-02T23:13:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=508da4156aa6b0fd9c4a0146922268d6320fb679'/>
<id>urn:sha1:508da4156aa6b0fd9c4a0146922268d6320fb679</id>
<content type='text'>
It doesn't make a lot of sense to keep it with the tests,
deep into the test suite directonies.

llvm-svn: 352970
</content>
</entry>
<entry>
<title>Update an example to use the new LLVM file header.</title>
<updated>2019-01-19T11:54:04+00:00</updated>
<author>
<name>Chandler Carruth</name>
<email>chandlerc@gmail.com</email>
</author>
<published>2019-01-19T11:54:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=bd9dafecf7b7e311d73dad59fc1b1e913224aaff'/>
<id>urn:sha1:bd9dafecf7b7e311d73dad59fc1b1e913224aaff</id>
<content type='text'>
llvm-svn: 351653
</content>
</entry>
<entry>
<title>Implement feature test macros using a script.</title>
<updated>2019-01-16T01:37:43+00:00</updated>
<author>
<name>Eric Fiselier</name>
<email>eric@efcs.ca</email>
</author>
<published>2019-01-16T01:37:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=32784a740a0282dc6f4390b683ed6c6516f4d66c'/>
<id>urn:sha1:32784a740a0282dc6f4390b683ed6c6516f4d66c</id>
<content type='text'>
Summary:
This patch implements all the feature test macros libc++ currently supports, as specified by the standard or cppreference prior to C++2a.

The tests and `&lt;version&gt;` header are generated using a script. The script contains a table of each feature test macro, the headers it should be accessible from, and its values of each dialect of C++.
When a new feature test macro is added or needed, the table should be updated and the script re-run.



Reviewers: mclow.lists, jfb, serge-sans-paille

Reviewed By: mclow.lists

Subscribers: arphaman, jfb, ldionne, libcxx-commits

Differential Revision: https://reviews.llvm.org/D56750

llvm-svn: 351286
</content>
</entry>
<entry>
<title>[libcxx] Remove the availability_markup LIT feature</title>
<updated>2018-12-07T21:48:39+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2018-12-07T21:48:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=737be83d20cfa45f13b182edf13ab188ae345e5c'/>
<id>urn:sha1:737be83d20cfa45f13b182edf13ab188ae345e5c</id>
<content type='text'>
It is now equivalent to the 'availability' LIT feature, so there's no
reason to keep both.

llvm-svn: 348653
</content>
</entry>
<entry>
<title>[libcxx] Always enable availability in the lit test suite.</title>
<updated>2018-12-04T19:31:08+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne@apple.com</email>
</author>
<published>2018-12-04T19:31:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f14927e98e23a3c1806eeb12b89252c35e77c1ff'/>
<id>urn:sha1:f14927e98e23a3c1806eeb12b89252c35e77c1ff</id>
<content type='text'>
Summary:
Running the tests without availability enabled doesn't really make sense:
availability annotations allow catching errors at compile-time instead
of link-time. Running the tests without availability enabled allows
confirming that a test breaks at link-time under some configuration,
but it is more useful to instead check that it should fail at compile-time.

Always enabling availability in the lit test suite will greatly simplify
XFAILs and troubleshooting of failing tests, which is currently a giant
pain because we have these two levels of possible failure: link-time and
compile-time.

Reviewers: EricWF, mclow.lists

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Differential Revision: https://reviews.llvm.org/D55079

llvm-svn: 348296
</content>
</entry>
</feed>
