| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 6 年前 | |
[runtimes] Use int main(int, char**) consistently in tests This is needed when running the tests in Freestanding mode, where main() isn't treated specially. In Freestanding, main() doesn't get mangled as extern "C", so whatever runtime we're using fails to find the entry point. One way to solve this problem is to define a symbol alias from __Z4mainiPPc to _main, however this requires all definitions of main() to have the same mangling. Hence this commit. | 5 年前 | |
[libc++] Fix incorrect main() signatures in the tests Those creep up from time to time. We need to use int main(int, char**) because in freestanding mode, main doesn't get special treatment and special mangling, so we setup a symbol alias from the mangled version of main(int, char**) to extern "C" main. That only works if all the tests are consistent about how they define their main function. | 4 年前 | |
[libc++][test] Fix more MSVC and Clang warnings (#74965) Found while running libc++'s tests with MSVC's STL. * libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/ranges_sort_heap.pass.cpp + Fix Clang -Wunused-variable, because LIBCPP_ASSERT expands to nothing for MSVC's STL. + This is the same "always void-cast" change that #73437 applied to the neighboring complexity.pass.cpp. I missed that ranges_sort_heap.pass.cpp was also affected because we had disabled this test. * libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/buffered_reads.pass.cpp * libcxx/test/std/input.output/file.streams/fstreams/ofstream.members/buffered_writes.pass.cpp + Fix MSVC "warning C4244: '=': conversion from '__int64' to '_Ty', possible loss of data". + This is a valid warning, possibly the best one that MSVC found in this entire saga. We're accumulating a std::vector<std::streamsize> and storing the result in std::streamsize total_size but we actually have to start with std::streamsize{0} or we'll truncate. * libcxx/test/std/input.output/filesystems/fs.enum/enum.path.format.pass.cpp + Fix Clang -Wunused-local-typedef because the following usage is libc++-only. + I'm just expanding it at the point of use, and using the dedicated LIBCPP_STATIC_ASSERT to keep the line length down. * libcxx/test/std/input.output/syncstream/syncbuf/syncstream.syncbuf.assign/swap.pass.cpp + Fix MSVC "warning C4242: 'argument': conversion from 'int' to 'const _Elem', possible loss of data". + This is a valid warning (possibly the second-best) as sputc() returns int_type. If sputc() returns something unexpected, we want to know, so we should separately say expected.push_back(CharT('B')). * libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align_nothrow.pass.cpp * libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.size_nothrow.pass.cpp + Fix MSVC "warning C6001: Using uninitialized memory 'x'." + [N4964](https://wg21.link/N4964) \[new.delete.single\]/12: > *Effects:* The deallocation functions (\[basic.stc.dynamic.deallocation\]) called by a *delete-expression* (\[expr.delete\]) to render the value of ptr invalid. + \[basic.stc.general\]/4: > When the end of the duration of a region of storage is reached, the values of all pointers representing the address of any part of that region of storage become invalid pointer values (\[basic.compound\]). Indirection through an invalid pointer value and passing an invalid pointer value to a deallocation function have undefined behavior. Any other use of an invalid pointer value has implementation-defined behavior. + In certain configurations, after delete x; MSVC will consider x to be radioactive (and in other configurations, it'll physically null out x as a safety measure). We can copy it into old_x before deletion, which the implementation finds acceptable. * libcxx/test/std/ranges/range.adaptors/range.elements/general.pass.cpp * libcxx/test/std/ranges/range.adaptors/range.elements/iterator/deref.pass.cpp + Fix MSVC "warning C4242: 'initializing': conversion from '_Ty' to '_Ty', possible loss of data". + This was being emitted in pair and tuple's perfect forwarding constructors. Passing short{1} allows MSVC to see that no truncation is happening. * libcxx/test/std/ranges/range.adaptors/range.elements/iterator/member_types.compile.pass.cpp + Fix MSVC "warning C4242: 'initializing': conversion from '_Ty' to '_Ty2', possible loss of data". + Similarly, this was being emitted in pair's perfect forwarding constructor. After passing short{1}, I reduced repetition by relying on CTAD. (I can undo that cleanup if it's stylistically undesirable.) * libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp + Fix MSVC "warning C4930: 'std::reference_wrapper<int> purr(void)': prototyped function not called (was a variable definition intended?)". + There's no reason for purr() to be locally declared (aside from isolating it to a narrow scope, which has minimal benefits); it can be declared like meow() above. :smile_cat: * libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared_for_overwrite.pass.cpp * libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique_for_overwrite.default_init.pass.cpp + Fix MSVC static analysis warnings when replacing operator new: warning C28196: The requirement that '(_Param_(1)>0)?(return!=0):(1)' is not satisfied. (The expression does not evaluate to true.) warning C6387: 'return' could be '0': this does not adhere to the specification for the function 'new'. warning C6011: Dereferencing NULL pointer 'reinterpret_cast<char *>ptr+i'. + All we need is a null check, which appears in other operator new replacements: https://github.com/llvm/llvm-project/blob/b85f1f9b182234ba366d78ae2174a149e44d08c1/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.size.replace.pass.cpp#L27-L28 | 2 年前 | |
[libc++] Make C++03 reference_wrapper more like C++11. Remove a bunch of LIBCPP_CXX03_LANG. This is the result of a rabbithole to re-eliminate the workaround I introduced into std::cref in D117953. It turns out that Clang's C++03 mode (the only compiler we care about C++03 for) now supports all the things we were originally eschewing via LIBCPP_CXX03_LANG; we can fully support these reference_wrapper features in C++03 mode, and un-XFAIL the relevant tests. Drive-by constexprify a few more tests. Differential Revision: https://reviews.llvm.org/D117974 | 4 年前 | |
[libc++] Make C++03 reference_wrapper more like C++11. Remove a bunch of LIBCPP_CXX03_LANG. This is the result of a rabbithole to re-eliminate the workaround I introduced into std::cref in D117953. It turns out that Clang's C++03 mode (the only compiler we care about C++03 for) now supports all the things we were originally eschewing via LIBCPP_CXX03_LANG; we can fully support these reference_wrapper features in C++03 mode, and un-XFAIL the relevant tests. Drive-by constexprify a few more tests. Differential Revision: https://reviews.llvm.org/D117974 | 4 年前 | |
[libc++] [LWG2993] reference_wrapper<T> conversion from U&& Implement the resolution of LWG2993. Replace a deleted constructor with a constructor that SFINAEs away in appropriate circumstances. Also, now that the constructor is templated, we must have an explicit deduction guide to make CTAD work. Some tests have been merged in from Agustín Bergé's D40259. Differential Revision: https://reviews.llvm.org/D92725 | 5 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 年前 | ||
| 5 年前 | ||
| 4 年前 | ||
| 2 年前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 5 年前 |