summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Recommit r288212: Emit 'no line' information for interesting 'orphan' ↵Paul Robinson2016-11-306-17/+139
| | | | | | | | | | | | | | | | instructions. The LLDB tests are now ready for this patch. DWARF specifies that "line 0" really means "no appropriate source location" in the line table. Use this for branch targets and some other cases that have no specified source location, to prevent inheriting unfortunate line numbers from physically preceding instructions (which might be from completely unrelated source). Differential Revision: http://reviews.llvm.org/D24180 llvm-svn: 288283
* PR31214: Make a test tolerate "line 0" when stepping by instruction.Paul Robinson2016-11-301-4/+10
| | | | | | Differential Revision: http://reviews.llvm.org/D27282 llvm-svn: 288282
* [libFuzzer] extend -rss_limit_mb to crash instantly on a single malloc that ↵Kostya Serebryany2016-11-306-4/+55
| | | | | | exceeds the limit llvm-svn: 288281
* Only computeRelativePath() on new membersDavid Callahan2016-11-303-3/+23
| | | | | | | | | | | | | | | Summary: When using thin archives, and processing the same archive multiple times, we were mangling existing entries. The root cause is that we were calling computeRelativePath() more than once. Here, we only call it when adding new members to an archive. Note that D27218 changes the way thin archives are printed, and will break the new unit test included here. Depending on which one lands first, the other will need to be slightly modified. Reviewers: rafael, davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27217 llvm-svn: 288280
* [AArch64] Refactor LSE support as feature separate from V8.1a support.Joel Jones2016-11-3010-10/+47
| | | | | | | | | | | | | | | | | | | Summary: This is preparation for ThunderX processors that have Large System Extension (LSE) atomic instructions, but not the other instructions introduced by V8.1a. This will mimic changes to GCC as described here: https://gcc.gnu.org/ml/gcc-patches/2015-06/msg00388.html LSE instructions are: LD/ST<op>, CAS*, SWP Reviewers: t.p.northover, echristo, jmolloy, rengolin Subscribers: aemerson, mehdi_amini Differential Revision: https://reviews.llvm.org/D26621 llvm-svn: 288279
* Fix LSR best register search algorithm.Evgeny Stupachenko2016-11-301-2/+3
| | | | | | | | | | | | | Summary: Fix a case when first register in a search has maximum RegUses.getUsedByIndices(Reg).count() Reviewers: qcolombet Differential Revision: http://reviews.llvm.org/D26877 From: Evgeny Stupachenko <evstupac@gmail.com> llvm-svn: 288278
* Clarify rules for reserved regs, fix aarch64 ones.Matthias Braun2016-11-306-31/+70
| | | | | | | | | No test case necessary as the problematic condition is checked with the newly introduced assertAllSuperRegsMarked() function. Differential Revision: https://reviews.llvm.org/D26648 llvm-svn: 288277
* [libFuzzer] extend -print_coverage to print the comma-separated list of ↵Kostya Serebryany2016-11-305-2/+29
| | | | | | covered dirs. Note: the Windows stub for DirName is left unimplemented llvm-svn: 288276
* [LibFuzzer] Add Windows implementations of some IO functions.Zachary Turner2016-11-305-49/+250
| | | | | | | | | | | | | This patch moves some posix specific file i/o code into a new file, FuzzerIOPosix.cpp, and provides implementations for these functions on Windows in FuzzerIOWindows.cpp. This is another incremental step towards getting libfuzzer working on Windows, although it still should not be expected to be fully working. Patch by Marcos Pividori Differential Revision: https://reviews.llvm.org/D27233 llvm-svn: 288275
* [LoopUnroll] Implement profile-based loop peelingMichael Kuperstein2016-11-309-33/+635
| | | | | | | | | | | | | | | | | | | This implements PGO-driven loop peeling. The basic idea is that when the average dynamic trip-count of a loop is known, based on PGO, to be low, we can expect a performance win by peeling off the first several iterations of that loop. Unlike unrolling based on a known trip count, or a trip count multiple, this doesn't save us the conditional check and branch on each iteration. However, it does allow us to simplify the straight-line code we get (constant-folding, etc.). This is important given that we know that we will usually only hit this code, and not the actual loop. This is currently disabled by default. Differential Revision: https://reviews.llvm.org/D25963 llvm-svn: 288274
* [InstCombine] allow more narrowing transforms for logic opsSanjay Patel2016-11-303-21/+36
| | | | | | | We had a limited version of this for scalar 'and'; this expands the transform to 'or' and 'xor' and allows vectors types too. llvm-svn: 288273
* Prospective MSVC workaround.John McCall2016-11-301-1/+2
| | | | llvm-svn: 288272
* Release memory to OS only when the requested range covers the entire pageEvgeniy Stepanov2016-11-3011-30/+29
| | | | | | | | | | | | | | | | | Summary: The current code was sometimes attempting to release huge chunks of memory due to undesired RoundUp/RoundDown interaction when the requested range is fully contained within one memory page. Reviewers: eugenis Subscribers: kubabrecka, llvm-commits Patch by Aleksey Shlyapnikov. Differential Revision: https://reviews.llvm.org/D27228 llvm-svn: 288271
* [InstCombine] add tests to show potentially missed logic+trunc transforms; NFCSanjay Patel2016-11-301-1/+81
| | | | llvm-svn: 288270
* Finish adopting ConstantInitBuilder in CGObjCGNU. NFC.John McCall2016-11-302-180/+187
| | | | llvm-svn: 288269
* CODE_OWNERS: Take ownership of Loop Strenght Reduce.Quentin Colombet2016-11-301-2/+2
| | | | llvm-svn: 288268
* [Sema] Teach -Wcast-align to look at the aligned attribute of theAkira Hatanaka2016-11-302-0/+42
| | | | | | | | | | | | | declared variables. Teach Sema to check the aligned attribute attached to variable declarations so that it doesn't issue spurious warnings. rdar://problem/26517471 Differential revision: https://reviews.llvm.org/D21099 llvm-svn: 288267
* [git-llvm] Use --force-interactive when commiting to enable SVN to prompt ↵Mehdi Amini2016-11-301-1/+1
| | | | | | | | | | | | | password When svn does not know the password and it has to prompt, it needs to query. However it won't when invoked from the Python script and instead fails with: svn: E215004: Authentication failed and interactive prompting is disabled; see the --force-interactive option Differential Revision: https://reviews.llvm.org/D27274 llvm-svn: 288266
* Fix macro check for ABI breacking check: should use #if instead of #ifndefMehdi Amini2016-11-301-10/+10
| | | | llvm-svn: 288265
* [LibFuzzer] Split up some functions among different headers.Zachary Turner2016-11-3018-87/+191
| | | | | | | | | | | | | | | | | | | | | In an effort to get libfuzzer working on Windows, we need to make a distinction between what functions require platform specific code (e.g. different code on Windows vs Linux) and what code doesn't. IO functions, for example, tend to be platform specific. This patch separates out some of the functions which will need to have platform specific implementations into different headers, so that we can then provide different implementations for each platform. Aside from that, this patch contains no functional change. It is purely a re-organization. Patch by Marcos Pividori Differential Revision: https://reviews.llvm.org/D27230 llvm-svn: 288264
* [analyzer] Construct temporary objects of correct types, destroy them properly.Artem Dergachev2016-11-302-30/+95
| | | | | | | | | | | | | | | | | | | | | | | When constructing a temporary object region, which represents the result of MaterializeTemporaryExpr, track down the sub-expression for which the temporary is necessary with a trick similar to the approach used in CodeGen, namely by using Expr::skipRValueSubobjectAdjustments(). Then, create the temporary object region with type of that sub-expression. That type would propagate further in a path-sensitive manner. During destruction of lifetime-extened temporaries, consult the type of the temporary object region, rather than the type of the lifetime-extending variable, in order to call the correct destructor (fixes pr17001) and, at least, not to crash by trying to call a destructor of a plain type (fixes pr19539). rdar://problem/29131302 rdar://problem/29131576 Differential Revision: https://reviews.llvm.org/D26839 llvm-svn: 288263
* AMDGPU: Move mir tests into mir test directoryMatt Arsenault2016-11-305-0/+0
| | | | llvm-svn: 288262
* [InstCombine] update test to use FileCheck and auto-generate checks; NFCSanjay Patel2016-11-301-14/+15
| | | | llvm-svn: 288261
* [analyzer] SValExplainer: Support ObjC ivars and __block variables.Artem Dergachev2016-11-303-1/+43
| | | | | | | Additionally, explain the difference between normal and heap-based symbolic regions. llvm-svn: 288260
* [X86][SSE] Added tests showing missed combines of ANDs with shuffles.Simon Pilgrim2016-11-302-0/+40
| | | | llvm-svn: 288259
* [clang-tidy] Make format style customizableJonas Devlieghere2016-11-304-12/+24
| | | | | | | | | | | | | | Summary: I came across an outstanding FIXME to make the format style customizable. Inspired by the include fixer, I added an new option `-style` to configure the fallback style in case no clang-format configuration file is found. The default remains "llvm". Reviewers: Prazek, aaron.ballman, hokein, alexfh Subscribers: cfe-commits, malcolm.parsons Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D27142 llvm-svn: 288258
* [analyzer] Minor fixes and improvements to debug.ExprInspectionArtem Dergachev2016-11-304-14/+156
| | | | | | | | | | | | | | | | | | - Fix the bug with transition handling in ExprInspectionChecker's checkDeadSymbols implementation. - Test this bug by adding a new function clang_analyzer_numTimesReached() to catch number of passes through the code, which should be handy for testing against unintended state splits. - Add two more functions should help debugging issues quickly without running the debugger or dumping exploded graphs - clang_analyzer_dump() which dump()s an SVal argument to a warning message, and clang_analyzer_printState(), which dump()s the current program state to stderr. Differential Revision: https://reviews.llvm.org/D26835 llvm-svn: 288257
* Fix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC).Eugene Zelenko2016-11-3012-179/+426
| | | | | | This preparation to remove SetVector.h dependency on SmallSet.h. llvm-svn: 288256
* [scudo] 32-bit and hardware agnostic supportKostya Kortchinsky2016-11-3025-246/+447
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This update introduces i386 support for the Scudo Hardened Allocator, and offers software alternatives for functions that used to require hardware specific instruction sets. This should make porting to new architectures easier. Among the changes: - The chunk header has been changed to accomodate the size limitations encountered on 32-bit architectures. We now fit everything in 64-bit. This was achieved by storing the amount of unused bytes in an allocation rather than the size itself, as one can be deduced from the other with the help of the GetActuallyAllocatedSize function. As it turns out, this header can be used for both 64 and 32 bit, and as such we dropped the requirement for the 128-bit compare and exchange instruction support (cmpxchg16b). - Add 32-bit support for the checksum and the PRNG functions: if the SSE 4.2 instruction set is supported, use the 32-bit CRC32 instruction, and in the XorShift128, use a 32-bit based state instead of 64-bit. - Add software support for CRC32: if SSE 4.2 is not supported, fallback on a software implementation. - Modify tests that were not 32-bit compliant, and expand them to cover more allocation and alignment sizes. The random shuffle test has been deactivated for linux-i386 & linux-i686 as the 32-bit sanitizer allocator doesn't currently randomize chunks. Reviewers: alekseyshl, kcc Subscribers: filcab, llvm-commits, tberghammer, danalbert, srhines, mgorny, modocache Differential Revision: https://reviews.llvm.org/D26358 llvm-svn: 288255
* [InstCombine] auto-generate checks for select+bitwise logic tests; NFCSanjay Patel2016-11-302-259/+297
| | | | llvm-svn: 288254
* [AArch64] Fix useful bits detection for BFM instructionsSilviu Baranga2016-11-302-9/+68
| | | | | | | | | | | | | | | | | | | Summary: When computing useful bits for a BFM instruction, we need to take into consideration the case where both operands of the BFM are equal and provide data that we need to track. Not doing this can cause us to miss useful bits. Fixes PR31138 (https://llvm.org/bugs/show_bug.cgi?id=31138) Reviewers: t.p.northover, jmolloy Subscribers: evandro, gberry, srhines, pirama, mcrosier, aemerson, llvm-commits, rengolin Differential Revision: https://reviews.llvm.org/D27130 llvm-svn: 288253
* [WebAssembly] Add llvm-objdump support for wasm file formatDerek Schuff2016-11-3017-2/+546
| | | | | | | | | | | This is the first part of an effort to add wasm binary support across all llvm tools. Patch by Sam Clegg Differential Revision: https://reviews.llvm.org/D26172 llvm-svn: 288251
* [X86][SSE] Add support for target shuffle constant foldingSimon Pilgrim2016-11-309-95/+217
| | | | | | | | | | Initial support for target shuffle constant folding in cases where all shuffle inputs are constant. We may be able to relax this and merge shuffles with only some constant inputs in the future. I've added the helper function getTargetConstantBitsFromNode (based off a similar function in X86ShuffleDecodeConstantPool.cpp) that could be reused for other cases requiring constant vector extraction. Differential Revision: https://reviews.llvm.org/D27220 llvm-svn: 288250
* [LibFuzzer] Add macro flags for Posix and Windows.Zachary Turner2016-11-301-2/+10
| | | | | | | | | | | This is the beginning of an effort to get libfuzzer working on Windows. This is a NFC to just add some macros for platform detection on Windows. Patch by Marcos Pividori Differential Revision: https://reviews.llvm.org/D27229 llvm-svn: 288249
* [SelectionDAG] Refactor TargetLowering::expandMUL (NFC)Nicolai Haehnle2016-11-301-50/+32
| | | | | | | | | | | | Summary: Further preparation for the expansion of MUL_LOHI added in D24956. Reviewers: efriedma, RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27064 llvm-svn: 288248
* Fix handling of consecutive slashes in FileSpec::GetNormalizedPath()Pavel Labath2016-11-302-1/+5
| | | | | | | | | | The core of the function was actually handling them correctly. However, the early exit was being too optimistic and did not give the function a chance to fire if the path did not contain dots as well. Fix that and add a couple of unit tests. llvm-svn: 288247
* [Support] Use HAVE_DLOPEN to guard dlopen(3) usagePavel Labath2016-11-301-2/+2
| | | | | | | | | | | | | | | | Summary: The usage was previously guarded by HAVE_DLFCN. This breaks on Android with LLVM_BUILD_STATIC as the platform does not provide a static version of libdl. Using HAVE_DLOPEN fixes it as the code will only get used if we are actually able to link an executable using dlopen. Reviewers: rafael, beanz Subscribers: tberghammer, danalbert, llvm-commits Differential Revision: https://reviews.llvm.org/D26504 llvm-svn: 288246
* [AArch64] use exact checks; NFCSanjay Patel2016-11-301-5/+6
| | | | llvm-svn: 288245
* [include-fixer] Don't skip repeated lookups in plugin mode.Benjamin Kramer2016-11-302-2/+9
| | | | | | | In this mode not all the errors are fixed so it doesn't make sense to ignore later ones. llvm-svn: 288244
* [PowerPC] Preserve machine dominator tree in PPCVSXFMAMutateKrzysztof Parzyszek2016-11-301-0/+4
| | | | | | It is needed by LiveIntervalAnalysis. llvm-svn: 288243
* Updated test with -verify-machineinstrs to check for PR21931Simon Pilgrim2016-11-301-1/+1
| | | | llvm-svn: 288242
* Convert most of the Process class to Timeout<>Pavel Labath2016-11-304-91/+64
| | | | | | | | | | | This changes most of the class to use the new Timeout class. The one function left is RunThreadPlan, which I left for a separate change as the function is massive. A couple of things to call out: - I've renamed the affected functions to match the listener interface names. This should also help catch any places I did not convert at compile time. - I've deleted the WaitForState function as it was unused. llvm-svn: 288241
* [X86][SSE] Add tests demonstrating missed opportunities to combine 64-bit ↵Simon Pilgrim2016-11-301-0/+513
| | | | | | element unpacks with horizontal pair ops. llvm-svn: 288240
* Fix OSX build for r288238Pavel Labath2016-11-301-2/+3
| | | | llvm-svn: 288239
* Use Timeout<> in the Listener classPavel Labath2016-11-3012-160/+125
| | | | | | | | | | | | | | | | | | | | Summary: Communication classes use the Timeout<> class to specify the timeout. Listener class was converted to chrono some time ago, but it used a different meaning for a timeout of zero (Listener: infinite wait, Communication: no wait). Instead, Listener provided separate functions which performed a non-blocking event read. This converts the Listener class to the new Timeout class, to improve consistency. It also allows us to get merge the different GetNextEvent*** and WaitForEvent*** functions into one. No functional change intended. Reviewers: jingham, clayborg, zturner Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D27136 llvm-svn: 288238
* Remove a spurious reference to ProcessElfCorePavel Labath2016-11-302-7/+1
| | | | | | | | | | | We were referencing a the process class from a register context, which seems intuitively wrong. Also, the comment above that code is now definitely incorrect, as ProcessElfCore now does support floating point registers. Also, the code wasn't really doing anything, as it was just skipping a zero-initialization of a field that was most likely zero-initialized anyway. Linux elf core FPR test still passes after this. llvm-svn: 288237
* Remove an x86-ism from RegisterInfoInterfacePavel Labath2016-11-306-16/+1
| | | | | | | | | | | | | | | | | Summary: While adding FPR support to x86 elf core files (D26300), we ended up adding a very x86-specific function to the general RegisterInfoInterface class, which I didn't catch in review. This removes that function. The only reason we needed it was to find the offset of the FXSAVE area. This is the same as the offset of the first register within that area, so we might as well use that. Reviewers: clayborg, dvlahovski Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D27222 llvm-svn: 288236
* Apply clang-tidy's 'performance-faster-string-find' check to LLVM.Benjamin Kramer2016-11-305-5/+5
| | | | | | No functionality change intended. llvm-svn: 288235
* [asan] Avoid redundant poisoning checks in ↵Maxim Ostapenko2016-11-301-1/+1
| | | | | | | | | | | | | | | | __sanitizer_contiguous_container_find_bad_address. __sanitizer_contiguous_container_find_bad_address computes three regions of a container to check for poisoning: begin, middle, end. The issue is that in current design the first region can be significantly larger than kMaxRangeToCheck. Proposed patch fixes a typo to calculate the first region properly. Patch by Ivan Baravy. Differential Revision: https://reviews.llvm.org/D27061 llvm-svn: 288234
* Revert 'Test commit as per developer policy'Jonas Devlieghere2016-11-301-4/+4
| | | | llvm-svn: 288233
OpenPOWER on IntegriCloud