summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [Dominators] Split SemiNCA into smaller functionsJakub Kuderski2017-07-131-58/+77
| | | | | | | | | | | | | | | | | Summary: This patch splits the SemiNCA algorithm into smaller functions. It also adds a new debug macro. In order to perform incremental updates, we need to be able to refire SemiNCA on a subset of CFG nodes (determined by a DFS walk results). We also need to skip nodes that are not deep enough in a DomTree. Reviewers: dberlin, davide, sanjoy, grosser Reviewed By: dberlin, davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35282 llvm-svn: 307950
* Move feature-specific functions out of Strings.cpp.Rui Ueyama2017-07-134-26/+23
| | | | | | | | Functions declared in Strings.h should provide generic string operations for the linker, but some of them are too specific to some features. This patch moves them to the location where they are used. llvm-svn: 307949
* [COFF] Bounds check relocationsReid Kleckner2017-07-133-1/+71
| | | | | | | | | | | | | | | | | | Summary: This would have caught the invalid object file I used in my test case in r307726. The OOB was only caught by ASan later, which is slow and doesn't work on some platforms. LLD should do some basic input validation itself. This check isn't perfect, so relocations can reach OOB by up to seven bytes, but it's better than what we had and probably cheap. Reviewers: ruiu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35371 llvm-svn: 307948
* [NFC] Move DEBUG_TYPE below includes in HexagonJakub Kuderski2017-07-137-14/+14
| | | | llvm-svn: 307947
* [PDB] Fix type server handling for archivesReid Kleckner2017-07-136-19/+154
| | | | | | | | | | | | | | | | | | | Summary: This fixes type indices for SDK or CRT static archives. Previously we'd try to look next to the archive object file path, which would not exist on the local machine. Also error out if we can't resolve a type server record. Hypothetically we can recover from this error by discarding debug info for this object, but that is not yet implemented. Reviewers: ruiu, amccarth Subscribers: aprantl, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D35369 llvm-svn: 307946
* For Darwin's GetTaskInfoMaxAddress, define the real structure with real ↵Kuba Mracek2017-07-131-5/+26
| | | | | | fields to avoid confusion. NFC. llvm-svn: 307945
* Enable parsing C++ names generated by lambda functions.Jim Ingham2017-07-133-0/+39
| | | | | | https://reviews.llvm.org/D34911 from Weng Xuetian. llvm-svn: 307944
* Convert a few more tests to use run_to_source_breakpoint.Jim Ingham2017-07-133-84/+7
| | | | llvm-svn: 307943
* Fix a deadlock in the Python interpreter vrs. SIGINT.Jim Ingham2017-07-132-2/+2
| | | | | | | | | | | The interpreter gets invoked in the sigint handler to cancel long-running Python operations. That requires the interpreter lock, but that may be held by the Python operation that's getting interrupted, so the mutex needs to be recursive. <rdar://problem/33179086> llvm-svn: 307942
* [demangler] Respect try_to_parse_template_argsErik Pilkington2017-07-132-10/+14
| | | | | | Fixes an exponential parse found by oss-fuzz. llvm-svn: 307941
* [NFC] Move DEBUG_TYPE macro below includes...Jakub Kuderski2017-07-131-2/+2
| | | | | | in MachineCombiner.cpp. llvm-svn: 307940
* Revert "[mips][mt][6/7] Add support for mftr, mttr instructions."Simon Dardis2017-07-1315-568/+25
| | | | | | | This reverts r307836, it broke one of the buildbots. Reverting while I investigate. llvm-svn: 307939
* [lit] add a -vv option to echo all executed commands.George Karpenkov2017-07-134-2/+23
| | | | | | | | | | | | | | | | | | | Debugging LIT scripts can be rather painful, as LIT directly does not specify which line has failed. Rather, FileCheck is expected to report the failing location, but it can be often ambiguous if multiple commands are tested against the same prefix. This change adds a -vv option, which echoes all output. Then detecting the error becomes straightforward: last printed line is the failing one. Of course, it could be desired to try to get failing line number directly from bash, but it involves excessive hacks on older bash versions (cf. https://stackoverflow.com/questions/24398691/how-to-get-the-real-line-number-of-a-failing-bash-command) Differential Revision: https://reviews.llvm.org/D35330 llvm-svn: 307938
* [X86][tests] Added rotate_vec.ll CodeGen test. NFC precommit for bug 33691 fix.Andrew Zhogin2017-07-131-0/+60
| | | | llvm-svn: 307937
* [Dominators] Improve reachability verificationJakub Kuderski2017-07-132-2/+19
| | | | | | | | | | | | | | | | Summary: This patch improves verification by making `verifyReachablility` look for CFG not found in the DomTree. It also makes the verification work with postdominators by handling virtual root. Reviewers: dberlin, davide, grosser, sanjoy Reviewed By: dberlin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35279 llvm-svn: 307936
* [Hexagon] Use VSPLAT instead of COMBINE for vectors of type v2i32, NFCKrzysztof Parzyszek2017-07-132-29/+28
| | | | | | This cleans up the vector shift patterns. llvm-svn: 307935
* [PowerPC] Ensure displacements for DQ-Form instructions are multiples of 16Nemanja Ivanovic2017-07-1312-117/+210
| | | | | | | | | | | | | As outlined in the PR, we didn't ensure that displacements for DQ-Form instructions are multiples of 16. Since the instruction encoding encodes a quad-word displacement, a sub-16 byte displacement is meaningless and ends up being encoded incorrectly. Fixes https://bugs.llvm.org/show_bug.cgi?id=33671. Differential Revision: https://reviews.llvm.org/D35007 llvm-svn: 307934
* [AArch64] Produce the right kind of va_arg for windowsMartin Storsjo2017-07-132-3/+29
| | | | | | | | On windows on arm64, the va_list is a plain pointer. Differential Revision: https://reviews.llvm.org/D35008 llvm-svn: 307933
* Fix spelling mistakes in comments. NFCI.Simon Pilgrim2017-07-131-14/+14
| | | | llvm-svn: 307932
* Fix -Wdocumentation warning. NFCISimon Pilgrim2017-07-131-1/+0
| | | | llvm-svn: 307931
* [InstCombine] add descriptive comments for tests; NFCSanjay Patel2017-07-131-9/+19
| | | | | | Also, remove unnecessary function attributes. llvm-svn: 307930
* Fix unused variable warning on EXPENSIVE_CHECKS release builds. NFCI.Simon Pilgrim2017-07-131-1/+1
| | | | llvm-svn: 307929
* [AArch64] Implement support for windows style vararg functionsMartin Storsjo2017-07-136-8/+152
| | | | | | | | | | | Pass parameters properly in calls to such functions (pass all floats in integer registers), and handle va_start properly (allocate stack immediately below the arguments on the stack, to save the register arguments into a single continuous array). Differential Revision: https://reviews.llvm.org/D35006 llvm-svn: 307928
* [llvm-objdump] Properly print MachO aarch64 addend relocationsMartin Storsjo2017-07-133-1/+10
| | | | | | | | | | Previously such relocations fell into the last case for local symbols, using the relocation addend as symbol index, leading to a crash. Differential Revision: https://reviews.llvm.org/D35239 llvm-svn: 307927
* Documentation fix. NFC.Rafael Espindola2017-07-131-1/+1
| | | | | | A MCFixup might not even be in an instruction. llvm-svn: 307926
* Put std::mutex usage behind #ifdefs to pacify the sanitizer buildbotReid Kleckner2017-07-131-0/+22
| | | | llvm-svn: 307925
* Extend -Wdeprecated-implementations to warn about unavailable methodsAlex Lorenz2017-07-133-2/+22
| | | | | | rdar://22867595 llvm-svn: 307924
* NFC, Cleanup the code for -Wdeprecated-implementationsAlex Lorenz2017-07-133-29/+35
| | | | | | | | and void capitalization of the warning message rdar://22867595 llvm-svn: 307923
* Support: Add llvm::center_justify.Frederich Munch2017-07-133-14/+45
| | | | | | | | | | | | | | Summary: Completes the set. Reviewers: ruiu Reviewed By: ruiu Subscribers: ruiu, llvm-commits Differential Revision: https://reviews.llvm.org/D35278 llvm-svn: 307922
* [GlobalOpt] Autogenerate checks for the test in PR33686.Davide Italiano2017-07-131-5/+5
| | | | | | Also fix a typo while here. llvm-svn: 307921
* Reapply [GlobalOpt] Remove unreachable blocks before optimizing a function.Davide Italiano2017-07-132-0/+35
| | | | | | | This commit reapplies r307215 now that we found out and fixed the cause of the cfi test failure (in r307871). llvm-svn: 307920
* [AArch64] Add support for handling the +sve target feature.Amara Emerson2017-07-132-4/+16
| | | | | | | | This also adds the appropriate predefine for SVE if enabled. Differential Revision: https://reviews.llvm.org/D35118 llvm-svn: 307919
* [AArch64] Enable the mnemonic spell checkerSjoerd Meijer2017-07-132-7/+51
| | | | | | | | | The AsmParser mnemonic spell checker was introduced in r307148 and enabled only for ARM. This patch enables it for AArch64. Differential Revision: https://reviews.llvm.org/D35357 llvm-svn: 307918
* [AArch64] Add an SVE target feature to the backend and TargetParser.Amara Emerson2017-07-137-5/+18
| | | | | | | The feature will be used properly once assembler/disassembler support begins to land. llvm-svn: 307917
* [OPENMP] Fix reduction tests, NFC.Alexey Bataev2017-07-132-10/+2
| | | | llvm-svn: 307916
* [OPENMP] Fix reduction tests, NFC.Alexey Bataev2017-07-132-2/+0
| | | | llvm-svn: 307915
* [OPENMP] Further reduction test fix, NFC.Alexey Bataev2017-07-132-18/+2
| | | | llvm-svn: 307914
* [AArch64] Add preliminary support for ARMv8.1 SUB/AND atomicsMatthew Simpson2017-07-134-3/+175
| | | | | | | This patch is a follow-up to r305893 and adds preliminary support for the fetch_sub and fetch_and operations. llvm-svn: 307913
* [OPENMP] Fix reduction tests, NFC.Alexey Bataev2017-07-132-12/+4
| | | | llvm-svn: 307912
* [OPENMP] Fix reduction tests, NFC.Alexey Bataev2017-07-132-8/+10
| | | | llvm-svn: 307911
* [OPENMP] Generalization of codegen for reduction clauses.Alexey Bataev2017-07-135-401/+579
| | | | | | | Reworked codegen for reduction clauses for future support of reductions in task-based directives. llvm-svn: 307910
* [RuntimeUnrolling] Update DomTree correctly when exit blocks have successorsAnna Thomas2017-07-132-2/+154
| | | | | | | | | | | | | | | | Summary: When we runtime unroll with multiple exit blocks, we also need to update the immediate dominators of the immediate successors of the exit blocks. Reviewers: reames, mkuper, mzolotukhin, apilipenko Reviewed by: mzolotukhin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35304 llvm-svn: 307909
* Remove another 'using namespace llvm' from theAlex Lorenz2017-07-131-2/+0
| | | | | | | | | RecursiveSymbolVisitor.h header This should fix the modules build (http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules-2/). llvm-svn: 307908
* [Invariant Loads] Do not consider invariant loads to have dependences.Siddharth Bhat2017-07-1317-56/+197
| | | | | | | | | | | | | | | | | We need to relax constraints on invariant loads so that they do not create fake RAW dependences. So, we do not consider invariant loads as scalar dependences in a region. During these changes, it turned out that we do not consider `llvm::Value` replacements correctly within `PPCGCodeGeneration` and `ISLNodeBuilder`. The replacements dictated by `ValueMap` were not being followed in all places. This was fixed in this commit. There is no clean way to decouple this change because this bug only seems to arise when the relaxed version of invariant load hoisting was enabled. Differential Revision: https://reviews.llvm.org/D35120 llvm-svn: 307907
* Reland "[mips] Fix multiprecision arithmetic."Simon Dardis2017-07-1311-463/+645
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | For multiprecision arithmetic on MIPS, rather than using ISD::ADDE / ISD::ADDC, get SelectionDAG to break down the operation into ISD::ADDs and ISD::SETCCs. For MIPS, only the DSP ASE has a carry flag, so in the general case it is not useful to directly support ISD::{ADDE, ADDC, SUBE, SUBC} nodes. Also improve the generation code in such cases for targets with TargetLoweringBase::ZeroOrOneBooleanContent by directly using the result of the comparison node rather than using it in selects. Similarly for ISD::SUBE / ISD::SUBC. Address optimization breakage by moving the generation of MIPS specific integer multiply-accumulate nodes to before legalization. This revolves PR32713 and PR33424. Thanks to Simonas Kazlauskas and Pirama Arumuga Nainar for reporting the issue! Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D33494 The previous version of this patch was too aggressive in producing fused integer multiple-addition instructions. llvm-svn: 307906
* Remove 'using namespace llvm' from the USRFinder.h headerAlex Lorenz2017-07-131-2/+0
| | | | | | | This should fix the modules build (http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules-2/). llvm-svn: 307905
* [ARM] GlobalISel: Support G_BRDiana Picus2017-07-134-0/+55
| | | | | | | | This boils down to not crashing in reg bank select due to the lack of register operands on this instruction, and adding some tests. The instruction selection is already covered by the TableGen'erated code. llvm-svn: 307904
* [ObjC] Pick a 'readwrite' property when synthesizing ambiguousAlex Lorenz2017-07-137-45/+304
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | property and check for incompatible attributes This commit changes the way ambiguous property synthesis (i.e. when synthesizing a property that's declared in multiple protocols) is performed. Previously, Clang synthesized the first property that was found. This lead to problems when the property was synthesized in a class that conformed to two protocols that declared that property and a second protocols had a 'readwrite' declaration - the setter was not synthesized so the class didn't really conform to the second protocol and user's code would crash at runtime when they would try to set the property. This commit ensures that a first readwrite property is selected. This is a semantic change that changes users code in this manner: ``` @protocol P @property(readonly) int p; @end @protocol P2 @property(readwrite) id p; @end @interface I <P2> @end @implementation I @syntesize p; // Users previously got a warning here, and Clang synthesized // readonly 'int p' here. Now Clang synthesizes readwrite 'id' p.. @end ``` To ensure that this change is safe, the warning about incompatible types is promoted to an error when this kind of readonly/readwrite ambiguity is detected in the @implementation. This will ensure that previous code that had this subtle bug and ignored the warning now will fail to compile with an error, and users should not get suprises at runtime once they resolve the error. The commit also extends the ambiguity checker, and now it can detect conflicts among the different property attributes. An error diagnostic is used for conflicting attributes, to ensure that the user won't get "suprises" at runtime. ProtocolPropertyMap is removed in favour of a a set + vector because the map's order of iteration is non-deterministic, so it couldn't be used to select the readwrite property. rdar://31579994 Differential Revision: https://reviews.llvm.org/D35268 llvm-svn: 307903
* [PM] Use range-based for loops in LegacyPassManager.cpp (NFC).Florian Hahn2017-07-131-28/+23
| | | | | | | | | | | | | | | | | | | | | | Summary: This patch replaces a bunch of iterator-based for loops with range-based for loops. There are 2 iterator-based loops left in this file in removeNotPreservedAnalysis, but I think those cannot be replaced by range-based for loops as they modify the container they are iterating over. Unless I missed something, this schould be a NFC and I would appreciate if someone could have a quick look to confirm that. Reviewers: chandlerc, pcc, jhenderson Reviewed By: jhenderson Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D35310 llvm-svn: 307902
* [index] Objective-C method declarations and message sends withAlex Lorenz2017-07-132-0/+29
| | | | | | | | an empty first selector piece should store the location of the first ':' rdar://33188656 llvm-svn: 307901
OpenPOWER on IntegriCloud