summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [FIX] Bail out if there is a dependence cycle between invariant loadsJohannes Doerfert2015-11-075-51/+175
| | | | | | | | | | | | | While the program cannot cause a dependence cycle between invariant loads, additional constraints (e.g., to ensure finite loops) can introduce them. It is hard to detect them in the SCoP description, thus we will only check for them at code generation time. If such a recursion is detected we will bail out the code generation and place a "false" runtime check to guarantee the original code is used. This fixes bug 25443. llvm-svn: 252412
* [FIX] Remove all invariant load occurences from own execution contextJohannes Doerfert2015-11-072-5/+43
| | | | llvm-svn: 252411
* [analyzer] Update SATestBuild.py to enable a 'download and patch' model for ↵Devin Coughlin2015-11-072-13/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | projects. Currently the SATestBuild.py and SATestAdd.py buildbot scripts expect project sources to be checked into the project repository. This commit changes these scripts to additionally support a model where project sources are downloaded rather than checked into the repository. Sometimes projects may need to be modified (for example, to support a newer versions of clang), so the updated scripts also allow for an optional patch file that will be applied to the downloaded project source before analysis. To support this workflow, this commit changes the expected layout of a project in the repository. The project-specific helper scripts will stay in the root of each project directory, but the benchmark source itself (if checked into the repo) should now be stored in a subdirectory named 'CachedSource': project_name/ cleanup_run_static_analyzer.sh [optional] run_static_analyzer.cmd [required] download_project.sh [optional] CachedSource/ [optional] changes_for_analyzer.patch [optional] If the 'CachedSource' source directory is not present, the download script will be executed. This script should download the project source into 'CachedSource'. Then, if 'changes_for_analyzer.patch' is present its changes will be applied to a copy of 'CachedSource' before analysis. Differential Revision: http://reviews.llvm.org/D14345 llvm-svn: 252410
* Fix pessimizing moves. Found by clang.Davide Italiano2015-11-072-2/+2
| | | | llvm-svn: 252409
* Mark LWG#2224 as complete. Wording change only, no code changes requiredMarshall Clow2015-11-071-1/+1
| | | | llvm-svn: 252408
* Implement LWG#2353: std::next is over-constrainedMarshall Clow2015-11-073-6/+10
| | | | llvm-svn: 252407
* More of P0006R0: type traits variable aliases for C++17.Marshall Clow2015-11-0727-5/+354
| | | | llvm-svn: 252406
* Remove spaces in empty line, NFC.Yaron Keren2015-11-071-1/+1
| | | | llvm-svn: 252405
* Remove spaces at start of line, NFC.Yaron Keren2015-11-071-1/+1
| | | | llvm-svn: 252404
* Add more NetBSD platform glue for lldbBruce Mitchener2015-11-076-4/+14
| | | | | | | | | | | | | | | | | | Summary: These changes are still incomplete, but we are almost there. Changes: - CMake and gmake code - SWIG code - minor code additions Reviewers: emaste, joerg Subscribers: youri, akat1, brucem, lldb-commits, joerg Differential Revision: http://reviews.llvm.org/D14042 llvm-svn: 252403
* [tsan] Turn lit test deadlocks into failures (OS X)Kuba Brecka2015-11-078-0/+8
| | | | | | | | Several tests currently deadlock when the lit test suite is run on OS X. Let's mark them as unsupported. Differential Revision: http://reviews.llvm.org/D14443 llvm-svn: 252402
* Erase unused FunctionDIs variables after r252219.Yaron Keren2015-11-072-3/+0
| | | | llvm-svn: 252401
* Make a couple methods static.Craig Topper2015-11-071-3/+3
| | | | llvm-svn: 252400
* Make SemaBuiltinCpuSupports a static function. NFC.Craig Topper2015-11-072-22/+21
| | | | llvm-svn: 252399
* Use makeArrayRef instead of explicitly mentioning the type. NFCCraig Topper2015-11-071-1/+1
| | | | llvm-svn: 252398
* Fix indentation. NFCCraig Topper2015-11-071-3/+3
| | | | llvm-svn: 252397
* Make lldb::endian::InlHostByteOrder() private.Bruce Mitchener2015-11-0729-101/+101
| | | | | | | | | | | | | | | | | | Summary: Since this is within the lldb namespace, the compiler tries to export a symbol for it. Unfortunately, since it is inlined, the symbol is hidden and this results in a mess of warnings when building on OS X with cmake. Moving it to the lldb_private namespace eliminates that problem. Reviewers: clayborg Subscribers: emaste, lldb-commits Differential Revision: http://reviews.llvm.org/D14417 llvm-svn: 252396
* [Bitcode] Add enums for call instruction markers and flags. NFC.Akira Hatanaka2015-11-073-8/+19
| | | | | | | | | | This commit adds enums in LLVMBitCodes.h to improve readability and maintainability. This is a follow-up to r252368 which was discussed here: http://reviews.llvm.org/D12923 llvm-svn: 252395
* Try to fix build more -- like r252392 but for WebAssembly.Nico Weber2015-11-071-4/+4
| | | | llvm-svn: 252394
* Unbreak the buildSanjoy Das2015-11-071-1/+1
| | | | | | | My code clashed with some ilist iterator changes upstream. Fix by adding an explicit "&*" coercion. llvm-svn: 252392
* Fix TestThreadSpecificBreakpoint.py on Linux after rL252355.Chaoren Lin2015-11-071-1/+5
| | | | | | | | | | | | | | | | | Summary: On Linux, if a thread-specific conditional breakpoint was hit, it won't necessarily be the thread that hit the breakpoint itself that evaluates the conditional expression, so the thread that hit the breakpoint could still be asked to stop, even though it hasn't been allowed to run since the previous stop. Reviewers: sivachandra, jingham Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14472 llvm-svn: 252391
* Add SBType::IsAnonymousType() and relative plumbing in the debugger internalsEnrico Granata2015-11-0711-0/+80
| | | | | | | | For language that support such a thing, this API allows to ask whether a type is anonymous (i.e. has been given no name) Comes with test case llvm-svn: 252390
* [FunctionAttrs] Add comment and clarify assertion message; NFCSanjoy Das2015-11-071-1/+6
| | | | llvm-svn: 252389
* [OperandBundles] Rename accessor, NFCSanjoy Das2015-11-074-7/+7
| | | | | | Rename getOperandBundle to getOperandBundleAt since that's more obvious. llvm-svn: 252388
* [FunctionAttrs] Add handling for operand bundlesSanjoy Das2015-11-072-4/+55
| | | | | | | | | | | | | | Summary: Teach the FunctionAttrs to do the right thing for IR with operand bundles. Reviewers: reames, chandlerc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14408 llvm-svn: 252387
* [FunctionAttrs] Fix an iterator wraparound bugSanjoy Das2015-11-072-18/+49
| | | | | | | | | | | | | | | | | | | Summary: This change fixes an iterator wraparound bug in `determinePointerReadAttrs`. Ideally, ++'ing off the `end()` of an iplist should result in a failed assert, but currently iplist seems to silently wrap to the head of the list on `end()++`. This is why the bad behavior is difficult to demonstrate. Reviewers: chandlerc, reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14350 llvm-svn: 252386
* Cleanup: move visibility/linkage attributes to the first declaration.Evgeniy Stepanov2015-11-0715-260/+496
| | | | | | | | | | | | This change moves visibility attributes from out-of-class method definitions to in-class declaration. This is needed for a switch to attribute((internal_linkage)) (see http://reviews.llvm.org/D13925) which can only appear on the first declaration. This change does not touch istream/ostream/streambuf. They are handled separately in http://reviews.llvm.org/D14409. llvm-svn: 252385
* Remove a debug print statement.Zachary Turner2015-11-071-1/+0
| | | | llvm-svn: 252384
* [WinEH] Update exception pointer registersJoseph Tremoulet2015-11-0725-90/+210
| | | | | | | | | | | | | | | | | | | | Summary: The CLR's personality routine passes these in rdx/edx, not rax/eax. Make getExceptionPointerRegister a virtual method parameterized by personality function to allow making this distinction. Similarly make getExceptionSelectorRegister a virtual method parameterized by personality function, for symmetry. Reviewers: pgavlin, majnemer, rnk Subscribers: jyknight, dsanders, llvm-commits Differential Revision: http://reviews.llvm.org/D14344 llvm-svn: 252383
* Python 3 - Use __bool__() instead of __nonzero__() for truthiness.Zachary Turner2015-11-074-2/+62
| | | | | | | | | | | | | | | | | | | | | | | Python has a complicated mechanism of checking an objects truthity. This involves a number of steps, which end with calling two private methods on an object (if they are implemented). In Python 2 these two methods are `__nonzero__` and `__len__`, and in Python 3 they are `__bool__` and `__len__`. Because we *also* define a __len__ method for certain iterable types, this was triggering a situation in Python 3 where `__nonzero__` wasn't defined, so it was calling `__len__`, which was returning 0 (for example an SBDebugger with no targets), and as a result the truthosity was determined to be False. We fix this by correctly using ` __bool__` for Python 3, and leave the behavior under Python 2 unchanged. Note that this fix is only implemented in the SWIG generation python script, and not the SWIG generation shell script. Someone more familiar than me with shell scripts will need to fix them to support this for Python 3 if desired. llvm-svn: 252382
* Python 3 - Don't use unbuffered I/O in text mode.Zachary Turner2015-11-071-2/+2
| | | | | | | | This is unsupported in Python 3. This could also have been fixed by using "wb" instead of "w", but it doesn't seem like writing the session log absolutely *needs* to be unbuffered. llvm-svn: 252381
* Reapply "ADT: Require explicit ilist iterator/pointer conversions"Duncan P. N. Exon Smith2015-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit r252373, reapplying r252372 now that I've updated clang-tools-extra. Original commit message follows. ADT: Require explicit ilist iterator/pointer conversions Disallow implicit conversions between ilist iterators and element points. Explicit conversions still work of course. This is the first step toward removing the undefined behaviour in `ilist` and `iplist`: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091115.html The motivation for removing the implicit iterators is that I came across real bugs (that were *really* getting lucky). More details and some brief discussion later in that thread: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091617.html Note: if you have out-of-tree code, it should be fairly easy to revert this patch downstream while you update your out-of-tree call sites. Note that these conversions are occasionally latent bugs (that may happen to "work" now, but only because of getting lucky with UB; follow-ups will change your luck). When they are valid, I suggest using `->getIterator()` to go from pointer to iterator, and `&*` to go from iterator to pointer. llvm-svn: 252380
* examples: Remove implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-078-10/+10
| | | | llvm-svn: 252379
* lldb/ADT: Remove implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-072-14/+14
| | | | | | | Remove implicit ilist iterator conversions before reapplying r252372 (which will disallow them). llvm-svn: 252378
* [InstCombine] Teach FoldPHIArgZextsIntoPHI about EHPadsDavid Majnemer2015-11-072-1/+47
| | | | | | | | FoldPHIArgZextsIntoPHI cannot insert an instruction after the PHI if there is an EHPad in the BB. Doing so would result in an instruction inserted after a terminator. llvm-svn: 252377
* Use regex in test case.Akira Hatanaka2015-11-071-1/+1
| | | | | | This is a follow-up to r252369. llvm-svn: 252376
* Fix non-affine region dominance of implicitely stored valuesMichael Kruse2015-11-072-4/+54
| | | | | | | | | | | | | | | After loop versioning, a dominance check of a non-affine subregion's exit node causes the dominance check to always fail on any block in the subregion if it shares the same exit block with the scop. The subregion's exit block has become polly_merge_new_and_old, which also receives the control flow of the generated code. This would cause that any value for implicit stores is assumed to be not from the scop. We check dominance with the generated exit node instead. This fixes llvm.org/PR25438 llvm-svn: 252375
* Fix some Clang-tidy warnings and formatting in recently added code.Eugene Zelenko2015-11-079-203/+185
| | | | | | | | | | | Fixed Clang-tidy warnings: * modernize-use-override; * modernize-use-nullptr; * modernize-use-default; * readability-simplify-boolean-expr. llvm-svn: 252374
* Revert "ADT: Require explicit ilist iterator/pointer conversions"Duncan P. N. Exon Smith2015-11-071-3/+3
| | | | | | | This reverts commit r252372. Apparently I missed clang-tools-extra. http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/2534/steps/build/logs/stdio llvm-svn: 252373
* ADT: Require explicit ilist iterator/pointer conversionsDuncan P. N. Exon Smith2015-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Disallow implicit conversions between ilist iterators and element points. Explicit conversions still work of course. This is the first step toward removing the undefined behaviour in `ilist` and `iplist`: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091115.html The motivation for removing the implicit iterators is that I came across real bugs (that were *really* getting lucky). More details and some brief discussion later in that thread: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091617.html Note: if you have out-of-tree code, it should be fairly easy to revert this patch downstream while you update your out-of-tree call sites. Note that these conversions are occasionally latent bugs (that may happen to "work" now, but only because of getting lucky with UB; follow-ups will change your luck). When they are valid, I suggest using `->getIterator()` to go from pointer to iterator, and `&*` to go from iterator to pointer. llvm-svn: 252372
* ADT: Remove last implicit ilist iterator conversions, NFCDuncan P. N. Exon Smith2015-11-076-11/+12
| | | | | | | | | | Some implicit ilist iterator conversions have crept back into Analysis, Transforms, Hexagon, and llvm-stress. This removes them. I'll commit a patch immediately after this to disallow them (in a separate patch so that it's easy to revert if necessary). llvm-svn: 252371
* [InstCombine] Don't insert an instruction after a terminatorDavid Majnemer2015-11-062-2/+44
| | | | | | | | We tried to insert a cast of a phi in a block whose terminator is an EHPad. This is invalid. Do not attempt the transform in these circumstances. llvm-svn: 252370
* Add support for function attribute 'not_tail_called'.Akira Hatanaka2015-11-0610-0/+164
| | | | | | | | | | | | | | | | | | | | | | This attribute is used to prevent tail-call optimizations to the marked function. For example, in the following piece of code, foo1 will not be tail-call optimized: int __attribute__((not_tail_called)) foo1(int); int foo2(int a) { return foo1(a); // Tail-call optimization is not performed. } The attribute has effect only on statically bound calls. It has no effect on indirect calls. Also, virtual functions and objective-c methods cannot be marked as 'not_tail_called'. rdar://problem/22667622 Differential Revision: http://reviews.llvm.org/D12922 llvm-svn: 252369
* Add 'notail' marker for call instructions.Akira Hatanaka2015-11-0611-6/+56
| | | | | | | | | | | | This marker prevents optimization passes from adding 'tail' or 'musttail' markers to a call. Is is used to prevent tail call optimization from being performed on the call. rdar://problem/22667622 Differential Revision: http://reviews.llvm.org/D12923 llvm-svn: 252368
* Revert r252366: [Support] Use GetTempDir to get the temporary dir path on ↵Pawel Bylica2015-11-062-80/+37
| | | | | | Windows. llvm-svn: 252367
* [Support] Use GetTempDir to get the temporary dir path on Windows.Pawel Bylica2015-11-062-37/+80
| | | | | | | | | | | | | | | Summary: In general GetTempDir follows the same logic as the replaced code: checks env variables TMP, TEMP, USERPROFILE in order. However, it also perform other checks like making separators native (\), making the path absolute, etc. This change fixes FileSystemTest.CreateDir unittest that had been failing when run from Unix-like shell on Windows (Unix-like path separator (/) used in env variables). Reviewers: chapuni, rafael, aaron.ballman Subscribers: rafael, llvm-commits Differential Revision: http://reviews.llvm.org/D14231 llvm-svn: 252366
* [CMake] Need to filter ${arch}/*.c builtins as well as ${arch}/*.S builtins.Chris Bieneman2015-11-061-1/+1
| | | | | | This was broken in r248542 when I refactored this to support builtins where ${arch} didn't match the directory prefix (i.e. armv7s). llvm-svn: 252365
* [AArch64][FastISel] Don't even try to select vector icmps.Ahmed Bougacha2015-11-062-0/+104
| | | | | | | | | | | | We used to try to constant-fold them to i32 immediates. Given that fast-isel doesn't otherwise support vNi1, when selecting the result users, we'd fallback to SDAG anyway. However, if the users were in another block, we'd insert broken cross-class copies (GPR32 to FPR64). Give up, let SDAG agree with itself on a vNi1 legalization strategy. llvm-svn: 252364
* [X86] Fold (trunc (i32 (zextload i16))) into vbroadcast.Ahmed Bougacha2015-11-063-12/+10
| | | | | | | | | | | When matching non-LSB-extracting truncating broadcasts, we now insert the necessary SRL. If the scalar resulted from a load, the SRL will be folded into it, creating a narrower, offset, load. However, i16 loads aren't Desirable, so we get i16->i32 zextloads. We already catch i16 aextloads; catch these as well. llvm-svn: 252363
* [X86] SRL non-LSB extracts when folding to truncating broadcasts.Ahmed Bougacha2015-11-065-62/+119
| | | | | | | | | | | | Now that we recognize this, we can support it instead of bailing out. That is, we can fold: (v8i16 (shufflevector (v8i16 (bitcast (v4i32 (build_vector X, Y, ...)))), <1,1,...,1>)) into: (v8i16 (vbroadcast (i16 (trunc (srl Y, 16))))) llvm-svn: 252362
OpenPOWER on IntegriCloud