summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Remove all of the patterns that use X86ISD:FAND/FXOR/FOR/FANDN except ↵Craig Topper2016-12-192-131/+42
| | | | | | | | for the ones needed for SSE1. Anything SSE2 or above uses the integer ISD opcode. This removes 11721 bytes from the DAG isel table or 2.2% llvm-svn: 290073
* Fix name hiding and redeclaration checking for dependent localRichard Smith2016-12-183-39/+49
| | | | | | using-declarations. llvm-svn: 290072
* Fix some interactions between C++11 and C++14 features and using-declarations:Richard Smith2016-12-187-47/+244
| | | | | | | | | | | * a dependent non-type using-declaration within a function template can be valid, as it can refer to an enumerator, so don't reject it in the template definition * we can partially substitute into a dependent using-declaration if it appears within a (local class in a) generic lambda within a function template, which means an UnresolvedUsing*Decl doesn't necessarily instantiate to a UsingDecl. llvm-svn: 290071
* [FileCheck] Fix --strict-whitespace --match-full-lines -- add test-caseTom de Vries2016-12-181-0/+14
| | | | | | | Add test-case that was missing in "[FileCheck] Fix --strict-whitespace --match-full-lines" commit. llvm-svn: 290070
* [FileCheck] Fix --strict-whitespace --match-full-linesTom de Vries2016-12-181-5/+7
| | | | | | | Make sure FileCheck --strict-whitespace --match-full-lines translates 'CHECK: bla ' into pattern '^ bla $' instead of pattern '^bla$'. llvm-svn: 290069
* [PDB] Don't use the long typeDavid Majnemer2016-12-181-1/+1
| | | | | | | | Long is not the same size across a number of the platforms we support. Use unsigned int here instead, it is more appropriate because overflow/wrap-around is possible and, in this case, expected. llvm-svn: 290068
* [InstCombine] use commutative matchers for patterns with commutative operatorsSanjay Patel2016-12-184-71/+48
| | | | | | | | | | | | | | | | | | | | | | | | Background/motivation - I was circling back around to: https://llvm.org/bugs/show_bug.cgi?id=28296 I made a simple patch for that and noticed some regressions, so added test cases for those with rL281055, and this is hopefully the minimal fix for just those cases. But as you can see from the surrounding untouched folds, we are missing commuted patterns all over the place, and of course there are no regression tests to cover any of those cases. We could sprinkle "m_c_" dust all over this file and catch most of the missing folds, but then we still wouldn't have test coverage, and we'd still miss some fraction of commuted patterns because they require adjustments to the match order. I'm aware of the concern about the potential compile-time performance impact of adding matches like this (currently being discussed on llvm-dev), but I don't think there's any evidence yet to suggest that handling commutative pattern matching more thoroughly is not a worthwhile goal of InstCombine. Differential Revision: https://reviews.llvm.org/D24419 llvm-svn: 290067
* Revert r289955 and r289962. This is causing lots of ASAN failures for us.Daniel Jasper2016-12-182-63/+10
| | | | | | | | Not sure whether it causes and ASAN false positive or whether it actually leads to incorrect code or whether it even exposes bad code. Hans, I'll get you instructions to reproduce this. llvm-svn: 290066
* [X86] [AVX512] Minor fix in encoding of scalar EVEX instructions. NFC.Michael Zuckerman2016-12-183-39/+38
| | | | | | | | | | | | Commit on behalf of Gadi Haber Removed EVEX_V512 prefix from scalar EVEX instructions since HW ignores L'L bits anyway (LIG). 4 instructions are modified. The changed encodings are validated with XED. Rviewers: delena, igorb Differential revision: https://reviews.llvm.org/D27802 llvm-svn: 290065
* [X86][SSE] Add support for combining target shuffles to SHUFPS.Simon Pilgrim2016-12-1812-115/+201
| | | | | | As discussed on D27692, the next step will be to allow cross-domain shuffles once the combined shuffle depth passes a certain point. llvm-svn: 290064
* Wdocumentation fixSimon Pilgrim2016-12-181-1/+1
| | | | llvm-svn: 290063
* Remove lld/Support/Memory.h.Rui Ueyama2016-12-1827-62/+154
| | | | | | | | | | | | I thought for a while about how to remove it, but it looks like we can just copy the file for now. Of course I'm not happy about that, but it's just less than 50 lines of code, and we already have duplicate code in Error.h and some other places. I want to solve them all at once later. Differential Revision: https://reviews.llvm.org/D27819 llvm-svn: 290062
* [FileCheck] Fix comment in ReadCheckFileTom de Vries2016-12-181-1/+1
| | | | | | | The comment in ReadCheckFile claims that both leading and trailing whitespace are removed, but the associated statement only removes leading whitespace. llvm-svn: 290061
* [X86][SSE][AVX-512] Convert FAND/FOR/FXOR/FANDN nodes to integer operations ↵Craig Topper2016-12-185-58/+72
| | | | | | | | | | | | if they are available. This will allow a bunch of patterns to be removed. These nodes are only emitted for lowering FABS/FNEG/FNABS/FCOPYSIGN. Ideally we just wouldn't create these nodes if SSE2 or higher is available, but it was simple to just convert them in DAG combine. For SSE2, AVX, and AVX512 with DQI this is no functional change as the execution domain fixing pass ensures the right domain is selected regardless of the ISD opcode. For AVX-512 without DQI we end up using integer instructions since the floating point versions aren't available. But we were already doing that for any logical operations in code that didn't come from FABS/FNEG/FNABS/FCOPYSIGN so this seems no worse. And we get the benefit of being able to fold broadcasts now. llvm-svn: 290060
* Fix a lit test issue exposed by r290056Yaxun Liu2016-12-181-3/+3
| | | | | | | | | | The test requests a target which supports cl_khr_gl_msaa_sharing since in test/PCH/ocl_types.h it tries to enable cl_khr_gl_msaa_sharing. Therefore this test fails on targets not supporting cl_khr_gl_msaa_sharing, e.g. ppc64, etc. The fix is to add triple spir-unknown-unknown which supports cl_khr_gl_msaa_sharing. llvm-svn: 290059
* Attempt to fix build failure and regressions due to r290056Yaxun Liu2016-12-183-11/+11
| | | | | | | Add llvm:: namespace to StringRef. Make conversion between bool and uint64_t explicit. llvm-svn: 290058
* [AVX-512] Use EVEX encoded XOR instruction for zeroing scalar registers when ↵Craig Topper2016-12-184-6/+47
| | | | | | | | DQI and VLX instructions are available. This can give the register allocator more registers to use. llvm-svn: 290057
* Recommit r289979 [OpenCL] Allow disabling types and declarations associated ↵Yaxun Liu2016-12-1829-275/+666
| | | | | | | | with extensions Fixed undefined behavior due to cast integer to bool in initializer list. llvm-svn: 290056
* [AVX-512] Make sure VLX is also enabled before using EVEX encoded logic ops ↵Craig Topper2016-12-183-3/+3
| | | | | | for scalars. I missed this in r290049. llvm-svn: 290055
* [PDB] Don't reimplement CRC32David Majnemer2016-12-181-50/+5
| | | | | | | We already have a CRC32 implementation which is compatible with the PDB hash, reuse it. llvm-svn: 290054
* [PDB] Validate superblock addressesDavid Majnemer2016-12-182-0/+10
| | | | | | | - Validate the address of the block map. - Validate the address of the free block map. llvm-svn: 290053
* [CMake] Fix issue reported on sanitizer botsChris Bieneman2016-12-171-1/+1
| | | | | | This should resolve an issue reported on the commit thread that impacted sanitizer bots. llvm-svn: 290052
* [clang-tidy] Remove duplicated check from move-constructor-initMalcolm Parsons2016-12-1710-109/+34
| | | | | | | | | | | | | | | | | | | | Summary: An addition to the move-constructor-init check was duplicating the modernize-pass-by-value check. Remove the additional check and UseCERTSemantics option. Run the move-constructor-init test with both checks enabled. Fix modernize-pass-by-value false-positive when initializing a base class. Add option to modernize-pass-by-value to only warn about parameters that are already values. Reviewers: alexfh, flx, aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D26453 llvm-svn: 290051
* AMDGPU: Fix broken check prefix in testMatt Arsenault2016-12-171-10/+7
| | | | llvm-svn: 290050
* [AVX-512] Use EVEX encoded logic operations for scalar types when they are ↵Craig Topper2016-12-173-5/+42
| | | | | | available. This gives the register allocator more registers to work with. llvm-svn: 290049
* [AVX-512] Update scalar logic test to show missed opportunity to use EVEX ↵Craig Topper2016-12-171-19/+40
| | | | | | encoded logic instructions to get more registers to use. llvm-svn: 290048
* Revert "AArch64CollectLOH: Rewrite as block-local analysis."Matthias Braun2016-12-175-473/+850
| | | | | | | | It is still breaking Chrome. http://llvm.org/PR31361 This reverts commit r290026. llvm-svn: 290047
* [InstCombine] Simplify code slightly. NFCCraig Topper2016-12-171-1/+1
| | | | llvm-svn: 290046
* Fix the cmake declaration syntaxSylvestre Ledru2016-12-171-1/+1
| | | | llvm-svn: 290045
* Support of lldb on Kfreebsd Sylvestre Ledru2016-12-174-6/+9
| | | | | | | | | | | | | | Summary: Patch by Pino Toscano. Reported in http://bugs.debian.org/835665 Reviewers: tfiala, emaste Subscribers: beanz, mgorny, emaste, krytarowski, brucem, tberghammer, danalbert, srhines, #lldb Tags: #lldb Differential Revision: https://reviews.llvm.org/D23977 llvm-svn: 290044
* Revert "[libFuzzer] add an experimental flag -experimental_len_control=1 ↵Daniel Jasper2016-12-176-32/+9
| | | | | | | | | | | that sets max_len to 1M and tries to increases the actual max sizes of mutations very gradually. Also remove a bit of dead code" This reverts commit r289998. See comment: https://reviews.llvm.org/rL289998 llvm-svn: 290043
* [ELF] - Use DWARFDebugPubTable parser class intead of hand-written parsing.George Rimar2016-12-171-16/+5
| | | | | | | DWARFDebugPubTable was introduced recently and allows us to get rid of code duplication in LLD. llvm-svn: 290042
* [DWARF] - Make PubIndexEntryDescriptor::toBits() to be const.George Rimar2016-12-171-1/+3
| | | | | | | That is usefull when iterating over entries of new DWARFDebugPubTable class via DWARFDebugPubTable::getData which returns ArrayRef. llvm-svn: 290041
* [DWARF] - Introduce DWARFDebugPubTable class for dumping pub* sections.George Rimar2016-12-174-41/+154
| | | | | | | | | | Patch implements parser of pubnames/pubtypes tables instead of static function used before. It is now should be possible to reuse it in LLD or other projects and clean up the duplication code. Differential revision: https://reviews.llvm.org/D27851 llvm-svn: 290040
* [libFuzzer] use less memory for mergeKostya Serebryany2016-12-173-9/+13
| | | | llvm-svn: 290039
* [OpenMP] Sema and parsing for 'target teams' pragmaKelvin Li2016-12-1741-35/+3323
| | | | | | | | This patch is to implement sema and parsing for 'target teams' pragma. Differential Revision: https://reviews.llvm.org/D27818 llvm-svn: 290038
* Add custom type for PseudoSourceValueTom Stellard2016-12-172-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Summary: PseudoSourceValue can be used to attach a target specific value for "well behaved" side-effects lowered from target specific intrinsics. This is useful whenever there is not an LLVM IR Value around when representing such "well behaved" side-effected operations in backends by attaching a MachineMemOperand with a custom PseudoSourceValue as this makes the scheduler not treating them as "GlobalMemoryObjects" which triggers a logic that makes the operation act like a barrier in the Schedule DAG. This patch adds another Kind to the PseudoSourceValue object which is "TargetCustom". It indicates a type of PseudoSourceValue that has a target specific meaning (aka. LLVM shouldn't assume any specific usage for such a PSV). It supports the possibility of having many different kinds of "TargetCustom" PseudoSourceValues. We had a discussion about if this was valuable or not (in particular because there was a believe that PSV were going away sooner or later) but seems like they are not going anywhere and I think they are useful backend side. It is not clear the interaction of this with MIRParser (do we need a target hook to parse these?) and I would like a comment from Alex about that :) Reviewers: arphaman, hfinkel, arsenm Subscribers: Eugene.Zelenko, llvm-commits Patch By: Marcello Maggioni Differential Revision: https://reviews.llvm.org/D13575 llvm-svn: 290037
* ADT: Add a getArrayRef() accessor to MapVector.Peter Collingbourne2016-12-171-0/+3
| | | | llvm-svn: 290036
* [libFuzzer] speed up __sanitizer_cov_trace_switch a bit more (remove DIV)Kostya Serebryany2016-12-171-1/+11
| | | | llvm-svn: 290034
* [libFuzzer] remove stale testKostya Serebryany2016-12-171-3/+0
| | | | llvm-svn: 290033
* Move test to correct directoryMatthias Braun2016-12-171-0/+0
| | | | | | See also test/CodeGen/MIR/README llvm-svn: 290032
* [libFuzzer] when tracing switch statements, handle only one case at a time ↵Kostya Serebryany2016-12-173-6/+16
| | | | | | (to make things faster). Also ensure that the signals from value profile do not intersect with the regular coverage llvm-svn: 290031
* Revert "[GVNHoist] Move GVNHoist to function simplification part of pipeline."Evgeniy Stepanov2016-12-172-40/+2
| | | | | | | | This reverts r289696, which caused TSan perf regression. See PR31382. llvm-svn: 290030
* Fix compilation.Evgeniy Stepanov2016-12-171-1/+1
| | | | | | | unittests/ADT/TwineTest.cpp:106:38: error: field 'Count' will be initialized after base 'llvm::FormatAdapter<int>' [-Werror,-Wreorder] explicit formatter(int &Count) : Count(Count), FormatAdapter(0) {} llvm-svn: 290029
* [Hexagon] Other attempt to fix build with enabled asserts broken in 290024 ↵Eugene Zelenko2016-12-171-0/+1
| | | | | | (NFC). llvm-svn: 290028
* [Hexagon] Fix build with enabled asserts broken in 290024 (NFC).Eugene Zelenko2016-12-171-0/+1
| | | | llvm-svn: 290027
* AArch64CollectLOH: Rewrite as block-local analysis.Matthias Braun2016-12-175-850/+473
| | | | | | | | | | | | | | | | | Re-apply r288561: Liveness tracking should be correct now after r290014. Previously this pass was using up to 5% compile time in some cases which is a bit much for what it is doing. The pass featured a full blown data-flow analysis which in the default configuration was restricted to a single block. This rewrites the pass under the assumption that we only ever work on a single block. This is done in a single pass maintaining a state machine per general purpose register to catch LOH patterns. Differential Revision: https://reviews.llvm.org/D27329 llvm-svn: 290026
* [libclang] Remove the 'extern "C"' blocks from the implementation files.Argyrios Kyrtzidis2016-12-1716-119/+3
| | | | | | | These are unnecessary, the declarations already carry the 'extern C' property, and if there is mismatch between declaration and definition then we will get linker errors via libclang.exports. llvm-svn: 290025
* [Hexagon] Fix some Clang-tidy modernize and Include What You Use warnings; ↵Eugene Zelenko2016-12-1711-163/+220
| | | | | | other minor fixes (NFC). llvm-svn: 290024
* [analyzer] UnixAPIChecker: Don't diagnose for functions in C++ namespacesDevin Coughlin2016-12-172-0/+68
| | | | | | | | | | Update the UnixAPIChecker to not diagnose for calls to functions that are declared in C++ namespaces. This avoids false positives when a namespaced function has the same name as a Unix API. This address PR28331. llvm-svn: 290023
OpenPOWER on IntegriCloud