summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [AArch64][GlobalISel] Support sibling calls with mismatched calling conventionsJessica Paquette2019-09-106-23/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for sibcalling calls whose calling convention differs from the caller's. - Port over `CCState::resultsCombatible` from CallingConvLower.cpp into CallLowering. This is used to verify that the way the caller and callee CC handle incoming arguments matches up. - Add `CallLowering::analyzeCallResult`. This is basically a port of `CCState::AnalyzeCallResult`, but using `ArgInfo` rather than `ISD::InputArg`. - Add `AArch64CallLowering::doCallerAndCalleePassArgsTheSameWay`. This checks that the calling conventions are compatible, and that the caller and callee preserve the same registers. For testing: - Update call-translator-tail-call.ll to show that we can now handle this. - Add a GISel line to tailcall-ccmismatch.ll to show that we will not tail call when the regmasks don't line up. Differential Revision: https://reviews.llvm.org/D67361 llvm-svn: 371570
* Update ReleaseNotes: add enabling of MemorySSA.Alina Sbirlea2019-09-101-0/+1
| | | | llvm-svn: 371569
* Reland "Change the X86 datalayout to add three address spacesAmy Huang2019-09-10522-541/+566
| | | | | | | | | | for 32 bit signed, 32 bit unsigned, and 64 bit pointers." This reverts 57076d3199fc2b0af4a3736b7749dd5462cacda5. Original review at https://reviews.llvm.org/D64931. Review for added fix at https://reviews.llvm.org/D66843. llvm-svn: 371568
* llvm-reduce: Add pass to reduce parametersDavid Blaikie2019-09-106-0/+187
| | | | | | | | Patch by Diego Treviño! Differential Revision: https://reviews.llvm.org/D65479 llvm-svn: 371567
* Adding support for overriding LLVM_ENABLE_RUNTIMES for runtimes builds.Puyan Lotfi2019-09-101-1/+4
| | | | | | | | | | | | On some platforms, certain runtimes are not supported. For runtimes builds of those platforms it would be nice if we could disable certain runtimes (ie libunwind on Windows). Differential Revision: https://reviews.llvm.org/D67195 llvm-svn: 371566
* [MemorySSA] Do not create memoryaccesses for debug info intrinsics.Alina Sbirlea2019-09-102-2/+63
| | | | | | | | | | | | | | | | Summary: Do not model debuginfo intrinsics in MemorySSA. Regularly these are non-memory modifying instructions. With -disable-basicaa, they were being modelled as Defs. Reviewers: george.burgess.iv Subscribers: aprantl, Prazek, sanjoy.google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67307 llvm-svn: 371565
* llvm-reduce: Remove some unused headers/more narrowly include themDavid Blaikie2019-09-104-9/+9
| | | | llvm-svn: 371564
* llvm-remove: Remove "using namespace" in header.David Blaikie2019-09-104-5/+10
| | | | llvm-svn: 371563
* llvm-reduce: Add pass to reduce MetadataDavid Blaikie2019-09-106-2/+197
| | | | | | | | Patch by Diego Treviño! Differential Revision: https://reviews.llvm.org/D65026 llvm-svn: 371562
* Move LLVM_ENABLE_ABI_BREAKING_CHECKS variables to their own fileEric Christopher2019-09-104-15/+26
| | | | | | | | | | | | | so that you don't have to link Error.o and all of its dependencies. In more detail: global initializers in Error.o can't be elided with -ffunction-sections/-gc-sections since they always need to be run causing a fairly significant binary bloat if all you want is the ABI breaking checks code. Differential Revision: https://reviews.llvm.org/D67387 llvm-svn: 371561
* Fix a thinko in handling the QSetLogging packet.Jim Ingham2019-09-101-3/+3
| | | | | | | The comparison against LOG_MEMORY shortcut all the LOG_MEMORY_* log channels. It has to come last. llvm-svn: 371560
* Actually reorder not and env in crash-recovery-modules.mReid Kleckner2019-09-101-2/+2
| | | | llvm-svn: 371559
* [Loads] Move generic code out of vectorizer into a location it might be ↵Philip Reames2019-09-103-51/+63
| | | | | | reused [NFC] llvm-svn: 371558
* When evaluating a __builtin_constant_p conditional, always enterRichard Smith2019-09-102-63/+44
| | | | | | | | | | | constant-folding mode regardless of the original evaluation mode. In order for this to be correct, we need to track whether we're checking for a potential constant expression or checking for undefined behavior separately from the evaluation mode enum, since we don't want to clobber those states when entering constant-folding mode. llvm-svn: 371557
* [ValueTracking] Factor our common speculation suppression logic [NFC]Philip Reames2019-09-103-21/+20
| | | | | | Expose a utility function so that all places which want to suppress speculation (when otherwise legal) due to ordering and/or sanitizer interaction can do so. llvm-svn: 371556
* llvm-reduce: Simplify testing using -implicit-check-notDavid Blaikie2019-09-103-11/+4
| | | | | | | Also fix llvm-reduce to use the specified output file name directly, without appending '.ll' to the name. llvm-svn: 371555
* [mips] Allow PT_LOAD to have overlapping p_offset ranges on EM_MIPSSimon Atanasyan2019-09-102-23/+22
| | | | | | | | Port the D64906 <https://reviews.llvm.org/D64906> technique to MIPS. Fix PR33131 llvm-svn: 371554
* [OPENMP5.0]Allow teams directive outside of the target directives.Alexey Bataev2019-09-104-3/+49
| | | | | | | According to OpenMP 5.0, teams directives are allowed not only in the target context, but also in the implicit parallel regions. llvm-svn: 371553
* Re-land Remove REQUIRES:shell from tests that pass for me on WindowsReid Kleckner2019-09-1025-57/+31
| | | | | | | | | | | | This reverts r371497 (git commit 3d7e9ab7b9f8c53aa41420c54970f0fb421004a2) Reorder `not` with `env` in these two tests so they pass: Driver/rewrite-map-in-diagnostics.c Index/crash-recovery-modules.m. This will not be necessary after D66531 lands. llvm-svn: 371552
* [x86] add test for false dependency with AVX; NFCSanjay Patel2019-09-101-0/+15
| | | | | | Goes with D67363 llvm-svn: 371551
* [NFC][InstCombine] rewrite test added in r371537 to use non-null pointer insteadRoman Lebedev2019-09-101-27/+91
| | | | | | | | I only want to ensure that %offset is non-zero there, it doesn't matter how that info is conveyed. As filed in PR43267, the assumption way does not work. llvm-svn: 371550
* Fix for PR43175: compiler crash when trying to emit noncapturableAlexey Bataev2019-09-102-0/+15
| | | | | | | | | | | | | | constant. If the constexpr variable is partially initialized, the initializer can be emitted as the structure, not as an array, because of some early optimizations. The llvm variable gets the type from this constant and, thus, gets the type which is pointer to struct rather than pointer to an array. We need to convert this type to be truely array, otherwise it may lead to the compiler crash when trying to emit array subscript expression. llvm-svn: 371548
* [X86] Updated target specific selection dag code to conservatively check for ↵Philip Reames2019-09-103-20/+20
| | | | | | | | | | | | | | isAtomic in addition to isVolatile See D66309 for context. This is the first sweep of x86 target specific code to add isAtomic bailouts where appropriate. The intention here is to have the switch from AtomicSDNode to LoadSDNode/StoreSDNode be close to NFC; that is, I'm not looking to allow additional optimizations at this time. Sorry for the lack of tests. As discussed in the review, most of these are vector tests (for which atomicity is not well defined) and I couldn't figure out to exercise the anyextend cases which aren't vector specific. Differential Revision: https://reviews.llvm.org/D66322 llvm-svn: 371547
* [NFC][InstSimplify] rewrite test added in r371537 to use non-null pointer ↵Roman Lebedev2019-09-101-43/+53
| | | | | | | | | | instead I only want to ensure that %offset is non-zero there, it doesn't matter how that info is conveyed. As filed in PR43267, the assumption way does not work. llvm-svn: 371546
* [lldbtest] Add an "expected_cmd_failure" option to the filecheck helperVedant Kumar2019-09-101-1/+5
| | | | llvm-svn: 371544
* [Function] Factor out GetCallEdgeForReturnAddress, NFCVedant Kumar2019-09-103-11/+23
| | | | | | | Finding the call edge in a function which corresponds to a particular return address is a generic/useful operation. llvm-svn: 371543
* GlobalISel/TableGen: Handle REG_SEQUENCE patternsMatt Arsenault2019-09-105-36/+191
| | | | | | | | The scalar f64 patterns don't work yet because they fail on multiple results from the unused implicit def of scc in the result bit operation. llvm-svn: 371542
* [BPI] Adjust the probability for floating point unordered comparisonGuozhi Wei2019-09-103-3/+57
| | | | | | | | Since NaN is very rare in normal programs, so the probability for floating point unordered comparison should be extremely small. Current probability is 3/8, it is too large, this patch changes it to a tiny number. Differential Revision: https://reviews.llvm.org/D65303 llvm-svn: 371541
* AMDGPU/GlobalISel: Select G_FABS/G_FNEGMatt Arsenault2019-09-1010-370/+1037
| | | | | | | | | | | f64 doesn't work yet because tablegen currently doesn't handlde REG_SEQUENCE. This does regress some multi use VALU fneg cases since now the immediate remains in an SGPR, and more moves are used for legalizing the xor. This is a SIFixSGPRCopies deficiency. llvm-svn: 371540
* AMDGPU/GlobalISel: Select cvt pk intrinsicsMatt Arsenault2019-09-107-40/+347
| | | | llvm-svn: 371539
* AMDGPU/GlobalISel: Select llvm.amdgcn.sffbhMatt Arsenault2019-09-103-2/+68
| | | | llvm-svn: 371538
* [NFC][InstCombine][InstSimplify] PR43251 - and some patterns with offset != 0Roman Lebedev2019-09-102-1/+141
| | | | | | https://rise4fun.com/Alive/21b llvm-svn: 371537
* AMDGPU/GlobalISel: RegBankSelect for G_ZEXTLOAD/G_SEXTLOADMatt Arsenault2019-09-104-3/+206
| | | | llvm-svn: 371536
* AMDGPU/GlobalISel: Legalize constant 32-bit loadsMatt Arsenault2019-09-104-0/+87
| | | | | | | Legalize by casting to a 64-bit constant address. This isn't how the DAG implements it, but it should. llvm-svn: 371535
* [RISCV] Support llvm-objdump -M no-aliases and -M numericSam Elliott2019-09-1058-80/+100
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Now that llvm-objdump allows target-specific options, we match the `no-aliases` and `numeric` options for RISC-V, as supported by GNU objdump. This is done by overriding the variables used for the command-line options, so that the command-line options are still supported. This patch updates all tests using `llvm-objdump -riscv-no-aliases` to use `llvm-objdump -M no-aliases`. Reviewers: luismarques, asb Reviewed By: luismarques, asb Subscribers: pzheng, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66139 llvm-svn: 371534
* AMDGPU/GlobalISel: First pass at attempting to legalize load/storesMatt Arsenault2019-09-1013-1141/+55834
| | | | | | | | There's still a lot more to do, but this handles decomposing due to alignment. I've gotten it to the point where nothing crashes or infinite loops the legalizer. llvm-svn: 371533
* Implement DW_OP_convertAdrian Prantl2019-09-107-32/+423
| | | | | | | | | | | | | | | | | | | | | | This patch adds basic support for DW_OP_convert[1] for integer types. Recent versions of LLVM's optimizer may insert this opcode into DWARF expressions. DW_OP_convert is effectively a type cast operation that takes a reference to a base type DIE (or zero) and then casts the value at the top of the DWARF stack to that type. Internally this works by changing the bit size of the APInt that is used as backing storage for LLDB's DWARF stack. I managed to write a unit test for this by implementing a mock YAML object file / module that takes debug info sections in yaml2obj format. [1] Typed DWARF stack. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1 <rdar://problem/48167864> Differential Revision: https://reviews.llvm.org/D67369 llvm-svn: 371532
* [RISCV] Add Option for Printing Architectural Register NamesSam Elliott2019-09-105-2/+510
| | | | | | | | | | | | | | | | | | | | | | Summary: This is an option primarily to use during testing. Instead of always printing registers using their ABI names, this allows a user to request they are printed with their architectural name. This is then used in the register constraint tests to ensure the mapping between architectural and abi names is correct. Reviewers: asb, luismarques Reviewed By: asb Subscribers: pzheng, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65950 llvm-svn: 371531
* Don't emit .gnu_pubnames when tuning for LLDB.Adrian Prantl2019-09-102-2/+1
| | | | | | | | | | | | | | | | LLDB reads the various .apple* accelerator tables (and in the near future: the DWARF 5 accelerator tables) which should make .gnu_pubnames redundant. This changes the Clang driver to no longer pass -ggnu-pubnames when tuning for LLDB. Thanks to David Blaikie for pointing this out! http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190422/thread.html#646062 rdar://problem/50142073 Differential Revision: https://reviews.llvm.org/D67373 llvm-svn: 371530
* [x86] add a test for BreakFalseDeps; NFCSanjay Patel2019-09-101-0/+20
| | | | | | As discussed in D67363 llvm-svn: 371528
* Revert "[utils] Implement the llvm-locstats tool"Djordje Todorovic2019-09-106-315/+0
| | | | | | This reverts commit rL371520. llvm-svn: 371527
* [ARM] add test for BreakFalseDeps with minsize attribute; NFCSanjay Patel2019-09-101-0/+32
| | | | llvm-svn: 371526
* [X86] Add AVX partial dependency tests as noted on D67363Simon Pilgrim2019-09-101-29/+60
| | | | llvm-svn: 371525
* [ARM] auto-generate complete test checks; NFCSanjay Patel2019-09-101-9/+28
| | | | llvm-svn: 371524
* [VectorUtils] Remove unused include. [NFC]Florian Hahn2019-09-101-1/+1
| | | | | | | | | | | | Patch by Francesco Petrogalli <francesco.petrogalli@arm.com> Reviewers: fhahn Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D67365 llvm-svn: 371523
* [clang][codegen][NFC] Make test patterns more permissive.Clement Courbet2019-09-101-2/+1
| | | | | | | See the discussion in: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190909/692736.html llvm-svn: 371522
* [CMake] Don't pass all LLVM_COMPILE_FLAGS to the C compilerDavid Zarzycki2019-09-101-1/+8
| | | | | | | | GCC (unlike clang!) warns about C++ flags when compiling C. https://reviews.llvm.org/D67171 llvm-svn: 371521
* [utils] Implement the llvm-locstats toolDjordje Todorovic2019-09-106-0/+315
| | | | | | | | | | | | | | | | | | | The tool reports verbose output for the DWARF debug location coverage. The llvm-locstats for each variable or formal parameter DIE computes what percentage from the code section bytes, where it is in scope, it has location description. The line 0 shows the number (and the percentage) of DIEs with no location information, but the line 100 shows the number (and the percentage) of DIEs where there is location information in all code section bytes (where the variable or parameter is in the scope). The line 50..59 shows the number (and the percentage) of DIEs where the location information is in between 50 and 59 percentage of its scope covered. The tool will be very useful for tracking improvements regarding the "debugging optimized code" support with LLVM ecosystem. Differential Revision: https://reviews.llvm.org/D66526 llvm-svn: 371520
* [NFC][InstCombine] PR43251 - valid for other predicates tooRoman Lebedev2019-09-101-2/+82
| | | | llvm-svn: 371519
* [InstCombine] Use SimplifyFMulInst to simplify multiply in fma.Florian Hahn2019-09-102-13/+10
| | | | | | | | | | | | | | This allows us to fold fma's that multiply with 0.0. Also, the multiply by 1.0 case is handled there as well. The fneg/fabs cases are not handled by SimplifyFMulInst, so we need to keep them. Reviewers: spatel, anemet, lebedev.ri Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D67351 llvm-svn: 371518
OpenPOWER on IntegriCloud