summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [ARM] Use sub for negative offset load/store in thumb1David Green2019-01-293-42/+71
| | | | | | | | | | | This attempts to optimise negative values used in load/store operands a little. We currently try to selct them as rr, materialising the negative constant using a MOV/MVN pair. This instead selects ri with an immediate of 0, forcing the add node to become a simpler sub. Differential Revision: https://reviews.llvm.org/D57121 llvm-svn: 352475
* [X86] Regenerate abi-isel.ll testSimon Pilgrim2019-01-291-5/+6
| | | | | | Adds note requested in D57301 and fixes some missing GOTPCREL addressmath checks llvm-svn: 352474
* [analyzer] Toning down invalidation a bitGabor Horvath2019-01-296-12/+27
| | | | | | | | | When a function takes the address of a field the analyzer will no longer assume that the function will change other fields of the enclosing structs. Differential Revision: https://reviews.llvm.org/D57230 llvm-svn: 352473
* [ARM] Add extra testcases for D57121. NFCDavid Green2019-01-291-0/+482
| | | | llvm-svn: 352472
* Remove 'XFAIL: powerpc64' from a debuginfo testJeremy Morse2019-01-291-4/+0
| | | | | | | | | | | | This test started XPASSing with r352467, and the change in behaviour performed by that patch does appear to fix the cause of the original XFAIL (missing FrameIndex DBG_VALUE), which I've replicated locally with -mtriple=powerpc64--. I'll write this up in PR21881 which documents the XFAIL, and seek confirmation I haven't overlooked something here. llvm-svn: 352471
* [analyzer] Added a checklist to help checker authors and reviewersGabor Horvath2019-01-291-0/+105
| | | | | | Differential Revision: https://reviews.llvm.org/D52984 llvm-svn: 352470
* [IPCP] Don't crash due to arg count/type mismatch between caller/calleeBjorn Pettersson2019-01-293-0/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch avoids an assert in IPConstantPropagation when there is a argument count/type mismatch between the caller and the callee. While this is actually UB on C-level (clang emits a warning), the IR verifier seems to accept it. I'm not sure what other frontends/languages might think about this, so simply bailing out to avoid hitting an assert (in CallSiteBase<>::getArgOperand or Value::doRAUW) seems like a simple solution. The problem is exposed by the fact that AbstractCallSites will look through a bitcast at the callee position of a call/invoke. Reviewers: jdoerfert, reames, efriedma Reviewed By: jdoerfert, efriedma Subscribers: eli.friedman, efriedma, llvm-commits Differential Revision: https://reviews.llvm.org/D57052 llvm-svn: 352469
* [analyzer] Fix a typo in docsGabor Horvath2019-01-291-1/+1
| | | | llvm-svn: 352468
* [DebugInfo][DAG] Process FrameIndex dbg.values unconditionallyJeremy Morse2019-01-293-1/+95
| | | | | | | | | | | | | | | A FrameIndex should be valid throughout a block regardless of what instructions get selected in that block -- therefore we shouldn't harness dbg.values that refer to FrameIndexes to an SDNode. There are numerous codegen reasons why an SDNode never appears or doesn't become a location that a DBG_VALUE can refer to. None of them actually affect the variable location. Therefore, before any other tests to encode dbg_values in a SelectionDAG, identify FrameIndex operands and encode them unattached to any SDNode. Differential Revision: https://reviews.llvm.org/D57328 llvm-svn: 352467
* [NFC] Use ArrayRef instead of SmallVectorImpl where possibleMax Kazantsev2019-01-292-10/+10
| | | | llvm-svn: 352466
* [COFF, ARM64] Don't put jump table into a separate COFF section for ↵Martin Storsjo2019-01-293-4/+61
| | | | | | | | | | | | | | | | | | | | | | EK_LabelDifference32 Windows ARM64 has PIC relocation model and uses jump table kind EK_LabelDifference32. This produces jump table entry as ".word LBB123 - LJTI1_2" which represents the distance between the block and jump table. A new relocation type (IMAGE_REL_ARM64_REL32) is needed to do the fixup correctly if they are in different COFF section. This change saves the jump table to the same COFF section as the associated code. An ideal fix could be utilizing IMAGE_REL_ARM64_REL32 relocation type. Patch by Tom Tan! Differential Revision: https://reviews.llvm.org/D57277 llvm-svn: 352465
* [NativePDB] Add basic support of methods recostruction in ASTAleksandr Urakov2019-01-296-7/+93
| | | | | | | | | | | | | | | | | | Summary: This patch adds the basic support of methods reconstruction by native PDB plugin. It contains only most obvious changes (it processes LF_ONEMETHOD and LF_METHOD records), some things still remain unsolved: - mangled names retrieving; - support of template methods. Reviewers: zturner, labath, lemo, stella.stamenova Reviewed by: zturner Differential Revision: https://reviews.llvm.org/D56126 llvm-svn: 352464
* [AArch64] Update int64_t ACLE builtin argumentsSam Parker2019-01-293-17/+32
| | | | | | | | Re-applying r351740 with fixes (changing LL to W). Differential Revision: https://reviews.llvm.org/D56852 llvm-svn: 352463
* [CodeGenPrepare] Handle all debug calls in dupRetToEnableTailCallOpts()Jonas Paulsson2019-01-292-4/+173
| | | | | | | | | | | | This patch makes sure that a debug value that is after the bitcast in dupRetToEnableTailCallOpts() is also skipped. The reduced test case is from SPEC-2006 on SystemZ. Review: Vedant Kumar, Wolfgang Pieb https://reviews.llvm.org/D57050 llvm-svn: 352462
* Don't define unw_fpreg_t to uint64_t for __ARM_DWARF_EH__Martin Storsjo2019-01-294-17/+17
| | | | | | | | | | | | | | | | | | | | | The existing typedef of unw_fpreg_t to uint64_t might work and be correct for the ARM_EHABI case, but for dwarf, some cases in e.g. DwarfInstructions.hpp convert between double and unw_fpreg_t. When converting implicitly between double and unw_fpreg_t (uint64_t), the values get interpreted as integers and converted to float and vice versa, while the correct thing would be to keep the same bit pattern. Avoid the whole issue by using the same definition of unw_fpreg_t as all other architectures, when using dwarf unwinding on ARM. Change assembler functions to take a void pointer instead of unw_fpreg_t pointer, to avoid having a different mangled symbol name depending on the actual value of this typedef. Differential Revision: https://reviews.llvm.org/D57001 llvm-svn: 352461
* Fix an incorrectly configured test.Jeremy Morse2019-01-291-0/+2
| | | | | | This should have had a target triple in it, my mistake. llvm-svn: 352460
* [MinGW] Ignore the --plugin and --plugin-opt optionMartin Storsjo2019-01-291-0/+6
| | | | | | | | | | GCC can use LLD with -fuse-ld=lld for MinGW these days, but by default these options are passed to the linker (unless -fno-lto is passed to the GCC driver). Differential Revision: https://reviews.llvm.org/D57304 llvm-svn: 352459
* Remove unused variable to silence compiler warningMikael Holmen2019-01-291-1/+1
| | | | llvm-svn: 352456
* Fix compiler warning when using clang 3.6.0Mikael Holmen2019-01-291-1/+1
| | | | | | | | | | | | Without the fix we get the following (with -Werror): ../lib/Target/X86/X86ISelLowering.cpp:14181:58: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] SmallVector<std::array<int, 2>, 2> LaneSrcs(NumLanes, {-1, -1}); ^~~~~~ { } 1 error generated. llvm-svn: 352455
* Correct contents for r352453Philip Reames2019-01-291-72/+48
| | | | | | I had a local change I hadn't realized when submitting that auto-update. As such, the auto-update was wrong. This should fix it, and with that, it's clearly time to stop submitting changes and go to bed. llvm-svn: 352454
* [Tests] Regen to remove future test diffsPhilip Reames2019-01-291-128/+152
| | | | | | This file appears to have been manually editted at some point after being auto-updated. A future change adjusts this file slightly, and all of the updates makes the diff super confusing. llvm-svn: 352453
* [Test] Add tests for gather/maked.load demanded elements, and convert the ↵Philip Reames2019-01-291-17/+67
| | | | | | whole file to auto generated checks. llvm-svn: 352452
* [SCEV] Take correct loop in AddRec simplification. PR40420Max Kazantsev2019-01-292-2/+1
| | | | | | | | | | | | The code of AddRec simplification is using wrong loop when it creates a new AddRecExpr. It should be using AddRecLoop which we have saved and against which all gate checks are made, and not calling AddRec->getLoop() over and over again because AddRec may change and become an AddRecurrency from outer loop during the transform iterations. Considering this change trivial, commiting for postcommit review. llvm-svn: 352451
* [NFC] Merge failing test from PR40420Max Kazantsev2019-01-291-0/+51
| | | | llvm-svn: 352450
* [CMake][Fuchsia] Temporarily disable modules for second stagePetr Hosek2019-01-291-1/+0
| | | | | | This is breaking some of builders, disable modules until it's resolved. llvm-svn: 352449
* [compiler-rt] Fix reporting unrecognized flags in unit tests.Igor Kudrin2019-01-291-0/+3
| | | | | | | | Previously, the warning messages might be issued within a wrong test case. Differential Revision: https://reviews.llvm.org/D57318 llvm-svn: 352447
* Try to make new test more resilient to different orderingsTeresa Johnson2019-01-291-7/+6
| | | | | | | | New test added in r352441 getting a bot failure which I believe is due to different ordering in the dumping which isn't being handled well. Try to make test more resilient to ordering differences. llvm-svn: 352446
* [WebAssembly] Handle more types of uses in WebAssemblyAddMissingPrototypesSam Clegg2019-01-292-41/+35
| | | | | | | | | | | | | | Previously we were only handling bitcast operations, however prototypeless functions can also appear in other places such as comparisons and as function params. Switch to using replaceAllUsesWith() to replace the prototype-less function uses. This new approach results in some redundant bitcasting but is much simpler and handles all cases. Differential Revision: https://reviews.llvm.org/D56938 llvm-svn: 352445
* [PPC] Include tablegenerated PPCGenCallingConv.inc onceReid Kleckner2019-01-297-147/+137
| | | | | | | | | Move the CC analysis implementation to its own .cpp file instead of duplicating it and artificually using functions in PPCISelLowering.cpp and PPCFastISel.cpp. Follow-up to the same change done for X86, ARM, and AArch64. llvm-svn: 352444
* AMDGPU: Add ds append/consume builtinsMatt Arsenault2019-01-283-0/+22
| | | | llvm-svn: 352443
* [WebAssembly] Expand BUILD_PAIR nodesThomas Lively2019-01-282-0/+36
| | | | | | | | | | Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish Differential Revision: https://reviews.llvm.org/D57276 llvm-svn: 352442
* [ThinLTO] Add option to dump per-module summary dot graphTeresa Johnson2019-01-282-17/+59
| | | | | | | | | | | | | | | | | | | | Summary: I found that there currently isn't a way to invoke exportToDot from the command line for a per-module summary index, and therefore no testing of that case. Add an internal option and use it to test dumping of per module summary indexes. In particular, I am looking at fixing the limitation that causes the aliasee GUID in the per-module summary to be 0, and want to be able to test that change. Reviewers: evgeny777 Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D57206 llvm-svn: 352441
* Demanded elements support for vector GEPsPhilip Reames2019-01-282-15/+21
| | | | | | | | GEPs can produce either scalar or vector results. If we're extracting only a subset of the vector lanes, simplifying the operands is helpful in eliminating redundant computation, and (eventually) allowing further optimizations Differential Revision: https://reviews.llvm.org/D57177 llvm-svn: 352440
* [docs] Fix a couple spelling errors.Eli Friedman2019-01-282-2/+2
| | | | llvm-svn: 352439
* [ThinLTO] Refine reachability check to fix compile time increaseTeresa Johnson2019-01-281-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: A recent fix to the ThinLTO whole program dead code elimination (D56117) increased the thin link time on a large MSAN'ed binary by 2x. It's likely that the time increased elsewhere, but was more noticeable here since it was already large and ended up timing out. That change made it so we would repeatedly scan all copies of linkonce symbols for liveness every time they were encountered during the graph traversal. This was needed since we only mark one copy of an aliasee as live when we encounter a live alias. This patch fixes the issue in a more efficient manner by simply proactively visiting the aliasee (thus marking all copies live) when we encounter a live alias. Two notes: One, this requires a hash table lookup (finding the aliasee summary in the index based on aliasee GUID). However, the impact of this seems to be small compared to the original pre-D56117 thin link time. It could be addressed if we keep the aliasee ValueInfo in the alias summary instead of the aliasee GUID, which I am exploring in a separate patch. Second, we only populate the aliasee GUID field when reading summaries from bitcode (whether we are reading individual summaries and merging on the fly to form the compiled index, or reading in a serialized combined index). Thankfully, that's currently the only way we can get to this code as we don't yet support reading summaries from LLVM assembly directly into a tool that performs the thin link (they must be converted to bitcode first). I added a FIXME, however I have the fix under test already. The easiest fix is to simply populate this field always, which isn't hard, but more likely the change I am exploring to store the ValueInfo instead as described above will subsume this. I don't want to hold up the regression fix for this though. Reviewers: trentxintong Subscribers: mehdi_amini, inglorion, dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D57203 llvm-svn: 352438
* [CGP] auto-generate complete checks for add overflow tests; NFCSanjay Patel2019-01-281-24/+50
| | | | llvm-svn: 352437
* [ASTImporter] Fix handling of overriden methods during ASTImportShafik Yaghmour2019-01-284-21/+241
| | | | | | | | | Summary: When importing classes we may add a CXXMethodDecl more than once to a CXXRecordDecl when handling overrides. This patch will fix the cases we currently know about and handle the case where we are only dealing with declarations. Differential Revision: https://reviews.llvm.org/D56936 llvm-svn: 352436
* Attempt to fix build failure with GCC 5.4.Rui Ueyama2019-01-281-2/+2
| | | | llvm-svn: 352435
* Revert "Make Type::GetByteSize optional (NFC)"Adrian Prantl2019-01-286-82/+62
| | | | | | This reverts commit r352394 because it broke three windows-specific tests. llvm-svn: 352434
* Recommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting ↵Craig Topper2019-01-283-8/+20
| | | | | | | | | | | | | | | | masked loads in the type legalizer" This did not cause the buildbot failure it was previously reverted for. Original commit message: I'm not sure why we were using SEXTLOAD. EXTLOAD seems more appropriate since we don't care about the upper bits. This patch changes this and then modifies the X86 post legalization combine to emit a extending shuffle instead of a sign_extend_vector_inreg. Could maybe use an any_extend_vector_inre On AVX512 targets I think we might be able to use a masked vpmovzx and not have to expand this at all. llvm-svn: 352433
* [RuntimeDyld] load all sections with ProcessAllSectionsYonghong Song2019-01-281-0/+19
| | | | | | | | | | | | | | | | | | | | | | | This patch tried to address the following use case. . bcc (https://github.com/iovisor/bcc) utilizes llvm JIT to compile for BTF target. . with -g, .BTF and .BTF.ext sections (BPF debug info) will be generated by LLVM. . .BTF does not have relocations and .BTF.ext has some relocations. . With ProcessAllSections, .BTF.ext is loaded by JIT dynamic linker and is available to application. But .BTF is not loaded. The bcc application needs both .BTF.ext and .BTF for debugging purpose, and .BTF is not loaded. This patch addressed this issue by iterating over all sections and loading any missing sections, after symbol/relocation processing in loadObjectImpl(). Signed-off-by: Yonghong Song <yhs@fb.com> Differential Revision: https://reviews.llvm.org/D55943 llvm-svn: 352432
* [ARM] Deduplicate table generated CC analysis codeReid Kleckner2019-01-286-275/+324
| | | | | | | Create ARMCallingConv.cpp and emit code for calling convention analysis from there. llvm-svn: 352431
* [AArch64] Include AArch64GenCallingConv.inc onceReid Kleckner2019-01-286-129/+171
| | | | | | | | | | | | | | | | | | | | Summary: Avoids duplicating generated static helpers for calling convention analysis. This also means you can modify AArch64CallingConv.td without recompiling the AArch64ISelLowering.cpp monolith, so it provides faster incremental rebuilds. Saves 12K in llc.exe, but adds a new object file, which is large. Reviewers: efriedma, t.p.northover Subscribers: mgorny, javed.absar, kristof.beyls, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D56948 llvm-svn: 352430
* [GlobalISel][AArch64] Add legalization for G_FLOGJessica Paquette2019-01-287-3/+267
| | | | | | | | | | This adds support for legalizing G_FLOG into a RTLib call. It adds a legalizer test, and updates the existing floating point tests. https://reviews.llvm.org/D57347 llvm-svn: 352429
* lld/coff: Make assoc comdat diag a bit more detailedNico Weber2019-01-283-6/+7
| | | | | | | | | Many different sections can have the same name, so include the indices of the sections mentioned in the diagnostic too. I'm debugging something I can't repro locally, maybe this will help. llvm-svn: 352428
* Revert "[libunwind] Drop the dependency on <algorithm>, add placement new ↵Petr Hosek2019-01-284-11/+27
| | | | | | | | | inline" This reverts commit r352384: this broke on ARM as UnwindCursor.hpp still has some C++ library dependencies. llvm-svn: 352427
* [libc++] Use runtime rather then compile-time glibc version checkPetr Hosek2019-01-281-10/+24
| | | | | | | | | | | | | | | glibc supports versioning, so it's possible to build against older version and run against newer version. This is sometimes relied on in practice, e.g. in Fuchsia build we build against older sysroot (equivalent to Ubuntu Trusty) to cover the broadest possible range of host systems, but that doesn't necessarily match the system that binary is going to run on which may have newer version, in which case the compile test used in curr_symbol is going to fail. Using runtime check is more reliable. Differential Revision: https://reviews.llvm.org/D56702 llvm-svn: 352425
* [InstCombine] add another saturating uadd test (no undefs); NFCSanjay Patel2019-01-281-2/+15
| | | | | | I forgot that our undef matching hasn't been completed in the previous commit. llvm-svn: 352424
* [InstCombine] add tests for saturating uadd with constant; NFCSanjay Patel2019-01-281-0/+55
| | | | llvm-svn: 352423
* AMDGPU: Add DS append/consume intrinsicsMatt Arsenault2019-01-287-17/+355
| | | | | | | | | | | | | | | Since these pass the pointer in m0 unlike other DS instructions, these need to worry about whether the address is uniform or not. This assumes the address is dynamically uniform, and just uses readfirstlane to get a copy into an SGPR. I don't know if these have the same 16-bit add for the addressing mode offset problem on SI or not, but I've just assumed they do. Also includes some misc. changes to avoid test differences between the LDS and GDS versions. llvm-svn: 352422
OpenPOWER on IntegriCloud