summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [fuzzer] Script to detect unbalanced allocation in -trace_malloc outputVitaly Buka2017-11-012-0/+120
| | | | | | | | | | Reviewers: kcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39466 llvm-svn: 317119
* Include GUIDs from the same module when computing GUIDs that needs to be ↵Dehao Chen2017-11-014-27/+48
| | | | | | | | | | | | | | | | imported. Summary: In the compile phase of SamplePGO+ThinLTO, ICP is not invoked. Instead, indirect call targets will be included as function metadata for ThinIndex to buidl the call graph. This should not only include functions defined in other modules, but also functions defined in the same module, otherwise ThinIndex may find the callee dead and eliminate it, while ICP in backend will revive the symbol, which leads to undefined symbol. Reviewers: tejohnson Reviewed By: tejohnson Subscribers: sanjoy, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D39480 llvm-svn: 317118
* [globalisel][tablegen] Add support for multi-insn emissionDaniel Sanders2017-11-016-30/+238
| | | | | | | | | | | | | | The importer will now accept nested instructions in the result pattern such as (ADDWrr $a, (SUBWrr $b, $c)). This is only valid when the nested instruction def's a single vreg and the parent instruction consumes a single vreg where a nested instruction is specified. The importer will automatically create a vreg to connect the two using the type information from the pattern. This vreg will be constrained to the register classes given in the instruction definitions*. * REG_SEQUENCE is explicitly rejected because of this. The definition doesn't constrain to a register class and it therefore needs special handling. llvm-svn: 317117
* Revert 317016 and 317048Philip Reames2017-11-011-44/+50
| | | | | | The former appears to have introduced a miscompile in a stage2 clang build. Revert so I can investigate offline. llvm-svn: 317116
* [OpenMP] Fix race condition in omp_init_lockJonathan Peyton2017-11-012-3/+46
| | | | | | | | | | | | | | | | | | | | | This is a partial fix for bug 34050. This prevents callers of omp_set_lock (which does not hold __kmp_global_lock) from ever seeing an uninitialized version of __kmp_i_lock_table.table. It does not solve a use-after-free race condition if omp_set_lock obtains a pointer to __kmp_i_lock_table.table before it is updated and then attempts to dereference afterwards. That race is far less likely and can be handled in a separate patch. The unit test usually segfaults on the current trunk revision. It passes with the patch. Patch by Adam Azarchs Differential Revision: https://reviews.llvm.org/D39439 llvm-svn: 317115
* AMDGPU: Fix set but not used warnings related to AMDGPUASKonstantin Zhuravlyov2017-11-017-36/+32
| | | | | | Differential Revision: https://reviews.llvm.org/D39499 llvm-svn: 317114
* [clang-format] Make parseUnaryOperator non-recursive, NFCIKrasimir Georgiev2017-11-011-10/+8
| | | | | | | | | | | | | | | | | Summary: This patch makes the implementation of parseUnaryOperator non-recursive. We had a problem with a file starting with tens of thousands of +'es and -'es which caused clang-format to stack overflow. Reviewers: bkramer Reviewed By: bkramer Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D39498 llvm-svn: 317113
* [X86] Prevent fast isel from folding loads into the instructions listed in ↵Craig Topper2017-11-014-6/+177
| | | | | | | | | | | | | | hasPartialRegUpdate. This patch moves the check for opt size and hasPartialRegUpdate into the lower level implementation of foldMemoryOperandImpl to catch the entry point that fast isel uses. We're still folding undef register instructions in AVX that we should also probably disable, but that's a problem for another patch. Unfortunately, this requires reordering a bunch of functions which is why the diff is so large. I can do the function reordering separately if we want. Differential Revision: https://reviews.llvm.org/D39402 llvm-svn: 317112
* Adds code to PPC ISEL lowering to recognize half-word inserts from ↵Graham Yiu2017-11-014-5/+439
| | | | | | | | vector_shuffles, and use P9 shift and vector insert instructions instead of vperm. Differential Revision: https://reviews.llvm.org/D34160 llvm-svn: 317111
* Revert r317105 to investigate bot breakage.Adrian Prantl2017-11-012-109/+1
| | | | llvm-svn: 317110
* Revert r317106 to facilitate reverting r317105.Adrian Prantl2017-11-012-26/+0
| | | | llvm-svn: 317109
* LTO: Apply global DCE to ThinLTO modules at LTO opt level 0.Peter Collingbourne2017-11-014-32/+59
| | | | | | | | | | | | | | | | | | | | | | | | | This is necessary because DCE is applied to full LTO modules. Without this change, a reference from a dead ThinLTO global to a dead full LTO global will result in an undefined reference at link time. This problem is only observable when --gc-sections is disabled, or when targeting COFF, as the COFF port of lld requires all symbols to have a definition even if all references are dead (this is consistent with link.exe). This change also adds an EliminateAvailableExternally pass at -O0. This is necessary to handle the situation on Windows where a non-prevailing copy of a linkonce_odr function has an SEH filter function; any such filters must be DCE'd because they will contain a call to the llvm.localrecover intrinsic, passing as an argument the address of the function that the filter belongs to, and llvm.localrecover requires this function to be defined locally. Fixes PR35142. Differential Revision: https://reviews.llvm.org/D39484 llvm-svn: 317108
* [X86] Regnerate test to attempt to fix build bot failure.Craig Topper2017-11-011-0/+8
| | | | llvm-svn: 317107
* loop-rotate: avoid duplicating dbg.value intrinsics in the entry block.Adrian Prantl2017-11-012-0/+26
| | | | | | This fixes the second half of PR35113. llvm-svn: 317106
* loop-rotate: eliminate duplicate debug intrinsics after splicing.Adrian Prantl2017-11-012-1/+109
| | | | | | Fixes part of PR35113. llvm-svn: 317105
* [dsymutil][NFC} Rename thread related command line optionsJonas Devlieghere2017-11-012-7/+7
| | | | | | | | | | | This makes the command line options consistent with llvm-cov and llvm-profdata, which both use `-num-threads` and `-j`. This also addresses the conflict reported after landing D39355. Differential revision: https://reviews.llvm.org/D39496 llvm-svn: 317104
* [scudo] Fix standlone build -lrt requirementKostya Kortchinsky2017-11-011-1/+2
| | | | | | | | | | | | | | | | Summary: The split in D39461 introduced separate C++ flags, but `cxx_flags` needs `-lrt` as well for the standalone build. Reviewers: alekseyshl Reviewed By: alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39497 llvm-svn: 317103
* [X86] Add 64-bit int to float/double conversion with AVX to ↵Craig Topper2017-11-013-5/+184
| | | | | | | | | | | | | | | | | | | | | X86FastISel::X86SelectSIToFP Summary: [X86] Teach fast isel to handle i64 sitofp with AVX. For some reason we only handled i32 sitofp with AVX. But with SSE only we support i64 so we should do the same with AVX. Also add i686 command lines for the 32-bit tests. 64-bit tests are in a separate file to avoid a fast-isel abort failure in 32-bit mode. Reviewers: RKSimon, zvi Reviewed By: RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39450 llvm-svn: 317102
* Update VCVTx, VMOVNTPx and VROUNDYPx instructions scheduling on btver2.Andrew V. Tischenko2017-11-012-20/+59
| | | | | | Differential Revision: https://reviews.llvm.org/D39059 llvm-svn: 317101
* Correct dwarf unwind information in function epilogue for X86Petar Jovanovic2017-11-0199-32/+1689
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch aims to provide correct dwarf unwind information in function epilogue for X86. It consists of two parts. The first part inserts CFI instructions that set appropriate cfa offset and cfa register in emitEpilogue() in X86FrameLowering. This part is X86 specific. The second part is platform independent and ensures that: - CFI instructions do not affect code generation - Unwind information remains correct when a function is modified by different passes. This is done in a late pass by analyzing information about cfa offset and cfa register in BBs and inserting additional CFI directives where necessary. Changed CFI instructions so that they: - are duplicable - are not counted as instructions when tail duplicating or tail merging - can be compared as equal Added CFIInstrInserter pass: - analyzes each basic block to determine cfa offset and register valid at its entry and exit - verifies that outgoing cfa offset and register of predecessor blocks match incoming values of their successors - inserts additional CFI directives at basic block beginning to correct the rule for calculating CFA Having CFI instructions in function epilogue can cause incorrect CFA calculation rule for some basic blocks. This can happen if, due to basic block reordering, or the existence of multiple epilogue blocks, some of the blocks have wrong cfa offset and register values set by the epilogue block above them. CFIInstrInserter is currently run only on X86, but can be used by any target that implements support for adding CFI instructions in epilogue. Patch by Violeta Vukobrat. Differential Revision: https://reviews.llvm.org/D35844 llvm-svn: 317100
* Add data formatter for libc++ std::queuePavel Labath2017-11-017-0/+134
| | | | | | | | | | | | | | Summary: std::queue is just a fancy wrapper around another container, so all we need to do is to delegate to the it. Reviewers: jingham, EricWF Subscribers: srhines, mgorny, lldb-commits, eugene Differential Revision: https://reviews.llvm.org/D35666 llvm-svn: 317099
* [X86][SSE] Begun generalizing truncateVectorWithPACKSS to work with ↵Simon Pilgrim2017-11-011-11/+14
| | | | | | | | PACKSS/PACKUS functions Renamed to truncateVectorWithPACK llvm-svn: 317098
* [scudo] Implement stricter separation of C vs C++Kostya Kortchinsky2017-11-0121-49/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Initially, Scudo had a monolithic design where both C and C++ functions were living in the same library. This was not necessarily ideal, and with the work on -fsanitize=scudo, it became more apparent that this needed to change. We are splitting the new/delete interceptor in their own C++ library. This allows more flexibility, notably with regard to std::bad_alloc when the work is done. This also allows us to not link new & delete when using pure C. Additionally, we add the UBSan runtimes with Scudo, in order to be able to have a -fsanitize=scudo,undefined in Clang (see work in D39334). The changes in this patch: - split the cxx specific code in the scudo cmake file into a new library; (remove the spurious foreach loop, that was not necessary) - add the UBSan runtimes (both C and C++); - change the test cmake file to allow for specific C & C++ tests; - make C tests pure C, rename their extension accordingly. Reviewers: alekseyshl Reviewed By: alekseyshl Subscribers: srhines, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D39461 llvm-svn: 317097
* Regenerate PACKUS/TRUNCS test (PR31773)Simon Pilgrim2017-11-011-6/+41
| | | | llvm-svn: 317096
* Add data formatter for libc++ std::tuplePavel Labath2017-11-017-0/+159
| | | | | | | | | | Reviewers: jingham, EricWF Subscribers: srhines, eugene, lldb-commits, mgorny Differential Revision: https://reviews.llvm.org/D35615 llvm-svn: 317095
* [BranchProbabilityInfo] Handle irreducible loops.Geoff Berry2017-11-013-11/+128
| | | | | | | | | | | | | | | Summary: Compute the strongly connected components of the CFG and fall back to use these for blocks that are in loops that are not detected by LoopInfo when computing loop back-edge and exit branch probabilities. Reviewers: dexonsmith, davidxl Subscribers: mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D39385 llvm-svn: 317094
* Remove uint32_t assignment operator from StatusPavel Labath2017-11-012-23/+0
| | | | | | | | | | | | | | | | Summary: It is not presently used, and it's quite dangerous to use -- it assumes the integer is an osx kern_return_t, but very few of the integers we have lying around are mach kernel error codes. The error can still be used to a mach error using a slightly longer (but more explicit) syntax. Reviewers: jingham Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D35305 llvm-svn: 317093
* Revert r313618 "[ARM] Use ADDCARRY / SUBCARRY"Roger Ferrer Ibanez2017-11-015-319/+35
| | | | | | That change causes PR35103, so reverting until I figure it out. llvm-svn: 317092
* Fix warnings discovered by rL317076. [-Wunused-private-field]NAKAMURA Takumi2017-11-0111-22/+6
| | | | llvm-svn: 317091
* Suppress a warning discovered by rL317076. [-Wunused-private-field]NAKAMURA Takumi2017-11-011-0/+1
| | | | llvm-svn: 317090
* Reformat.NAKAMURA Takumi2017-11-011-1/+1
| | | | llvm-svn: 317089
* Revert rL311205 "[IRCE] Fix buggy behavior in Clamp"Max Kazantsev2017-11-012-4/+66
| | | | | | | | | | | | | This patch reverts rL311205 that was initially a wrong fix. The real problem was in intersection of signed and unsigned ranges (see rL316552), and the patch being reverted masked the problem instead of fixing it. By now, the test against which rL311205 was made works OK even without this code. This revert patch also contains a test case that demonstrates incorrect behavior caused by rL311205: it is caused by incorrect choise of signed max instead of unsigned. llvm-svn: 317088
* [SelectionDAG] computeKnownBits - use ashrInPlace on known bits of ISD::SRA ↵Simon Pilgrim2017-11-011-11/+3
| | | | | | input. NFCI. llvm-svn: 317087
* [X86][SSE] Truncate with PACKSS any input with sufficient sign-bitsSimon Pilgrim2017-11-016-167/+106
| | | | | | | | | | So far we've only been using PACKSS truncations with 'all-bits or zero-bits' patterns (vector comparison results etc.). When really we can safely use it for any case as long as the number of sign bits reach down to the last 16-bits (or 8-bits if we're truncating to bytes). The next steps after this is add the equivalent support for PACKUS and to support packing to sub-128 bit vectors for truncating stores etc. Differential Revision: https://reviews.llvm.org/D39476 llvm-svn: 317086
* Update implementation of OMPT to the specification OpenMP 5.0 Preview 1 (TR4).Joachim Protze2017-11-0191-1829/+7244
| | | | | | | | | | | | | | The code is tested to work with latest clang, GNU and Intel compiler. The implementation is optimized for low overhead when no tool is attached shifting the cost to execution with tool attached. This patch does not implement OMPT for libomptarget. Patch by Simon Convent and Joachim Protze Differential Revision: https://reviews.llvm.org/D38185 llvm-svn: 317085
* [CodeExtractor] Fix iterator invalidation in findOrCreateBlockForHoisting.Florian Hahn2017-11-012-2/+8
| | | | | | | | | | | | | | | | | | | Summary: By replacing branches to CommonExitBlock, we remove the node from CommonExitBlock's predecessors, invalidating the iterator. The problem is exposed when the common exit block has multiple predecessors and needs to sink lifetime info. The modification in the test case trigger the issue. Reviewers: davidxl, davide, wmi Reviewed By: davidxl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39112 llvm-svn: 317084
* Add LLVM_FALLTHROUGH to silence warning. NFCI.Simon Pilgrim2017-11-011-1/+1
| | | | llvm-svn: 317083
* [ELF] - Cleanup of processSectionCommands().George Rimar2017-11-011-19/+11
| | | | | | | | | | | | | | The way we handle ONLY_IF_RO/ONLY_IF_RW constraints in processSectionCommands is a bit tricky. If input sections does no satisfy given constraint we remove command from commands list. It seems too complex, what we can do instead is to make the OutputCommand empty. So that at later steps LLD will remove it just like it deal with other empty output commands. That allows to simplify the loop a bit. Differential revision: https://reviews.llvm.org/D39094 llvm-svn: 317082
* Fix APFloat mod signSerguei Katkov2017-11-012-0/+17
| | | | | | | | | | | | fmod specification requires the sign of the remainder is the same as numerator in case remainder is zero. Reviewers: gottesmm, scanon, arsenm, davide, craig.topper Reviewed By: scanon Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D39225 llvm-svn: 317081
* [ELF] - Teach LLD to report line numbers for data symbols.George Rimar2017-11-017-28/+246
| | | | | | | | | | | | | | | | | | | This is PR34826. Currently LLD is unable to report line number when reporting duplicate declaration of some variable. That happens because for extracting line information we always use .debug_line section content which describes mapping from machine instructions to source file locations, what does not help for variables as does not describe them. In this patch I am taking the approproate information about variables locations from the .debug_info section. Differential revision: https://reviews.llvm.org/D38721 llvm-svn: 317080
* [X86] Add more type qualifiers to INSERT_SUBREG operations in rotate ↵Craig Topper2017-11-011-8/+8
| | | | | | | | | | patterns so they don't get created with a v64i8 type. Not sure why tablegen didn't error on this. Fixes PR35158. llvm-svn: 317079
* Reformat.NAKAMURA Takumi2017-11-011-24/+40
| | | | llvm-svn: 317078
* Revert rL317019, "[ADT] Split optional to only include copy mechanics and ↵NAKAMURA Takumi2017-11-012-117/+58
| | | | | | | | dtor for non-trivial types." Seems g++-4.8 (eg. Ubuntu 14.04) doesn't like this. llvm-svn: 317077
* Fix -Wunused-private-field to fire regardless of which implicit special ↵Richard Smith2017-11-014-3/+23
| | | | | | members have been implicitly declared. llvm-svn: 317076
* clang/lib/Format/Format.cpp: Fix warnings introduced in rL316903. [-Wpedantic]NAKAMURA Takumi2017-11-011-2/+2
| | | | llvm-svn: 317075
* More statuses, a new patch, tooMarshall Clow2017-11-011-11/+11
| | | | llvm-svn: 317074
* Change assertion to quick exit from checking function.Richard Trieu2017-11-012-3/+16
| | | | | | | Remove the assertion that could be triggered by invalid code. Replace it with an early exit from the checking function. llvm-svn: 317073
* [DAGCombiner] Fix typos in comments. NFCCraig Topper2017-11-011-2/+2
| | | | llvm-svn: 317072
* [fuzzer] Fix threaded stack printingVitaly Buka2017-11-013-0/+63
| | | | | | | | | | Reviewers: kcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39397 llvm-svn: 317071
* [analyzer] Removing unused stored field.George Karpenkov2017-11-012-2/+1
| | | | llvm-svn: 317070
OpenPOWER on IntegriCloud