LLouis Dionne[libc++] Fix modules issues on OS X
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Add include for 'test_macros.h' to all the tests that were missing them. Thanks to Zoe for the (big, but simple) patch. NFC intended. llvm-svn: 362252 | 7 年前 | |
[libc++] Replace __ppc64__ with __powerpc64__ and fix is_iec559 for non-ibm128 The lowercase __ppc64__ is not defined by non-darwin powerpc64 GCC, therefore it lures users to write code which is not portable to GCC. Migrate to __powerpc64__ in preparation for undefining __ppc64__. __powerpc64__ is much more common than __PPC64__. Update alignment_of.pass.cpp to use 1 unconditionally: on powerpc-unknown-linux-gnu alignof(bool) = _Alignof(bool) = __alignof(bool) = 1. The value 4 might be derived from an ancient Clang. Change is_iec559 to true when long double uses uses IEEE 754 quadruple or double precision (i.e. not ibm128). Reviewed By: #libc, thesamesam, ldionne Differential Revision: https://reviews.llvm.org/D137513 | 3 年前 | |
Add include for 'test_macros.h' to all the tests that were missing them. Thanks to Zoe for the (big, but simple) patch. NFC intended. llvm-svn: 362252 | 7 年前 | |
Support tests in freestanding 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++. <rdar://problem/47754795> Reviewers: ldionne, mclow.lists, EricWF Subscribers: christof, jkorous, dexonsmith, arphaman, miyuki, libcxx-commits Differential Revision: https://reviews.llvm.org/D57624 llvm-svn: 353086 | 7 年前 | |
Add include for 'test_macros.h' to all the tests that were missing them. Thanks to Zoe for the (big, but simple) patch. NFC intended. llvm-svn: 362252 | 7 年前 | |
[libc++] Fix modules issues on OS X First, fix a collision with the Point type from MacTypes.h, which was reported on Slack, 2022-07-31: https://cpplang.slack.com/archives/C2X659D1B/p1659284691275889 Second, rename the meta:: namespace to types::. OSX's "/usr/include/ncurses.h" defines a meta function, and is (for some reason) included in "<SDK>/usr/include/module.modulemap", so that identifier is off-limits for us to use in anything that compiles with -fmodules: libcxx/test/support/type_algorithms.h:16:11: error: redefinition of 'meta' as different kind of symbol namespace meta { ^ <SDK>/usr/include/ncurses.h:603:28: note: previous definition is here extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ ^ Finally, add a CI configuration for modules on OS X to make sure it does not regress. Differential Revision: https://reviews.llvm.org/D144915 | 3 年前 |