summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [X86][AVX512] Tag CLWB instruction to CLFLUSH/PREFETCH scheduler classSimon Pilgrim2017-12-081-3/+2
| | | | llvm-svn: 320156
* [PatternMatch] Add matcher for LoadInst, NFC.Alexey Bataev2017-12-081-0/+20
| | | | llvm-svn: 320155
* [X86][AVX512] Tag AVX512_512_SEXT_MASK_* instructions scheduler classesSimon Pilgrim2017-12-081-1/+1
| | | | | | Match VPTERNLOG which these pseudos will eventually alias to llvm-svn: 320154
* [CMake] Remove legacy LIBOMP_LIT_ARGSJonas Hahnfeld2017-12-081-4/+0
| | | | | | The bots have been updated, this option isn't needed anymore. llvm-svn: 320153
* Use hyperbarrier by default on all architecturesJonas Hahnfeld2017-12-081-15/+6
| | | | | | | | | | | | | | | | | | All architectures except x86_64 used the linear barrier implementation by default which doesn't give good performance for a larger number of threads. Improvements for PARALLEL overhead (EPCC) with this patch on a Power8 system (2 sockets x 10 cores x 8 threads, OMP_PLACES=cores) 20 threads: 4.55us -> 3.49us 40 threads: 8.84us -> 4.06us 80 threads: 19.18us -> 4.74us 160 threads: 54.22us -> 6.73us Differential Revision: https://reviews.llvm.org/D40358 llvm-svn: 320152
* Fix thread affinity on non-x86 LinuxJonas Hahnfeld2017-12-082-5/+2
| | | | | | | | | | | | | | | | | To make thread affinity work according to the OpenMP spec, the runtime needs information about the hardware topology. On Linux the default way is to parse /proc/cpuinfo which contains this information for x86 machines but (at least) not for AArch64 and Power architectures. Fortunately, there is a different code path which is able to get that data from sysfs. The needed patch has landed in 2006 for Linux 2.6.16 which is safe to assume nowadays (even RHEL 5 had a kernel version derived from 2.6.18, and we are now at RHEL 7!). Differential Revision: https://reviews.llvm.org/D40357 llvm-svn: 320151
* Add missing memory barrier for queuing locksJonas Hahnfeld2017-12-082-1/+2
| | | | | | | | | | Otherwise I see hangs in the omp_single_copyprivate test when compiling in release mode. With the debug assertions, I get a failure `head > 0 && tail > 0`. Differential Revision: https://reviews.llvm.org/D40722 llvm-svn: 320150
* [OPENMP] Initial codegen for `target teams distribute` directive.Alexey Bataev2017-12-0817-35/+2937
| | | | | | Host + default devices codegen for `target teams distribute` directive. llvm-svn: 320149
* [clangd] Convert lit code completion tests to unit-tests. NFCSam McCall2017-12-086-326/+278
| | | | | | | | | | | | Summary: This improves readability of tests and error messages. Reviewers: ioeric Subscribers: klimek, ilya-biryukov, cfe-commits Differential Revision: https://reviews.llvm.org/D40952 llvm-svn: 320148
* Print the bad value and required alignment for unaligned relocationsAlexander Richardson2017-12-084-7/+8
| | | | | | | | | | | | Reviewers: ruiu, grimar Reviewed By: ruiu Subscribers: emaste, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D40963 llvm-svn: 320147
* [AMDGPU] add labels to +DumpCode outputTim Renouf2017-12-082-4/+29
| | | | | | | | | | | | | | Summary: +DumpCode is a hack to embed disassembly in the ELF file. This commit fixes it to include labels, to make it slightly more useful. Reviewers: arsenm, kzhuravl Subscribers: nhaehnle, timcorringham, dstuttard, llvm-commits, t-tye, yaxunl, wdng, kzhuravl Differential Revision: https://reviews.llvm.org/D40169 llvm-svn: 320146
* [NFC] Rename variable from Cond to Pred to make it more soundMax Kazantsev2017-12-081-12/+12
| | | | llvm-svn: 320144
* [SCEV] Fix predicate usage in computeExitLimitFromICmpMax Kazantsev2017-12-082-1/+21
| | | | | | | | | | | | | | | | | | | In this method, we invoke `SimplifyICmpOperands` which takes the `Cond` predicate by reference and may change it along with `LHS` and `RHS` SCEVs. But then we invoke `computeShiftCompareExitLimit` with Values from which the SCEVs have been derived, these Values have not been modified while `Cond` could be. One of possible outcomes of this is that we may falsely prove that an infinite loop ends within some finite number of iterations. In this patch, we save the original `Cond` and pass it along with original operands. This logic may be removed in future once `computeShiftCompareExitLimit` works with SCEVs instead of value operands. Reviewed By: sanjoy Differential Revision: https://reviews.llvm.org/D40953 llvm-svn: 320142
* [CodeGen] Move printing MO_MachineBasicBlock operands to MachineOperand::printFrancis Visoiu Mistrih2017-12-081-4/+2
| | | | | | | Work towards the unification of MIR and debug output by refactoring the interfaces. llvm-svn: 320141
* [CodeGen] Move printing MO_CImmediate operands to MachineOperand::printFrancis Visoiu Mistrih2017-12-084-6/+32
| | | | | | | Work towards the unification of MIR and debug output by refactoring the interfaces. llvm-svn: 320140
* [change-namespace] Fix crash when injected base-class name is used in friend ↵Eric Liu2017-12-082-0/+58
| | | | | | | | | | | | declarations. Reviewers: hokein Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D41001 llvm-svn: 320139
* [cmake] Make setting of CMAKE_C(XX)_COMPILER flags overridable for cross-buildsPavel Labath2017-12-081-5/+9
| | | | | | | | | | | | | | | | | | | | | | | Summary: r319898 made it possible to override these variables via the CROSS_TOOLCHAIN_FLAGS setting, but this only worked if one explicitly specifies these variables there. If, instead, one uses CROSS_TOOLCHAIN_FLAGS to specify a toolchain file (as our internal builds do, to point cmake to a checked-in toolchain), the CMAKE_C(XX)_COMPILER flags would still win over the ones specified by the toolchain file. To fix is to make the mere presence of these flags overridable. I do this by putting them as a default value for the CROSS_TOOLCHAIN_FLAGS setting, so they can be overridden at cmake configuration time. Reviewers: hintonda, beanz Subscribers: bogner, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D40947 llvm-svn: 320138
* [X86][Haswell]: Updating the scheduling information for the Haswell subtarget.Gadi Haber2017-12-0829-2683/+2796
| | | | | | | | | | | | | | Updated the scheduling information for the Haswell subtarget with the following changes: Regrouped the instructions after adding appropriate load + store latencies. Added scheduling for missing instructions such as the GATHER instrs. The changes were made after revisiting the latencies impact of all memory uOps. Reviewers: RKSimon, zvi, craig.topper, apilipenko Differential Revision: https://reviews.llvm.org/D40021 Change-Id: Iaf6c1f5169add1552845a8a566af4e5a359217a7 llvm-svn: 320137
* [FuzzMutate] Correctly insert sinks and sources around invoke instructionsIgor Laevsky2017-12-082-1/+44
| | | | | | Differential Revision: https://reviews.llvm.org/D40840 llvm-svn: 320136
* In stdbool.h, define bool, false, true only in gnu++98Stephan Bergmann2017-12-082-6/+15
| | | | | | | | | | GCC has meanwhile corrected that with the similar <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=216679> "C++11 explicitly forbids macros for bool, true and false." Differential Revision: https://reviews.llvm.org/D40167 llvm-svn: 320135
* [X86] Always consider inserting a vXi1 vector into the lsbs of a zero vector ↵Craig Topper2017-12-082-27/+104
| | | | | | | | | | | | to be legal during lowering. Add isel patterns to emit shifts. Previously we only allowed these through if the subvector came from a compare or test instruction which we would again check for during isel. With this change we only check for the compare and test instructions during isel and have fallback patterns that emit the shifts if needed. I noticed that in a lot of cases we don't actually see the compare during lowering and rely on an odd legalization of concat_vectors with a zero vector as the second argument. This keeps the concat_vectors around long enough for a later dag combine to expose the compare then we re-legalize the concat_vectors and catch the compare. llvm-svn: 320134
* Revert r320124 "Fold together the in-range and out-of-range portions of ↵Hans Wennborg2017-12-081-35/+98
| | | | | | | | | | | | | | | | | | | | -Wtautological-compare." This broke Chromium: ../../base/trace_event/trace_log.cc:1545:29: error: comparison of constant 64 with expression of type 'unsigned int' is always true [-Werror,-Wtautological-constant-out-of-range-compare] DCHECK(handle.event_index < TraceBufferChunk::kTraceBufferChunkSize); ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The 'unsigned int' is really a 6-bit bitfield, which is why it's always less than 63. Did this use to fall under the "in-range" case before? I thought we didn't use to warn when comparing against the boundaries of a type. llvm-svn: 320133
* [Blocks] Inherit sanitizer options from parent declVedant Kumar2017-12-082-2/+5
| | | | | | | | | | | | There is no way to apply sanitizer suppressions to ObjC blocks. A reasonable default is to have blocks inherit their parent's sanitizer options. rdar://32769634 Differential Revision: https://reviews.llvm.org/D40668 llvm-svn: 320132
* Add a test that the __STDC_VERSION__ macro reports the correct value for ↵Aaron Ballman2017-12-081-0/+4
| | | | | | -std=c17. llvm-svn: 320131
* Use lambda to simplify code.Rui Ueyama2017-12-081-26/+25
| | | | | | Differential Revision: https://reviews.llvm.org/D40994 llvm-svn: 320130
* [ubsan] Test for pass_object_size bounds checksVedant Kumar2017-12-081-0/+16
| | | | llvm-svn: 320129
* [ubsan] Use pass_object_size info in bounds checksVedant Kumar2017-12-083-0/+128
| | | | | | | | | Teach UBSan's bounds check to opportunistically use pass_object_size information to check array accesses. rdar://33272922 llvm-svn: 320128
* [MachException] Avoid alignment UB, NFCVedant Kumar2017-12-082-4/+11
| | | | | | | | | | | Fix alignment UB in some Mach exception-handling logic. This lets us build lldb and debugserver with UBSan in trapping mode, and get further along in the testing process before a trap is encountered. rdar://35923991 llvm-svn: 320127
* Remove extant references to g_message_mutex, NFCVedant Kumar2017-12-082-17/+6
| | | | | | Thanks to Jim Ingham for providing the explanation! llvm-svn: 320126
* Prefer `ArrayRef` over `const std::vector&`Sam Clegg2017-12-0812-25/+25
| | | | | | Differential Revision: https://reviews.llvm.org/D40993 llvm-svn: 320125
* Fold together the in-range and out-of-range portions of -Wtautological-compare.Richard Smith2017-12-081-98/+35
| | | | llvm-svn: 320124
* [AArch64] Avoid SIMD interleaved store instruction for Exynos.Abderrazek Zaafrani2017-12-085-122/+597
| | | | | | | Replace interleaved store instructions by equivalent and more efficient instructions based on latency cost model. Https://reviews.llvm.org/D38196 llvm-svn: 320123
* Unify implementation of our two different flavours of -Wtautological-compare.Richard Smith2017-12-084-245/+295
| | | | | | | | In so doing, fix a handful of remaining bugs where we would report false positives or false negatives if we promote a signed value to an unsigned type for the comparison. llvm-svn: 320122
* Revert "[WebAssemby] Support main functions with alternate signatures."Derek Schuff2017-12-082-63/+1
| | | | | | | | | This reverts commit 959e37e669b0c3cfad4cb9f1f7c9261ce9f5e9ae. That commit doesn't handle the case where main is declared rather than defined, in particular the even-more special case where main is a prototypeless declaration (which is of course the one actually used by musl currently). llvm-svn: 320121
* [X86] Handle alls version of vXi1 insert_vector_elt with a constant index ↵Craig Topper2017-12-087-8092/+6462
| | | | | | | | | | | | without falling back to shuffles. We previously only supported inserting to the LSB or MSB where it was easy to zero to perform an OR to insert. This change effectively extracts the old value and the new value, xors them together and then xors that single bit with the correct location in the original vector. This will cancel out the old value in the first xor leaving the new value in the position. The way I've implemented this uses 3 shifts and two xors and uses an additional register. We can avoid the additional register at the cost of another shift. llvm-svn: 320120
* [X86] Fix indentation. NFCCraig Topper2017-12-081-2/+2
| | | | llvm-svn: 320119
* [WebAssembly] Add check to ensure symbol VA is only set once. NFC.Sam Clegg2017-12-082-12/+2
| | | | | | | | Also remove resulting unneeded function. Differential Revision: https://reviews.llvm.org/D40990 llvm-svn: 320118
* Fix a test that didn't actually test anything.Rui Ueyama2017-12-081-2/+2
| | | | llvm-svn: 320117
* [ORC] Mark SymbolStringPool methods as inline to avoid linkage errors, add aLang Hames2017-12-072-5/+13
| | | | | | less-than comparison to SymbolStringPtr and a corresponding unit test. llvm-svn: 320116
* Correct line endings that got mixed up in r320088; NFC.Aaron Ballman2017-12-071-12/+12
| | | | llvm-svn: 320115
* Fix more line endings changed in r320089. NFC.Ahmed Bougacha2017-12-071-1918/+1918
| | | | llvm-svn: 320114
* Correct line endings that got mixed up in r320089; NFC.Aaron Ballman2017-12-075-718/+718
| | | | llvm-svn: 320113
* Remove line-endings added by r320089. NFC.Ahmed Bougacha2017-12-071-185/+185
| | | | llvm-svn: 320112
* [dump] Make LLVM_ENABLE_DUMP independent, and move to llvm-config.hDon Hinton2017-12-073-8/+4
| | | | | | | | | Summary: Make LLVM_ENABLE_DUMP independent LLVM_ENABLE_ASSERTIONS, move it to llvm-config.h, and update description. Differential Revision: https://reviews.llvm.org/D38406 llvm-svn: 320111
* [PowerPC][asan] Update asan to handle changed memory layouts in newer kernelsBill Seurer2017-12-072-7/+14
| | | | | | | | | | | | | | | In more recent Linux kernels with 47 bit VMAs the layout of virtual memory for powerpc64 changed causing the address sanitizer to not work properly. This patch adds support for 47 bit VMA kernels for powerpc64 and fixes up test cases. https://reviews.llvm.org/D40908 There is an associated patch for trunk. Tested on several 4.x and 3.x kernel releases. llvm-svn: 320110
* [PowerPC][asan] Update asan to handle changed memory layouts in newer kernelsBill Seurer2017-12-072-2/+2
| | | | | | | | | | | | | | | In more recent Linux kernels with 47 bit VMAs the layout of virtual memory for powerpc64 changed causing the address sanitizer to not work properly. This patch adds support for 47 bit VMA kernels for powerpc64 and fixes up test cases. https://reviews.llvm.org/D40907 There is an associated patch for compiler-rt. Tested on several 4.x and 3.x kernel releases. llvm-svn: 320109
* [DebugInfo] Fix register variables not showing up in pdb.Zachary Turner2017-12-072-3/+15
| | | | | | | | | | | | | Previously, when linking against libcmt from the MSVC runtime, lld-link /verbose would show "Ignoring unknown symbol record with kind 0x1006". It turns out this was because TypeIndexDiscovery did not handle S_REGISTER records, so these records were not getting properly remapped. Patch by: Alexnadre Ganea Differential Revision: https://reviews.llvm.org/D40919 llvm-svn: 320108
* [ModRefInfo] Make enum ModRefInfo an enum class [NFC].Alina Sbirlea2017-12-0714-171/+183
| | | | | | | | | | | | | | | Summary: Make enum ModRefInfo an enum class. Changes to ModRefInfo values should be done using inline wrappers. This should prevent future bit-wise opearations from being added, which can be more error-prone. Reviewers: sanjoy, dberlin, hfinkel, george.burgess.iv Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D40933 llvm-svn: 320107
* Temporarily revert "[PowerPC] Allow tail calls of fastcc functions from C ↵Eric Christopher2017-12-072-13/+8
| | | | | | | | | | CallingConv functions." It is causing sanitizer failures on llvm tests in a bootstrapped compiler. No bot link since it's currently down, but following up to get the bot up. This reverts commit r319218. llvm-svn: 320106
* Test case update for D40873Xinliang David Li2017-12-071-2/+2
| | | | llvm-svn: 320105
OpenPOWER on IntegriCloud