summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add temporary workaround to allow in-tree libc++ builds on WindowsEric Fiselier2017-05-111-1/+3
| | | | llvm-svn: 302753
* Final (hopefully) fix for the build bots.Zachary Turner2017-05-111-1/+1
| | | | | | | | This time it actually occurred to me to change the #defines to actually test the pre-processed out codepath. Hopefully this time it works. llvm-svn: 302752
* Try again to fix the buildbots.Zachary Turner2017-05-112-24/+21
| | | | | | | TaskGroup and Latch need to be in llvm::parallel::detail, not in llvm::detail. llvm-svn: 302751
* PR22877: When constructing an array via a constructor with a default argumentRichard Smith2017-05-112-6/+50
| | | | | | | | | | in list-initialization, run cleanups for the default argument after each iteration of the initialization loop. We previously only ran the destructor for any temporary once, at the end of the complete loop, rather than once per iteration! llvm-svn: 302750
* Fix build errors with Parallel.Zachary Turner2017-05-112-6/+7
| | | | llvm-svn: 302749
* [Support] Move Parallel algorithms from LLD to LLVM.Zachary Turner2017-05-1114-107/+73
| | | | | | Differential Revision: https://reviews.llvm.org/D33024 llvm-svn: 302748
* [libFuzzer] fix a compiler warningKostya Serebryany2017-05-101-1/+2
| | | | llvm-svn: 302747
* Revert "[SDAG] Relax conditions under stores of loaded values can be merged"David L. Jones2017-05-103-36/+28
| | | | | | | | | | | | | | | | | | | | | This reverts r302712. The change fails with ASAN enabled: ERROR: AddressSanitizer: use-after-poison on address ... at ... READ of size 2 at ... thread T0 #0 ... in llvm::SDNode::getNumValues() const <snip>/include/llvm/CodeGen/SelectionDAGNodes.h:855:42 #1 ... in llvm::SDNode::hasAnyUseOfValue(unsigned int) const <snip>/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:7270:3 #2 ... in llvm::SDValue::use_empty() const <snip> include/llvm/CodeGen/SelectionDAGNodes.h:1042:17 #3 ... in (anonymous namespace)::DAGCombiner::MergeConsecutiveStores(llvm::StoreSDNode*) <snip>/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:12944:7 Reviewers: niravd Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33081 llvm-svn: 302746
* [IR] Rollback changes in r302744 which caused buildbots failures.Eugene Zelenko2017-05-101-16/+13
| | | | llvm-svn: 302745
* [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC).Eugene Zelenko2017-05-1013-149/+265
| | | | llvm-svn: 302744
* Workaround -W#warnings on Windows until the correct fixes can landEric Fiselier2017-05-101-0/+3
| | | | llvm-svn: 302743
* [PHIElimination] Use the same name for DEBUG_TYPE and pass name.Davide Italiano2017-05-101-1/+1
| | | | | | In an attempt to reduce the confusion. llvm-svn: 302742
* clang/lib/Tooling/RefactoringCallbacks.cpp: Avoid std::errc::bad_message.NAKAMURA Takumi2017-05-101-2/+2
| | | | llvm-svn: 302741
* Partially revert r302685 and swith Apple-style full LTO builds toAdrian Prantl2017-05-101-0/+4
| | | | | | | | | -gline-tables-only. The memory consumption is apparently still too much for some of the green dragon builders. <rdar://problem/28672159> llvm-svn: 302740
* [libc++abi] Disable libc++ extern templates project-wideShoaib Meenai2017-05-102-1/+3
| | | | | | | | | | | | | | libc++abi can't depend on libc++, so disable extern templates in libc++ headers project-wide. This was previously done in cxa_demangle.cpp, but I consider it more appropriate to do at the cmake level (since none of libc++abi's source files can use libc++ extern templates). I also think the _LIBCPP_NO_EXCEPTIONS in cxa_demangle.cpp is suspicious, but I'm doing one thing at a time. Differential Revision: https://reviews.llvm.org/D32329 llvm-svn: 302739
* [Myriad] Pass -Xclang and -mllvm flags to moviCompileJames Y Knight2017-05-102-4/+8
| | | | | | | | Patch by Walter Lee. Differential Revision: https://reviews.llvm.org/D33020 llvm-svn: 302738
* Changes missed from r302732.Richard Smith2017-05-104-20/+9
| | | | llvm-svn: 302737
* Remove usages of _LIBCPP_MSVC which is never definedEric Fiselier2017-05-107-8/+8
| | | | llvm-svn: 302736
* [NFC] [Fortran Support] move Fortran array detection testcasesSiddharth Bhat2017-05-102-0/+0
| | | | | | move these testcases to where they belong: ScopDetect llvm-svn: 302735
* Fix MinGW build to use Pthread when the header is available.Eric Fiselier2017-05-101-1/+8
| | | | | | | | | | | | | Some MinGW configurations use WinPThread instead of the native threading interfaces. When this happens libc++ doesn't build because it tries to use the wrong threading API. This patch attempts to correctly detect and enable pthreads; Selecting them when __MINGW32__ is defined and __has_include(<pthread.h>) is true. I'm not sure if this works correctly 100% of the time but it seemed like the most correct approach available. llvm-svn: 302734
* [InstCombine] remove fold that swaps xor/or with constants; NFCISanjay Patel2017-05-102-12/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | // (X ^ C1) | C2 --> (X | C2) ^ (C1&~C2) This canonicalization was added at: https://reviews.llvm.org/rL7264 By moving xors out/down, we can more easily combine constants. I'm adding tests that do not change with this patch, so we can verify that those kinds of transforms are still happening. This is no-functional-change-intended because there's a later fold: // (X^C)|Y -> (X|Y)^C iff Y&C == 0 ...and demanded-bits appears to guarantee that any fold that would have hit the fold we're removing here would be caught by that 2nd fold. Similar reasoning was used in: https://reviews.llvm.org/rL299384 The larger motivation for removing this code is that it could interfere with the fix for PR32706: https://bugs.llvm.org/show_bug.cgi?id=32706 Ie, we're not checking if the 'xor' is actually a 'not', so we could reverse a 'not' optimization and cause an infinite loop by altering an 'xor X, -1'. Differential Revision: https://reviews.llvm.org/D33050 llvm-svn: 302733
* Improve diagnosis of unknown template name.Richard Smith2017-05-1010-36/+85
| | | | | | | | | When an undeclared identifier in a context that requires a type is followed by '<', only look for type templates when typo-correcting, tweak the diagnostic text to say that a template name (not a type name) was undeclared, and parse the template arguments when recovering from the error. llvm-svn: 302732
* Don't interfere with the __builtin_foo namespace under MSVCEric Fiselier2017-05-102-178/+103
| | | | | | | | | This patch follows up on feedback received in the review for D32988. Specifically that libc++ should not mess with the __builtin namespace, and that libc++ should use __popcnt to implement __pop_count under MSVC. llvm-svn: 302731
* AMDGPU: Make some packed shuffles freeMatt Arsenault2017-05-105-42/+155
| | | | | | | VOP3P instructions can encode access to either half of the register. llvm-svn: 302730
* AMDGPU: Add new subtarget features for gfx9 flat instructionsMatt Arsenault2017-05-103-1/+38
| | | | | | | Flat instructions gain an immediate offset, and 2 new sets of segment specific flat instructions are added. llvm-svn: 302729
* Fix bad #endif in msvc_stdlib_force_include.hpp.Billy Robert O'Neal III2017-05-101-6/+7
| | | | llvm-svn: 302728
* [libc++] Refactor Windows support headers.Eric Fiselier2017-05-1014-114/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch refactors and tries to remove as much of the Windows support headers as possible. This is needed because they currently introduce super weird include cycles and dependencies between STL and libc headers. The changes in this patch are: * remove `support/win32/support.h` completely. The required parts have either been moved into `support/win32/msvc_support.h` (for `MSVC` only helpers not needed by Clang), or directly into their respective `foo.h` headers. * Combine `locale_win32.h` and `locale_mgmt_win32.h` into a single headers, this header should only be included within `__locale` or `locale` to avoid include cycles. * Remove the unneeded parts of `limits_win32.h` and re-name it to `limits_msvc_win32.h` since it's only needed by Clang. I've tested this patch using Clang on Windows, but I suspect it might technically regress our non-existent support for MSVC. Is somebody able to double check? This refactor is needed to support upcoming fixes to `<locale>` on Windows. Reviewers: bcraig, rmaprath, compnerd, EricWF Reviewed By: EricWF Subscribers: majnemer, cfe-commits Differential Revision: https://reviews.llvm.org/D32988 llvm-svn: 302727
* [Simplify] Mark variables as used. NFC.Michael Kruse2017-05-101-0/+1
| | | | | | Mark one more variable as used that is needed in assertions. llvm-svn: 302726
* [Simplify] Mark variables as used. NFC.Michael Kruse2017-05-101-0/+2
| | | | | | Mark variables as used that are needed in assertions. llvm-svn: 302725
* Implement LWG 2591 - Patch from K-BalloEric Fiselier2017-05-102-1/+5
| | | | llvm-svn: 302724
* XFAIL is_trivially_copyable test for compilers that don't implement Core 2094Eric Fiselier2017-05-101-1/+3
| | | | llvm-svn: 302723
* [Fix][Fortran Support] Don't use -debug-only in pattern matching test casesSiddharth Bhat2017-05-102-2/+2
| | | | | | | -debug-only is unnecessary and causes the tests to break in Release mode. Remove the option to opt in the test cases. llvm-svn: 302722
* Fix enable_shared_from_this test in C++11Eric Fiselier2017-05-101-7/+6
| | | | llvm-svn: 302721
* Fix errored return value in CheckFunctionReturnType and add a fixit hintErich Keane2017-05-103-2/+16
| | | | | | | | | | | As discovered by ChenWJ and listed on cfe-dev, the error for Objective C return type ended up being wrong. This fixes that. Additionally, as a "while we're there", the other usages of this error and the usage of the FP above both use a FixItHint, so I'll add it here. Differential Revision: https://reviews.llvm.org/D32759 llvm-svn: 302720
* Remove unused #include.Rui Ueyama2017-05-101-1/+0
| | | | llvm-svn: 302719
* Rename parallelFor -> parallelForEachN.Rui Ueyama2017-05-105-6/+6
| | | | | | So that it is clear that the function is a wrapper for for_each_n. llvm-svn: 302718
* [ConstantRange] Fix the early out in ConstantRange::multiply for positive ↵Craig Topper2017-05-102-2/+3
| | | | | | | | | | numbers to really do what the comment says r271020 added an early out to skip the signed multiply portion of ConstantRange::multiply. The comment says we don't need to do signed multiply if the range is only positive numbers, but the implemented check only ensures that the start of the range is positive. It doesn't look at the end of the range. This patch checks the end of the range instead. Because Upper is one more than the end we have to see if its positive or if its one past the last positive number. llvm-svn: 302717
* [APInt] Add negate helper method to implement twos complement. Use it to ↵Craig Topper2017-05-102-8/+10
| | | | | | shorten code. llvm-svn: 302716
* [DeLICM] Avoid compiler warning. NFC.Michael Kruse2017-05-101-1/+1
| | | | | | | gcc 5.4 warns about using a C-style case to case away a const. Use case a const_cast instead. llvm-svn: 302715
* [NewGVN] Introduce a definesNoMemory() helper and use it.Davide Italiano2017-05-101-3/+5
| | | | | | | This is nice as is, but it will be used in my next patch to fix a bug. Suggested by Daniel Berlin. llvm-svn: 302714
* Clean up LIT failure output by not showing the entire environmentEric Fiselier2017-05-101-28/+3
| | | | llvm-svn: 302713
* [SDAG] Relax conditions under stores of loaded values can be mergedNirav Dave2017-05-103-28/+36
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Allow consecutive stores whose values come from consecutive loads to merged in the presense of other uses of the loads. Previously this was disallowed as in general the merged load cannot be shared with the other uses. Merging N stores into 1 may cause as many as N redundant loads. However in the context of caching this should have neglible affect on memory pressure and reduce instruction count making it almost always a win. Fixes PR32086. Reviewers: spatel, jyknight, andreadb, hfinkel, efriedma Reviewed By: efriedma Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30471 llvm-svn: 302712
* [DeLICM] Always normalize domain. NFC.Michael Kruse2017-05-102-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Some isl functions can simplify their __isl_keep arguments. The argument object after the call uses different contraints to represent the same set. Different contraints can result in different outputs when printed to a string. In assert builds additional isl functions are called (in assert() or mentioned, these can change the internal representation of its read-only arguments such that printed strings are different in debug and non-debug builds. What happened here is that a call to isl_set_is_equal inside an assert in getScatterFor normalizes one of its arguments such that one redundant constraint is removed. The redundant constraint therefore does not appear in the string representing the domain, which FileCheck notices as a regression test failure compared to a build with assertions disabled. This fix removes the redundant contraints the domain from the start such that the redundant contraint is removed in assert and non-assert builds. Isl adds a flag to such sets such that the removal of redundancies is not done multiple times (here: by isl_set_is_equal). Thanks to Tobias Grosser for reporting and hinting to the cause. llvm-svn: 302711
* Update is_trivially_copyable tests with CWG 2094Billy Robert O'Neal III2017-05-101-4/+4
| | | | | | | | | Clang 5.0 implements these changes here: https://github.com/llvm-mirror/clang/commit/87cd035326a39523eeb1b295ad36cff337141ef9 MSVC++ will implement these changes in the first toolset update to 2017. Differential Revision: https://reviews.llvm.org/D33021 llvm-svn: 302710
* [libc++] Fix PR32979 - types with a private std::enable_shared_from_this ↵Eric Fiselier2017-05-102-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | base break shared_ptr Summary: This patch fixes bugs.llvm.org/PR32979. [util.smartptr.shared.const] says: > In the constructor definitions below, enables shared_from_this with p, for a pointer p of type Y*, means > that if Y has an unambiguous and accessible base class that is a specialization of enable_shared_from_- > this. This means that libc++ needs to respect the access specifier of the base class, and not attempt to construct and enabled_shared_from_this base if it is private. However access specifiers don't affect overload resolution so our current implementation will attempt to construct the private base. This patch uses SFINAE to correctly detect if the shared_ptr input has an accessible enable_shared_from_this base class. Reviewers: mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D33033 llvm-svn: 302709
* Use a DenseMap in LinkerScript::getCmd.Rafael Espindola2017-05-103-7/+17
| | | | | | This improves many-sections.s with a linker script from 22s to 0.9s. llvm-svn: 302708
* [test] support machinery changes for EDG & C1XX /ZaCasey Carter2017-05-106-9/+77
| | | | | | | | | | | | | | | | | | | | | This change works around a couple of bugs: 1. EDG doesn't like explicit constexpr in a derived class. This program: struct Base {}; struct Derived : Base { constexpr Derived() = default; }; triggers "error: defaulted default constructor cannot be constexpr." 2. C1XX with /Za has no idea which constructor needs to be valid for copy elision. The change also conditionally disables parts of the msvc_stdlib_force_include.hpp header that conflict with external configuration when _LIBCXX_IN_DEVCRT is defined. Differential Revision: https://reviews.llvm.org/D32778 llvm-svn: 302707
* Refactor OutputSection to OutputSectionCommand mapping.Rafael Espindola2017-05-102-31/+25
| | | | | | We now always use getCmd. I will optimize it in a followup commit. llvm-svn: 302706
* Ensure non-null ProfileSummaryInfo passed to ModuleSummaryIndex builderTeresa Johnson2017-05-103-2/+5
| | | | | | | | | | | | This fixes a ubsan bot failure after r302597, which made getProfileCount non-static, but ended up invoking it on a null ProfileSummaryInfo object in some cases from buildModuleSummaryIndex. Most testing passed because the non-static getProfileCount currently doesn't access any member variables, but I found this when testing a follow on patch (D32877) that adds a member variable access. llvm-svn: 302705
* [APInt] Make toString use udivrem instead of calling the divide helper ↵Craig Topper2017-05-101-8/+9
| | | | | | | | | | method directly. Do a better job of reusing allocations while looping. NFCI This lets toString take advantage of the degenerate case checks in udivrem and is just generally cleaner. One minor downside of this is that the divisor APInt now needs to be the same size as Tmp which requires an additional allocation. But we were doing a poor job of reusing allocations before so the new code should still be an improvement. llvm-svn: 302704
OpenPOWER on IntegriCloud