summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [llvm-dwp] Remove some unused test codeDavid Blaikie2015-12-142-5/+0
| | | | llvm-svn: 255481
* [Docs] Fix underlines that were too short or too long.Akira Hatanaka2015-12-141-3/+3
| | | | llvm-svn: 255480
* clang-tools-extra/test/clang-tidy/cppcoreguidelines-pro-bounds-constant-arra ↵NAKAMURA Takumi2015-12-132-2/+2
| | | | | | y-index*.cpp: Don't assume size_t were unsigned int. llvm-svn: 255475
* Rename addScalar(Read|Write)Access to addValue(Read|Write)AccessMichael Kruse2015-12-132-16/+16
| | | | | | Adapt the method names to the new scheme introduced in r255467. llvm-svn: 255474
* Check guaranteed execution by using DominatorTreeMichael Kruse2015-12-131-3/+4
| | | | | | | | | Before this commit, only the region's entry block was assumed to always execute in a non-affine subregion. We replace this by a test whether it dominates the exit block (this necessarily includes the entry block) which should be more accurate. llvm-svn: 255473
* Store DominatorTree as a field in ScopInfoMichael Kruse2015-12-132-5/+8
| | | | | | | This harmonizes DT with the other analyses in ScopInfo and makes it available for use in its methods. llvm-svn: 255472
* Always treat scalar writes as MUST_WRITEsMichael Kruse2015-12-136-10/+14
| | | | | | | | | LLVM's IR guarantees that a value definition occurs before any use, and also the value of a PHI must be one of the incoming values, "written" in one of the incoming blocks. Hence, such writes are never conditional in the context of a non-affine subregion. llvm-svn: 255471
* [clang-tidy] add check cppcoreguidelines-pro-bounds-constant-array-indexMatthias Gehre2015-12-138-0/+346
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This is http://reviews.llvm.org/D13746 but instead of including <array>, a stub is provided. This check flags all array subscriptions on static arrays and std::arrays that either have a non-compile-time-constant index or are out of bounds. Dynamic accesses into arrays are difficult for both tools and humans to validate as safe. array_view is a bounds-checked, safe type for accessing arrays of data. at() is another alternative that ensures single accesses are bounds-checked. If iterators are needed to access an array, use the iterators from an array_view constructed over the array. This rule is part of the "Bounds safety" profile of the C++ Core Guidelines, see https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-bounds2-only-index-into-arrays-using-constant-expressions Reviewers: alexfh, sbenza, bkramer, aaron.ballman Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15030 llvm-svn: 255470
* I Added a triple flag for x86-evenDirective test.Michael Zuckerman2015-12-131-1/+1
| | | | | | | | Continue of rL255461 Differential Revision: http://reviews.llvm.org/D15413 llvm-svn: 255469
* ScopInfo: Split out invariant load hoisting into multiple functions [NFC]Tobias Grosser2015-12-132-78/+105
| | | | | | This reduces indentation and makes the code more readable. llvm-svn: 255468
* ScopInfo: Harmonize the different array kindsTobias Grosser2015-12-134-209/+232
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Over time different vocabulary has been introduced to describe the different memory objects in Polly, resulting in different - often inconsistent - naming schemes in different parts of Polly. We now standartize this to the following scheme: KindArray, KindValue, KindPHI, KindExitPHI | ------- isScalar -----------| In most cases this naming scheme has already been used previously (this minimizes changes and ensures we remain consistent with previous publications). The main change is that we remove KindScalar to clearify the difference between a scalar as a memory object of kind Value, PHI or ExitPHI and a value (former KindScalar) which is a memory object modeling a llvm::Value. We also move all documentation to the Kind* enum in the ScopArrayInfo class, remove the second enum in the MemoryAccess class and update documentation to be formulated from the perspective of the memory object, rather than the memory access. The terms "Implicit"/"Explicit", formerly used to describe memory accesses, have been dropped. From the perspective of memory accesses they described the different memory kinds well - especially from the perspective of code generation - but just from the perspective of a memory object it seems more straightforward to talk about scalars and arrays, rather than explicit and implicit arrays. The last comment is clearly subjective, though. A less subjective reason to go for these terms is the historic use both in mailing list discussions and publications. llvm-svn: 255467
* Print "null" for ISL objects that are nullptrMichael Kruse2015-12-132-2/+3
| | | | | | | | Use it to print "null" if a MemoryAccess's access relation is not available instead of printing nothing. Suggested-by: Johannes Doerfert llvm-svn: 255466
* Reuse ScopStmt::isEmpty() functionMichael Kruse2015-12-132-7/+15
| | | | | | | | Introduce a function getStmtForRegionNode() to the corresponding ScopStmt of a RegionNode. We can use it to call the existing ScopStmt::isEmpty() function instead of searching for accesses. llvm-svn: 255465
* Check if access relation is available before printingMichael Kruse2015-12-131-1/+2
| | | | | | | Currently MemoryAccesses are not printed before the access relations are available, but might be printed during gdb sessions. llvm-svn: 255464
* Revert r255460, which still causes test failures on some platforms.Cong Hou2015-12-133-176/+32
| | | | | | Further investigation on the failures is ongoing. llvm-svn: 255463
* [X86][inline asm] support even directive Michael Zuckerman2015-12-134-1/+76
| | | | | | | | | | | The .even directive aligns content to an evan-numbered address. In at&t syntax .even In Microsoft syntax even (without the dot). Differential Revision: http://reviews.llvm.org/D15413 llvm-svn: 255462
* Fix a type issue in r255455. Should not use unsigned type as std::abs()'s ↵Cong Hou2015-12-131-1/+1
| | | | | | template type. llvm-svn: 255461
* [LoopVectorizer] Refine loop vectorizer's register usage calculator by ↵Cong Hou2015-12-133-32/+176
| | | | | | | | | | | | | | | | | | | | ignoring specific instructions. (This is the second attempt to check in this patch: REQUIRES: asserts is added to reg-usage.ll now.) LoopVectorizationCostModel::calculateRegisterUsage() is used to estimate the register usage for specific VFs. However, it takes into account many instructions that won't be vectorized, such as induction variables, GetElementPtr instruction, etc.. This makes the loop vectorizer too conservative when choosing VF. In this patch, the induction variables that won't be vectorized plus GetElementPtr instruction will be added to ValuesToIgnore set so that their register usage won't be considered any more. Differential revision: http://reviews.llvm.org/D15177 llvm-svn: 255460
* Fix line endingsSimon Pilgrim2015-12-131-14/+14
| | | | llvm-svn: 255459
* Replace <cstdint> by llvm/Support/DataTypes.h for the typedef of uint64_t. NFC.Cong Hou2015-12-131-1/+1
| | | | llvm-svn: 255458
* Add the missing header file <cstdint> needed by uint64_tCong Hou2015-12-131-0/+1
| | | | llvm-svn: 255457
* Revert r255454 as it leads to several test failers on buildbots.Cong Hou2015-12-133-175/+32
| | | | llvm-svn: 255456
* Normalize MBB's successors' probabilities in several locations.Cong Hou2015-12-1312-27/+68
| | | | | | | | | | | | This patch adds some missing calls to MBB::normalizeSuccProbs() in several locations where it should be called. Those places are found by checking if the sum of successors' probabilities is approximate one in MachineBlockPlacement pass with some instrumented code (not in this patch). Differential revision: http://reviews.llvm.org/D15259 llvm-svn: 255455
* [LoopVectorizer] Refine loop vectorizer's register usage calculator by ↵Cong Hou2015-12-133-32/+175
| | | | | | | | | | | | | | | | | ignoring specific instructions. LoopVectorizationCostModel::calculateRegisterUsage() is used to estimate the register usage for specific VFs. However, it takes into account many instructions that won't be vectorized, such as induction variables, GetElementPtr instruction, etc.. This makes the loop vectorizer too conservative when choosing VF. In this patch, the induction variables that won't be vectorized plus GetElementPtr instruction will be added to ValuesToIgnore set so that their register usage won't be considered any more. Differential revision: http://reviews.llvm.org/D15177 llvm-svn: 255454
* [ELF][MIPS] Ignore R_MIPS_JALR relocation for nowSimon Atanasyan2015-12-132-0/+50
| | | | | | | | | | The `R_MIPS_JALR` is a relocation generated by gcc and gas. This relocation points to the `jalr` instruction which might be optimized and converted to the `b` instruction under some conditions. Now we just ignore this relocation and keep instructions unchanged. llvm-svn: 255453
* [ELF][MIPS] Match paired relocation using relocation type and symbol indexSimon Atanasyan2015-12-133-5/+14
| | | | | | | If we have R_MIPS_HI16 relocation, the paired relocation is the next R_MIPS_LO16 relocation with the same symbol as a target. llvm-svn: 255452
* [ELF][MIPS] Fix calculation of the R_MIPS_HI16 relocationSimon Atanasyan2015-12-132-4/+6
| | | | llvm-svn: 255451
* [Sema] Add -Wparentheses warnings for '^' in '|' expressions and '&' in '^' ↵Craig Topper2015-12-133-26/+41
| | | | | | expressions to compliment '&' in '|' that is already present. Matches gcc behavior. llvm-svn: 255450
* [Sema] Write some checks for groups of BinaryOperatorKinds in terms of the ↵Craig Topper2015-12-132-7/+8
| | | | | | predicates already available in BinaryOperator. NFC llvm-svn: 255449
* ARM: only emit EABI attributes on EABI targetsSaleem Abdulrasool2015-12-132-1/+12
| | | | | | | EABI attributes should only be emitted on EABI targets. This prevents the emission of the optimization goals EABI attribute on Windows ARM. llvm-svn: 255448
* Revert r255445: adding a new test caseXinliang David Li2015-12-131-11/+0
| | | | llvm-svn: 255447
* Revert r255444.Nico Weber2015-12-136-333/+0
| | | | | | | | It doesn't build on Windows and broke the Windows LLD and LLDB bots: http://lab.llvm.org:8011/builders/lld-x86_64-win7/builds/27693/steps/build_Lld/logs/stdio http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc/builds/13468/steps/build/logs/stdio llvm-svn: 255446
* Resubmit new test case after adding more constraintXinliang David Li2015-12-131-0/+11
| | | | llvm-svn: 255445
* Add a C++11 ThreadPool implementation in LLVMMehdi Amini2015-12-126-0/+333
| | | | | | | | | | | | | | | | | | This is a very simple implementation of a thread pool using C++11 thread. It accepts any std::function<void()> for asynchronous execution. Individual task can be synchronize using the returned future, or the client can block on the full queue completion. In case LLVM is configured with Threading disabled, it falls back to sequential execution using std::async with launch:deferred. This is intended to support parallelism for ThinLTO processing in linker plugin, but is generic enough for any other uses. Differential Revision: http://reviews.llvm.org/D15464 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 255444
* [llvm-objdump/MachoDump] Simplify.Davide Italiano2015-12-121-7/+3
| | | | llvm-svn: 255443
* [X86][AVX512] Added support for VMOVQ shuffle commentsSimon Pilgrim2015-12-122-54/+26
| | | | llvm-svn: 255442
* Partially fix memcpy / memset / memmove lowering in SelectionDAG ↵Manuel Jacob2015-12-123-22/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | construction if address space != 0. Summary: Previously SelectionDAGBuilder asserted that the pointer operands of memcpy / memset / memmove intrinsics are in address space < 256. This assert implicitly assumed the X86 backend, where all address spaces < 256 are equivalent to address space 0 from the code generator's point of view. On some targets (R600 and NVPTX) several address spaces < 256 have a target-defined meaning, so this assert made little sense for these targets. This patch removes this wrong assertion and adds extra checks before lowering these intrinsics to library calls. If a pointer operand can't be casted to address space 0 without changing semantics, a fatal error is reported to the user. The new behavior should be valid for all targets that give address spaces != 0 a target-specified meaning (NVPTX, R600, X86). NVPTX lowers big or variable-sized memory intrinsics before SelectionDAG construction. All other memory intrinsics are inlined (the threshold is set very high for this target). R600 doesn't support memcpy / memset / memmove library calls (previously the illegal emission of a call to such library function triggered an error somewhere in the code generator). X86 now emits inline loads and stores for address spaces 256 and 257 up to the same threshold that is used for address space 0 and reports a fatal error otherwise. I call this a "partial fix" because there are still cases that can't be lowered. A fatal error is reported in these cases. Reviewers: arsenm, theraven, compnerd, hfinkel Subscribers: hfinkel, llvm-commits, alex Differential Revision: http://reviews.llvm.org/D7241 llvm-svn: 255441
* Test case for "Fix scope-based lookup when more than one function is found."Dawn Perchik2015-12-121-0/+216
| | | | | | | Missed commit in r255439. Differential Revision: http://reviews.llvm.org/D15312 llvm-svn: 255440
* Fix scope-based lookup when more than one function is found.Dawn Perchik2015-12-129-2/+417
| | | | | | | | | | | | | | | | | | | | | | | | When multiple functions are found by name, lldb removes duplicate entries of functions with the same type, so the first function in the symbol context list is chosen, even if it isn't in scope. This patch uses the declaration context of the execution context to select the function which is in scope. This fixes cases like the following: int func(); namespace ns { int func(); void here() { // Run to BP here and eval 'p func()'; // lldb used to find ::func(), now finds ns::func(). } } Reviewed by: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15312 llvm-svn: 255439
* test infra: adds book-keeping for rerunnable testsTodd Fiala2015-12-127-45/+165
| | | | | | | | | | | | | | Also adds full path info for exceptional exits and timeouts when no test method is currently running. Adds --rerun-all-issues command line arg. If specified, all test issues are eligible for rerun. If not specified, only tests marked flakey are eligible for rerun. The actual rerunning will occur in an upcoming change. This change just handles tha accounting of what should be rerun. llvm-svn: 255438
* Revert 255436 : remove test that needs to be refinedXinliang David Li2015-12-121-13/+0
| | | | llvm-svn: 255437
* [PGO] add a test case with -no-integrated-asXinliang David Li2015-12-121-0/+13
| | | | llvm-svn: 255436
* [PGO] Stop using invalid char in instr variable names.Xinliang David Li2015-12-126-8/+8
| | | | | | | (This is part-2 of the patch of r255434 -- fixing test cases, second try) llvm-svn: 255435
* [PGO] Stop using invalid char in instr variable names.Xinliang David Li2015-12-124-10/+30
| | | | | | | | | | | | | Before the patch, -fprofile-instr-generate compile will fail if no integrated-as is specified when the file contains any static functions (the -S output is also invalid). This is the second try. The fix in this patch is very localized. Only profile symbol names of profile symbols with internal linkage are fixed up while initializer of name syms are not changes. This means there is no format change nor version bump. llvm-svn: 255434
* [InstCombine] canonicalize (bitcast (extractelement X)) --> ↵Sanjay Patel2015-12-122-30/+19
| | | | | | | | | | | | | | | | | | | | | (extractelement(bitcast X)) This change was discussed in D15392. It allows us to remove the fold that was added in: http://reviews.llvm.org/r255261 ...and it will allow us to generalize this fold: http://reviews.llvm.org/rL112232 while preserving the order of bitcast + extract that it produces and testing shows is better handled by the backend. Note that the existing check for "isVectorTy()" wasn't strong enough in general and specifically because: x86_mmx. It's not a vector, but it's not vectorizable either. So here we check VectorType::isValidElementType() directly before proceeding with the transform. llvm-svn: 255433
* [X86][AVX] Tests tidyupSimon Pilgrim2015-12-122-69/+68
| | | | | | Cleanup/regenerate some tests for some upcoming patches. llvm-svn: 255432
* [clang-tidy] Fix PR25812.Gabor Horvath2015-12-122-26/+27
| | | | llvm-svn: 255431
* ScopInfo: Add helper function to invalidate a scopTobias Grosser2015-12-122-7/+19
| | | | llvm-svn: 255430
* Try to appease sphinxDavid Majnemer2015-12-121-0/+1
| | | | llvm-svn: 255429
* Minor formatting cleanup. NFCCraig Topper2015-12-121-1/+1
| | | | llvm-svn: 255428
OpenPOWER on IntegriCloud