summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [change-namespace] add leading '::' to references in new namespace when name ↵Eric Liu2017-01-262-7/+105
| | | | | | | | | | | | | | | | | | conflict is possible. Summary: For example, when we change 'na' to "nb::nc", we need to add leading '::' to references "::nc::X" in the changed namespace. Reviewers: bkramer Reviewed By: bkramer Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D29176 llvm-svn: 293182
* Use shouldAssumeDSOLocal in classifyGlobalReference.Rafael Espindola2017-01-264-25/+13
| | | | | | | | | | And teach shouldAssumeDSOLocal that ppc has no copy relocations. The resulting code handle a few more case than before. For example, it knows that a weak symbol can be resolved to another .o file, but it will still be in the main executable. llvm-svn: 293180
* Fixed a couple of invalid statuses for 2665 and 2758Marshall Clow2017-01-261-3/+3
| | | | llvm-svn: 293179
* [X86][SSE] Add support for combining ANDNP byte masks with target shufflesSimon Pilgrim2017-01-262-39/+47
| | | | llvm-svn: 293178
* Fix -r when the input has a relocation with no symbol.Rafael Espindola2017-01-263-0/+10
| | | | | | Should fix a few freebsd packages with dtrace. llvm-svn: 293177
* [SCEV] Introduce add operation inlining limitDaniil Fukalov2017-01-262-0/+25
| | | | | | | | | | | | | Inlining in getAddExpr() can cause abnormal computational time in some cases. New parameter -scev-addops-inline-threshold is intruduced with default value 500. Reviewers: sanjoy Subscribers: mzolotukhin, llvm-commits Differential Revision: https://reviews.llvm.org/D28812 llvm-svn: 293176
* [X86][SSE] Pull out target shuffle resolve code into helper. NFCI.Simon Pilgrim2017-01-261-14/+21
| | | | | | Pulled out code that removed unused inputs from a target shuffle mask into a helper function to allow it to be reused in a future commit. llvm-svn: 293175
* Remove a '#if 0' that wasn't intended for commit in r293173.Daniel Sanders2017-01-261-19/+0
| | | | | | | The '#if 0' contained the code I had intended to use but clang rejects it (possibly incorrectly). llvm-svn: 293174
* Attempt to fix windows buildbots after r293172.Daniel Sanders2017-01-261-1/+1
| | | | llvm-svn: 293173
* [globalisel] Re-factor ISel matchers into a hierarchy. NFCDaniel Sanders2017-01-261-48/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This should make it possible to easily add everything needed to import all the existing SelectionDAG rules. It should also serve the likely kinds of GlobalISel rules (some of which are not currently representable in SelectionDAG) once we've nailed down the tablegen definition for that. The hierarchy is as follows: MatcherRule - A matching rule. Currently used to emit C++ ISel code but will | also be used to emit test cases and tablegen definitions in the | near future. |- Instruction(s) - Represents the instruction to be matched. |- Instruction Predicate(s) - Test the opcode, arithmetic flags, etc. of an | instruction. \- Operand(s) - Represents a particular operand of the instruction. In the | future, there may be subclasses to test the same predicates | on multiple operands (including for variadic instructions). \ Operand Predicate(s) - Test the type, register bank, etc. of an operand. This is where the ComplexPattern equivalent will be represented. It's also nested-instruction matching will live as a predicate that follows the DefUse chain to the Def and tests a MatcherRule from that position. Support for multiple instruction matchers in a rule has been retained from the existing code but has been adjusted to assert when it is used. Previously it would silently drop all but the first instruction matcher. The tablegen-erated file is not functionally changed but has more parentheses and no longer attempts to format the if-statements since keeping track of the indentation is tricky in the presence of the matcher hierarchy. It would be nice to have CMakes tablegen() run the output through clang-format (when available) so we don't have to complicate TableGen with pretty-printing. It's also worth mentioning that this hierarchy will also be able to emit TableGen definitions and test cases in the near future. This is the reason for favouring explicit emit*() calls rather than the << operator. Reviewers: aditya_nandakumar, rovka, t.p.northover, qcolombet, ab Reviewed By: ab Subscribers: igorb, dberris, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D28942 llvm-svn: 293172
* [AMDGPU] Fix typo in GCNSchedStrategyValery Pykhtin2017-01-262-9/+4
| | | | | | Differential revision: https://reviews.llvm.org/D28980 llvm-svn: 293171
* Revert "[mips] N64 static relocation model support"Simon Dardis2017-01-2650-613/+352
| | | | | | This reverts commit r293164. There are multiple tests failing. llvm-svn: 293170
* [ScopDetectionDiagnostic] Add meaningfull enduser message for regions with ↵Tobias Grosser2017-01-262-0/+5
| | | | | | | | | | | entry block Before this change the user only saw "Unspecified Error", when a region contained the entry block. Now we report: "Scop contains function entry (not yet supported)." llvm-svn: 293169
* [LV] Fix an issue where forming LCSSA in the place that we did wouldChandler Carruth2017-01-262-4/+32
| | | | | | | | | | | | | | | | | | | | | | | | change the set of uniform instructions in the loop causing an assert failure. The problem is that the legalization checking also builds data structures mapping various facts about the loop body. The immediate cause was the set of uniform instructions. If these then change when LCSSA is formed, the data structures would already have been built and become stale. The included test case triggered an assert in loop vectorize that was reduced out of the new PM's pipeline. The solution is to form LCSSA early enough that no information is cached across the changes made. The only really obvious position is outside of the main logic to vectorize the loop. This also has the advantage of removing one case where forming LCSSA could mutate the loop but we wouldn't track that as a "Changed" state. If it is significantly advantageous to do some legalization checking prior to this, we can do a more careful positioning but it seemed best to just back off to a safe position first. llvm-svn: 293168
* Fix chromium build (libcxx)Asiri Rathnayake2017-01-261-11/+0
| | | | | | Remove the reference to pthread_mach_thread_np() in libcxx headers. llvm-svn: 293167
* Fix chromium build (libcxxabi)Asiri Rathnayake2017-01-261-1/+13
| | | | | | Pull the dependency on pthread_mach_thread_np() back into libcxxabi. llvm-svn: 293166
* ScopDetectionDiagnostics: Also emit diagnostics in case no debug info is ↵Tobias Grosser2017-01-262-0/+29
| | | | | | | | available In this case, we just use the start of the scop as the debug location. llvm-svn: 293165
* [mips] N64 static relocation model supportSimon Dardis2017-01-2650-352/+613
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes one change to GOT handling and two changes to N64's relocation model handling. Furthermore, the jumptable encodings have been corrected for static N64. Big GOT handling is now done via a new SDNode MipsGotHi - this node is unconditionally lowered to an lui instruction. The first change to N64's relocation handling is the lifting of the restriction that N64 always uses PIC. Now it is possible to target static environments. The second change adds support for 64 bit symbols and enables them by default. Previously N64 had patterns for sym32 mode only. In this mode all symbols are assumed to have 32 bit addresses. sym32 mode support is selectable with attribute 'sym32'. A follow on patch for clang will add the necessary frontend parameter. This partially resolves PR/23485. Thanks to Brooks Davis for reporting the issue! Reviewers: dsanders, seanbruno, zoran.jovanovic, vkalintiris Differential Revision: https://reviews.llvm.org/D23652 llvm-svn: 293164
* [ARM] GlobalISel: Load i1, i8 and i16 args from stackDiana Picus2017-01-266-22/+128
| | | | | | | | | | | | | Add support for loading i1, i8 and i16 arguments from the stack, with or without the ABI extension flags. When the ABI extension flags are present, we load a 4-byte value, otherwise we preserve the size of the load and let the instruction selector replace it with a LDRB/LDRH. This generates the same thing as DAGISel. Differential Revision: https://reviews.llvm.org/D27803 llvm-svn: 293163
* [SLP] Add one more reduction operation for extra argument test to makeAlexey Bataev2017-01-261-2/+8
| | | | | | it vectorizable. llvm-svn: 293162
* Removed an unneccesary #if now that debugserver-mini links Foundation.Sean Callanan2017-01-261-2/+0
| | | | llvm-svn: 293161
* [PM] Use PoisoningVH correctly when merely deleting entries in a mapChandler Carruth2017-01-261-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | with it. This code was dereferencing the PoisoningVH which isn't allowed once it is poisoned. But the code itself really doesn't need to access the pointer, it is just doing the safe stuff of clearing out data structures keyed on the pointer value. Change the code to use iterators to erase directly from a DenseMap. This is also substantially more efficient as it avoids lots of hashing and lookups to do the erasure. DenseMap supports iterating behind the iteration which is fairly easy to implement. Sadly, I don't have a test case here. I'm not even close and I don't know that I ever will be. The issue is that several of the tricky aspects of fixing this only show up when you cause the stack's SmallVector to be in *EXACTLY* the right location. I only ever got a reproduction for those with Clang, and only with *exactly* the right command line flags. Any adjustment, even to seemingly unrelated flags, would make partial and half-way solutions magically start to "work". In good news, all of this was caught with the LLVM test suite. Also, there is no *specific* code here that is untested, just that the old pattern of code won't immediately fail on any test case I've managed to contrive. llvm-svn: 293160
* Chapter3/KaleidoscopeJIT.h: Fix a warning. [-Wunused-lambda-capture]NAKAMURA Takumi2017-01-261-1/+1
| | | | | | "this", aka class members, is not referred in the body. llvm-svn: 293159
* [TargetTransformInfo] Add override keywords to supporess ↵Craig Topper2017-01-261-2/+3
| | | | | | -Winconsistent-missing-override. llvm-svn: 293158
* [AVX-512] Move the combine that runs combineBitcastForMaskedOp to the last ↵Craig Topper2017-01-261-1/+1
| | | | | | DAG combine phase where I had originally meant to put it. llvm-svn: 293157
* [X86] When bitcasting INSERT_SUBVECTOR/EXTRACT_SUBVECTOR to match masked ↵Craig Topper2017-01-261-2/+2
| | | | | | operations, use the correct type for the immediate operand. llvm-svn: 293156
* [TargetTransformInfo] Refactor and improve getScalarizationOverhead()Jonas Paulsson2017-01-269-79/+92
| | | | | | | | | | | | | | | | | Refactoring to remove duplications of this method. New method getOperandsScalarizationOverhead() that looks at the present unique operands and add extract costs for them. Old behaviour was to just add extract costs for one operand of the type always, which still happens in getArithmeticInstrCost() if no operands are provided by the caller. This is a good start of improving on this, but there are more places that can be improved by using getOperandsScalarizationOverhead(). Review: Hal Finkel https://reviews.llvm.org/D29017 llvm-svn: 293155
* Use the new __has_feature(cxx_constexpr_string_builtins) for detection of ↵Marshall Clow2017-01-262-14/+7
| | | | | | the C-string intrinsics for constexpr support in std::char_traits. Thanks to Richard for the intrisic support. llvm-svn: 293154
* [SLP] Fixed test for extra arguments in horizontal reductions.Alexey Bataev2017-01-261-3/+5
| | | | llvm-svn: 293153
* [DAGCombiner] Fold extract_subvector of undef to undef. Fold away inserting ↵Craig Topper2017-01-261-0/+8
| | | | | | undef subvectors. llvm-svn: 293152
* [X86] Add demanded elts support for the inputs to pclmul intrinsicCraig Topper2017-01-261-0/+38
| | | | | | | | This intrinsic uses bit 0 and bit 4 of an immediate argument to determine which bits of its inputs to read. This patch uses this information to simplify the demanded elements of the input vectors. Differential Revision: https://reviews.llvm.org/D28979 llvm-svn: 293151
* Revert test commitTaewook Oh2017-01-261-1/+0
| | | | llvm-svn: 293150
* Further fixes to test from r293146Adam Nemet2017-01-261-3/+4
| | | | | | Require aarch64 and avoid filename in YAML since it may require quotation. llvm-svn: 293149
* test commitTaewook Oh2017-01-261-3/+4
| | | | llvm-svn: 293148
* Fix test from r293146Adam Nemet2017-01-261-1/+1
| | | | llvm-svn: 293147
* Support MIR opt-remarks with -fsave-optimization-recordAdam Nemet2017-01-262-33/+78
| | | | | | | | | | The handler that deals with IR passed/missed/analysis remarks is extended to also handle the corresponding MIR remarks. The more thorough testing in done via llc (rL293113, rL293121). Here we just make sure that the functionality is accessible through clang. llvm-svn: 293146
* [OptDiag] Predicates to check the same type of IR and MIR opt remarksAdam Nemet2017-01-261-0/+15
| | | | | | It will be used from clang. llvm-svn: 293145
* Remove unused #include.Rui Ueyama2017-01-261-1/+0
| | | | llvm-svn: 293144
* Rename NotFlags -> NegFlags.Rui Ueyama2017-01-262-8/+8
| | | | | | Negative flags are still bit flags, so I think "not flag" is a very good name. llvm-svn: 293143
* Use StringRef::lower only once instead of calling ::tolower many times.Rui Ueyama2017-01-261-5/+7
| | | | llvm-svn: 293142
* Split ScriptParser::readMemory.Rui Ueyama2017-01-261-27/+25
| | | | llvm-svn: 293141
* Add Foundation to the debugserver-mini dependencies;Jason Molenda2017-01-261-0/+2
| | | | | | debugserver-mini can use Foundation. llvm-svn: 293140
* [ELF] Add warn-unresolved-symbols/error-unresolved-symbols optionsDavide Italiano2017-01-263-0/+57
| | | | | | | | | Patch by Dmitry Mikulin. PR: 31735 Differential Revision: https://reviews.llvm.org/D29150 llvm-svn: 293139
* ELF: Simplify naming of object files created with save-temps.Peter Collingbourne2017-01-264-5/+9
| | | | | | | | Now we never append a number to the file name for task ID 0. This is similar to r293132 in the gold plugin. llvm-svn: 293138
* gold-plugin: Fix test case.Peter Collingbourne2017-01-261-1/+2
| | | | llvm-svn: 293137
* [PM] Simplify the new PM interface to the loop unroller and expose twoChandler Carruth2017-01-2613-18/+61
| | | | | | | | | | | | | | factory functions for the two modes the loop unroller is actually used in in-tree: simplified full-unrolling and the entire thing including partial unrolling. I've also wired these up to nice names so you can express both of these being in a pipeline easily. This is a precursor to actually enabling these parts of the O2 pipeline. Differential Revision: https://reviews.llvm.org/D28897 llvm-svn: 293136
* Instead of weak-linking against LoggingSupport framework (whichJason Molenda2017-01-261-0/+1
| | | | | | | | | | | | requires that this private framework be available - and it is not available earlier than macOS 10.12 - to build lldb), dlopen the framework binary on demand in debugserver. We're already using dlsym() to look up all the symbols so there is no need to use weak linking here. <rdar://problem/30158797> llvm-svn: 293135
* [index] When indexing an ObjC method declaration use its base name for the ↵Argyrios Kyrtzidis2017-01-267-20/+27
| | | | | | | | | location. Instead of using the location of the beginning '-'/'+'. This is consistent with location used for function decls and ObjC method calls where we use the base name as the location as well. llvm-svn: 293134
* [Loops] Restructure the LoopInfo verify function so that it moreChandler Carruth2017-01-261-35/+59
| | | | | | | | | | | | | | | | | directly walks the current loop structure verifying that a matching structure can be found in a freshly computed version. Also pull things out of containers when necessary once an issue is found and print them directly. This makes it substantially easier to debug verification failures as the process stops at the exact point in the loop nest where they diverge and has in easily accessed local variables (or printed to stderr already) the loops and other information needed to analyze the failure. Differential Revision: https://reviews.llvm.org/D29142 llvm-svn: 293133
* gold-plugin: Simplify naming of object files created with save-temps or ↵Peter Collingbourne2017-01-262-7/+6
| | | | | | | | | | obj-path. Now we never append a number to the file name for task ID 0. Differential Revision: https://reviews.llvm.org/D29160 llvm-svn: 293132
OpenPOWER on IntegriCloud