Amara Emerson [Thu, 27 Jun 2019 23:33:05 +0000 (23:33 +0000)]
[LangRef] Clarify codegen expectations for intrinsics with fp/integer-only overloads.
This change is a result of discussions on list: "GlobalISel: Ambiguous intrinsic semantics problem"
Differential Revision: https://reviews.llvm.org/D59657
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364610
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 27 Jun 2019 23:24:07 +0000 (23:24 +0000)]
hwasan: Use llvm.read_register intrinsic to read the PC on aarch64 instead of taking the function's address.
This shaves an instruction (and a GOT entry in PIC code) off prologues of
functions with stack variables.
Differential Revision: https://reviews.llvm.org/D63472
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364608
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Thu, 27 Jun 2019 23:00:30 +0000 (23:00 +0000)]
Revert "[JITLink][MachO/x86-64] Add a testcase for X86_64_RELOC_GOT."
Reverts commit r364600 while I investigate bot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364606
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Thu, 27 Jun 2019 21:52:10 +0000 (21:52 +0000)]
[CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case) (try 3)
Summary:
I'm submitting a new revision since i don't understand how to reclaim/reopen/take over the existing one, D50222.
There is no such action in "Add Action" menu...
This implements an optimization described in Hacker's Delight 10-17: when `C` is constant,
the result of `X % C == 0` can be computed more cheaply without actually calculating the remainder.
The motivation is discussed here: https://bugs.llvm.org/show_bug.cgi?id=35479.
This is a recommit, the original commit rL364563 was reverted in rL364568
because test-suite detected miscompile - the new comparison constant 'Q'
was being computed incorrectly (we divided by `D0` instead of `D`).
Original patch D50222 by @hermord (Dmytro Shynkevych)
Notes:
- In principle, it's possible to also handle the `X % C1 == C2` case, as discussed on bugzilla.
This seems to require an extra branch on overflow, so I refrained from implementing this for now.
- An explicit check for when the `REM` can be reduced to just its LHS is included:
the `X % C` == 0 optimization breaks `test1` in `test/CodeGen/X86/jump_sign.ll` otherwise.
I hadn't managed to find a better way to not generate worse output in this case.
- The `test/CodeGen/X86/jump_sign.ll` regresses, and is being fixed by a followup patch D63390.
Reviewers: RKSimon, craig.topper, spatel, hermord, xbolva00
Reviewed By: RKSimon, xbolva00
Subscribers: dexonsmith, kristina, xbolva00, javed.absar, llvm-commits, hermord
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63391
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364600
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Thu, 27 Jun 2019 21:51:54 +0000 (21:51 +0000)]
[NFC][APInt] Add (exhaustive) test for multiplicativeInverse()
Else there is no direct test coverage at all.
The function should either return '0' or precise answer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364599
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Thu, 27 Jun 2019 21:50:29 +0000 (21:50 +0000)]
[JITLink][MachO/x86-64] Add a testcase for X86_64_RELOC_GOT.
This is the data-section counterpart to X86_64_RELOC_GOTPCREL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364598
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron McInally [Thu, 27 Jun 2019 21:23:07 +0000 (21:23 +0000)]
[NFC][GVNSink] Pre-commit unary FNeg test to fpmath.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364597
91177308-0d34-0410-b5e6-
96231b3b80d8
Heejin Ahn [Thu, 27 Jun 2019 21:22:04 +0000 (21:22 +0000)]
[WebAssembly] Enable an atomic.notify MC test
Summary:
Assembly of atomic.notify has been fixed in r364576, so we can enable
it.
Reviewers: aardappel
Subscribers: dschuff, sbc100, jgravelle-google, sunfish, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63898
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364596
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron McInally [Thu, 27 Jun 2019 21:05:02 +0000 (21:05 +0000)]
[GVN] Add support for unary FNeg to GVN pass
Differential Revision: https://reviews.llvm.org/D63896
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364592
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 27 Jun 2019 20:56:04 +0000 (20:56 +0000)]
[compiler-rt] Rename lit.*.cfg.* -> lit.*.cfg.py.*
These lit configuration files are really Python source code. Using the
.py file extension helps editors and tools use the correct language
mode. LLVM and Clang already use this convention for lit configuration,
this change simply applies it to all of compiler-rt.
Reviewers: vitalybuka, dberris
Differential Revision: https://reviews.llvm.org/D63658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364591
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Ganea [Thu, 27 Jun 2019 20:46:11 +0000 (20:46 +0000)]
Convert line endings to LF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364590
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 27 Jun 2019 20:37:12 +0000 (20:37 +0000)]
[x86] remove whitespace; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364588
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron McInally [Thu, 27 Jun 2019 20:33:44 +0000 (20:33 +0000)]
[NFC][GVN] Pre-commit unary FNeg tests to fpmath.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364587
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 27 Jun 2019 20:16:58 +0000 (20:16 +0000)]
[x86] prevent crashing from select narrowing with AVX512
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364585
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Thu, 27 Jun 2019 19:55:22 +0000 (19:55 +0000)]
[GN] Update build file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364583
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Thu, 27 Jun 2019 19:55:21 +0000 (19:55 +0000)]
[GN] Set exit code to 1 if changes are needed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364582
91177308-0d34-0410-b5e6-
96231b3b80d8
Jinsong Ji [Thu, 27 Jun 2019 19:35:11 +0000 (19:35 +0000)]
[PowerPC][NFC] Remove unused (and unsupported) fusion feature bits.
FeatureFusion bits was first introduced in
https://reviews.llvm.org/rL253724. for add/load integer fusion for P8.
The only use of `hasFusion` was https://reviews.llvm.org/rL255319.
However, this was removed later in https://reviews.llvm.org/rL280440.
So, there is NO any reference to fusion in code now.
Leaving it there is misleading and confusing, so remove it for now.
We can alwasy add back if we ever support fusion in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364581
91177308-0d34-0410-b5e6-
96231b3b80d8
Johannes Doerfert [Thu, 27 Jun 2019 19:29:48 +0000 (19:29 +0000)]
Use "willreturn" in isGuaranteedToTransferExecutionToSuccessor
The `willreturn` function attribute guarantees that a function call will
come back to the call site if the call is also known not to throw.
Therefore, this attribute can be used in
`isGuaranteedToTransferExecutionToSuccessor`.
Patch by Hideto Ueno (@uenoku)
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63372
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364580
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 27 Jun 2019 19:22:43 +0000 (19:22 +0000)]
Update -analyze -scalar-evolution output for multiple exit loops w/computable exit values
The previous output was next to useless if *any* exit was not computable. If we have more than one exit, show the exit count for each so that it's easier to see what's going from with SCEV analysis when debugging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364579
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Thu, 27 Jun 2019 19:09:51 +0000 (19:09 +0000)]
[NFC][CodeGen] Add negative test for X u% C == 0 fold (D63391)
The fold (D63391) uses multiplicativeInverse(),
but it is not guaranteed to always succeed,
and '100' appears to be one of the problematic values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364578
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Thu, 27 Jun 2019 19:05:46 +0000 (19:05 +0000)]
Correct the file path. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364577
91177308-0d34-0410-b5e6-
96231b3b80d8
Wouter van Oortmerssen [Thu, 27 Jun 2019 18:58:26 +0000 (18:58 +0000)]
[WebAssembly] AsmParser: better atomic inst detection
Summary:
Previously missed atomic.notify.
Fixes https://bugs.llvm.org/show_bug.cgi?id=40728
Reviewers: aheejin
Subscribers: sbc100, jgravelle-google, sunfish, jfb, llvm-commits, dschuff
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63747
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364576
91177308-0d34-0410-b5e6-
96231b3b80d8
Yuanfang Chen [Thu, 27 Jun 2019 18:39:34 +0000 (18:39 +0000)]
[llvm-objdump] Update the doc for --disassemble-functions.
Update the doc after llvm-svn: 364121 is landed.
With two more trivial fixes that are not related to
--disassemble-functions but still about llvm-objdump.
Reviewers: jhenderson, grimar, MaskRay, rupprecht, peter.smith
Reviewed by: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D63787
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364573
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 18:12:04 +0000 (18:12 +0000)]
Revert "[LiveDebugValues] Emit the debug entry values"
Appears that the 'test/DebugInfo/MIR/X86/dbginfo-entryvals.mir'
does not pass on Windows.
This reverts commit rL364553.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364571
91177308-0d34-0410-b5e6-
96231b3b80d8
Wouter van Oortmerssen [Thu, 27 Jun 2019 18:11:15 +0000 (18:11 +0000)]
[WebAssembly] Fix p2align in assembler.
Summary:
- Match the syntax output by InstPrinter.
- Fix it always emitting 0 for align. Had to work around fact that
opcode is not available for GetDefaultP2Align while parsing.
- Updated tests that were erroneously happy with a p2align=0
Fixes https://bugs.llvm.org/show_bug.cgi?id=40752
Reviewers: aheejin, sbc100
Subscribers: jgravelle-google, sunfish, jfb, llvm-commits, dschuff
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63633
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364570
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 17:30:51 +0000 (17:30 +0000)]
[X86] combineX86ShufflesRecursively - merge shuffles with more than 2 inputs
We already had the infrastructure for this, but were waiting for the fix for a number of regressions which were handled by the recent shuffle(extract_subvector(),extract_subvector()) -> extract_subvector(shuffle()) shuffle combines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364569
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Thu, 27 Jun 2019 17:22:31 +0000 (17:22 +0000)]
Revert "[CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case) (try 2)"
*Appears* to break test-suite on
http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/23790
FAIL: burg.execution_time
FAIL: spiff.execution_time
FAIL: employ.execution_time
FAIL: llu.execution_time
FAIL: gramschmidt.execution_time
FAIL: fdtd-apml.execution_time
This reverts commit r364563.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364568
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Thu, 27 Jun 2019 16:56:44 +0000 (16:56 +0000)]
AMDGPU: Make fixing i1 copies robust against re-ordering
Summary:
The new test case led to incorrect code.
Change-Id: Ief48b227e97aa662dd3535c9bafb27d4a184efca
Reviewers: arsenm, david-salinas
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63871
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364566
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Thu, 27 Jun 2019 16:56:41 +0000 (16:56 +0000)]
[ARM] Move low overhead loop codegen tests into a separate file. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364565
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 16:46:00 +0000 (16:46 +0000)]
Use getConstantOperandAPInt instead of getConstantOperandVal for comparisons.
getConstantOperandAPInt avoids any large integer issues - these are unlikely but the fuzzers do like to mess around.....
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364564
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Thu, 27 Jun 2019 16:45:42 +0000 (16:45 +0000)]
[CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case) (try 2)
Summary:
I'm submitting a new revision since i don't understand how to reclaim/reopen/take over the existing one, D50222.
There is no such action in "Add Action" menu...
Original patch D50222 by @hermord (Dmytro Shynkevych)
This implements an optimization described in Hacker's Delight 10-17: when `C` is constant,
the result of `X % C == 0` can be computed more cheaply without actually calculating the remainder.
The motivation is discussed here: https://bugs.llvm.org/show_bug.cgi?id=35479.
Original patch author: @hermord (Dmytro Shynkevych)!
Notes:
- In principle, it's possible to also handle the `X % C1 == C2` case, as discussed on bugzilla.
This seems to require an extra branch on overflow, so I refrained from implementing this for now.
- An explicit check for when the `REM` can be reduced to just its LHS is included:
the `X % C` == 0 optimization breaks `test1` in `test/CodeGen/X86/jump_sign.ll` otherwise.
I hadn't managed to find a better way to not generate worse output in this case.
- The `test/CodeGen/X86/jump_sign.ll` regresses, and is being fixed by a followup patch D63390.
Reviewers: RKSimon, craig.topper, spatel, hermord, xbolva00
Reviewed By: RKSimon, xbolva00
Subscribers: xbolva00, javed.absar, llvm-commits, hermord
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63391
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364563
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 16:33:44 +0000 (16:33 +0000)]
[X86] getTargetVShiftByConstNode - reduce variable scope. NFCI.
Fixes cppcheck warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364561
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Tebbs [Thu, 27 Jun 2019 16:28:28 +0000 (16:28 +0000)]
[ARM] Fix formatting issue in ARMISelLowering.cpp
Fix a formatting error in ARMISelLowering.cpp::Expand64BitShift. My test
commit after receiving write access.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364560
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Jackson [Thu, 27 Jun 2019 16:27:53 +0000 (16:27 +0000)]
[llvm-nm] Fix for BZ41711 - Class character for a symbol with undefined
binding does not match class assigned by GNU nm
Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=41711
Differential Revision: https://reviews.llvm.org/D63340
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364559
91177308-0d34-0410-b5e6-
96231b3b80d8
Roland Froese [Thu, 27 Jun 2019 16:20:24 +0000 (16:20 +0000)]
Recommit [PowerPC] Update P9 vector costs for insert/extract element
Recommit patch D60160 after regression fix patch D63463.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364557
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Robinson [Thu, 27 Jun 2019 15:53:07 +0000 (15:53 +0000)]
[debug-info] Make a couple of tests more robust.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364556
91177308-0d34-0410-b5e6-
96231b3b80d8
Johannes Doerfert [Thu, 27 Jun 2019 15:51:40 +0000 (15:51 +0000)]
[Attr] Add "willreturn" function attribute
This patch introduces a new function attribute, willreturn, to indicate
that a call of this function will either exhibit undefined behavior or
comes back and continues execution at a point in the existing call stack
that includes the current invocation.
This attribute guarantees that the function does not have any endless
loops, endless recursion, or terminating functions like abort or exit.
Patch by Hideto Ueno (@uenoku)
Reviewers: jdoerfert
Subscribers: mehdi_amini, hiraditya, steven_wu, dexonsmith, lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62801
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364555
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 15:35:48 +0000 (15:35 +0000)]
[LiveDebugValues] Emit the debug entry values
Emit replacements for clobbered parameters location if the parameter
has unmodified value throughout the funciton. This is basic scenario
where we can use the debug entry values.
([12/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D58042
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364553
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 27 Jun 2019 15:18:15 +0000 (15:18 +0000)]
[docs][llvm-nm][llvm-objdump] Improve "See Also" section
The "See Also" section for llvm-nm didn't actually contain any links,
and the tools referred to didn't make much sense (referring to non-LLVM
tools, when we have equivalents, or tools that aren't really to do with
symbol dumping). llvm-objdump's didn't refer to llvm-readelf.
Reviewed by: grimar
Differential Revision: https://reviews.llvm.org/D63875
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364552
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 27 Jun 2019 14:46:51 +0000 (14:46 +0000)]
Bitcode: derive all types used from records instead of Values.
There is existing bitcode that we need to support where the structured nature
of pointer types is used to derive the result type of some operation. For
example a GEP's operation and result will be based on its input Type.
When pointers become opaque, the BitcodeReader will still have access to this
information because it's explicitly told how to construct the more complex
types used, but this information will not be attached to any Value that gets
looked up. This changes BitcodeReader so that in all places which use type
information in this manner, it's derived from a side-table rather than from the
Value in question.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364550
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 14:31:52 +0000 (14:31 +0000)]
[LiveRangeEdit] Fix build failure caused by the rL364536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364549
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 14:25:54 +0000 (14:25 +0000)]
[TargetLowering] SimplifyDemandedVectorElts - add shift/rotate support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364548
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 27 Jun 2019 14:20:10 +0000 (14:20 +0000)]
[InstCombine] remove 'tmp' names and regenerate checks; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364546
91177308-0d34-0410-b5e6-
96231b3b80d8
Jinsong Ji [Thu, 27 Jun 2019 14:11:31 +0000 (14:11 +0000)]
[PowerPC][HTM] Fix disassembling buffer overflow for tabortdc and others
This was reported in https://bugs.llvm.org/show_bug.cgi?id=41751
llvm-mc aborted when disassembling tabortdc.
This patch try to clean up TM related DAGs.
* Fixes the problem by remove explicit output of cr0, and put it as implicit def.
* Update int_ppc_tbegin pattern to accommodate the implicit def of cr0.
* Update the TCHECK operand and int_ppc_tcheck accordingly.
* Add some builtin test and disassembly tests.
* Remove unused CRRC0/crrc0
Differential Revision: https://reviews.llvm.org/D61935
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364544
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 27 Jun 2019 13:55:02 +0000 (13:55 +0000)]
Revert r363658 "[SVE][IR] Scalable Vector IR Type with pr42210 fix"
We saw a 70% ThinLTO link time increase in Chromium for Android, see
crbug.com/978817. Sounds like more of PR42210.
> Recommit of D32530 with a few small changes:
> - Stopped recursively walking through aggregates in
> the verifier, so that we don't impose too much
> overhead on large modules under LTO (see PR42210).
> - Changed tests to match; the errors are slightly
> different since they only report the array or
> struct that actually contains a scalable vector,
> rather than all aggregates which contain one in
> a nested member.
> - Corrected an older comment
>
> Reviewers: thakis, rengolin, sdesmalen
>
> Reviewed By: sdesmalen
>
> Differential Revision: https://reviews.llvm.org/D63321
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364543
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 13:52:34 +0000 (13:52 +0000)]
[DWARF] Handle the DW_OP_entry_value operand
Add the IR and the AsmPrinter parts for handling of the DW_OP_entry_values
DWARF operation.
([11/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D60866
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364542
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 13:48:43 +0000 (13:48 +0000)]
[TargetLowering] SimplifyDemandedBits - use DemandedElts to better identify partial splat shift amounts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364541
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 27 Jun 2019 13:41:30 +0000 (13:41 +0000)]
[mips] Mark pseudo select instructions by the `hasNoSchedulingInfo` tag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364540
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 27 Jun 2019 13:41:23 +0000 (13:41 +0000)]
[mips] Add new items to the list of features unsupported by P5600
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364539
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 27 Jun 2019 13:24:46 +0000 (13:24 +0000)]
[docs][tools] Add missing "program" tags to rst files
Sphinx allows for definitions of command-line options using
`.. option <name>` and references to those options via `:option:<name>`.
However, it looks like there is no scoping of these options by default,
meaning that links can end up pointing to incorrect documents. See for
example the llvm-mca document, which contains references to -o that,
prior to this patch, pointed to a different document. What's worse is
that these links appear to be non-deterministic in which one is picked
(on my machine, some references end up pointing to opt, whereas on the
live docs, they point to llvm-dwarfdump, for example).
The fix is to add the .. program <name> tag. This essentially namespaces
the options (definitions and references) to the named program, ensuring
that the links are kept correct.
Reviwed by: andreadb
Differential Revision: https://reviews.llvm.org/D63873
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364538
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 13:10:29 +0000 (13:10 +0000)]
[Backend] Keep call site info valid through the backend
Handle call instruction replacements and deletions in order to preserve
valid state of the call site info of the MachineFunction.
NOTE: If the call site info is enabled for a new target, the assertion from
the MachineFunction::DeleteMachineInstr() should help to locate places
where the updateCallSiteInfo() should be called in order to preserve valid
state of the call site info.
([10/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D61062
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364536
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Tatham [Thu, 27 Jun 2019 12:41:12 +0000 (12:41 +0000)]
[ARM] Fix bogus assertions in copyPhysReg v8.1-M cases.
The code to generate register move instructions in and out of VPR and
FPSCR_NZCV had assertions checking that the other register involved
was a GPR _pair_, instead of a single GPR as it should have been.
Reviewers: miyuki, ostannard
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63865
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364534
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Tatham [Thu, 27 Jun 2019 12:41:07 +0000 (12:41 +0000)]
[ARM] Fix handling of zero offsets in LOB instructions.
The BF and WLS/WLSTP instructions have various branch-offset fields
occupying different positions and lengths in the instruction encoding,
and all of them were decoded at disassembly time by the function
DecodeBFLabelOffset() which returned SoftFail if the offset was zero.
In fact, it's perfectly fine and not even a SoftFail for most of those
offset fields to be zero. The only one that can't be zero is the 4-bit
field labelled `boff` in the architecture spec, occupying bits {26-23}
of the BF instruction family. If that one is zero, the encoding
overlaps other instructions (WLS, DLS, LETP, VCTP), so it ought to be
a full Fail.
Fixed by adding an extra template parameter to DecodeBFLabelOffset
which controls whether a zero offset is accepted or rejected. Adjusted
existing tests (only in error messages for bad disassemblies); added
extra tests to demonstrate zero offsets being accepted in all the
right places, and a few demonstrating rejection of zero `boff`.
Reviewers: DavidSpickett, ostannard
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63864
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364533
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Tatham [Thu, 27 Jun 2019 12:40:55 +0000 (12:40 +0000)]
[ARM] Make coprocessor number restrictions consistent.
Different versions of the Arm architecture disallow the use of generic
coprocessor instructions like MCR and CDP on different sets of
coprocessors. This commit centralises the check of the coprocessor
number so that it's consistent between assembly and disassembly, and
also updates it for the new restrictions in Arm v8.1-M.
New tests added that check all the coprocessor numbers; old tests
updated, where they used a number that's now become illegal in the
context in question.
Reviewers: DavidSpickett, ostannard
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63863
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364532
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Tatham [Thu, 27 Jun 2019 12:40:40 +0000 (12:40 +0000)]
[ARM] Tighten restrictions on use of SP in v8.1-M CSEL.
In the `CSEL Rd,Rm,Rn` instruction family (also including CSINC, CSINV
and CSNEG), the architecture lists it as CONSTRAINED UNPREDICTABLE
(i.e. SoftFail) to use SP in the Rd or Rm slot, but outright illegal
to use it in the Rn slot, not least because some encodings of that
form are used by MVE instructions such as UQRSHLL.
MC was treating all three slots the same, as SoftFail. So the only
reason UQRSHLL was disassembled correctly at all was because the MVE
decode table is separate from the Thumb2 one and takes priority; if
you turned off MVE, then encodings such as `[0x5f,0xea,0x0d,0x83]`
would disassemble as spurious CSELs.
Fixed by inventing another version of the `GPRwithZR` register class,
which disallows SP completely instead of just SoftFailing it.
Reviewers: DavidSpickett, ostannard
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63862
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364531
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 12:35:52 +0000 (12:35 +0000)]
[X86] getFauxShuffle - add DemandedElts as a filter
This is currently benign but will be used in the future based on the elements referenced by the parent shuffle(s).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364530
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 27 Jun 2019 12:08:17 +0000 (12:08 +0000)]
[mips] Add GPR_64 predicate to some mov[zn] instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364527
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 27 Jun 2019 12:08:10 +0000 (12:08 +0000)]
[mips] Fix indentation and split long lines. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364526
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 27 Jun 2019 12:08:03 +0000 (12:08 +0000)]
[mips] Reformat MSA instruction definitions. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364525
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeremy Morse [Thu, 27 Jun 2019 11:52:03 +0000 (11:52 +0000)]
Add triple to a test I just added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364524
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 27 Jun 2019 11:44:45 +0000 (11:44 +0000)]
IR: compare type attributes deeply when looking into functions.
FunctionComparator attempts to produce a stable comparison of two Function
instances by looking at all available properties. Since ByVal attributes now
contain a Type pointer, they are not trivially ordered and FunctionComparator
should use its own Type comparison logic to sort them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364523
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Thu, 27 Jun 2019 11:31:43 +0000 (11:31 +0000)]
[Object/invalid.test] - Convert most of the sub tests to YAML.
Object/invalid.test is a test case that is used to check the behavior of tools
when broken inputs are used.
The most often tool tested there is llvm-readobj. I think we might want to move
such tests to test\tools\llvm-readobj. For now this patch converts
many sub-tests to use YAML and removes 12 binaries from the inputs.
Differential revision: https://reviews.llvm.org/D63762
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364522
91177308-0d34-0410-b5e6-
96231b3b80d8
Stefan Stipanovic [Thu, 27 Jun 2019 11:27:54 +0000 (11:27 +0000)]
[Attributor] Deducing existing nounwind attribute.
Adding nounwind deduction in new attributor framework.
Reviewers: jdoerfert, uenoku
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D63379
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364521
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 11:22:23 +0000 (11:22 +0000)]
[X86][SSE] Regenerate v48 shuffle test on a variety of targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364520
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 27 Jun 2019 11:16:03 +0000 (11:16 +0000)]
[X86][AVX] SimplifyDemandedVectorElts - combine PERMPD(x) -> EXTRACTF128(X)
If we only use the bottom lane, see if we can simplify this to extract_subvector - which is always at least as quick as PERMPD/PERMQ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364518
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Thu, 27 Jun 2019 11:08:42 +0000 (11:08 +0000)]
[yaml2obj] - Allow overriding e_shentsize, e_shoff, e_shnum and e_shstrndx fields in the YAML.
This allows setting different values for e_shentsize, e_shoff, e_shnum
and e_shstrndx fields and is useful for producing broken inputs for various
test cases.
Differential revision: https://reviews.llvm.org/D63771
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364517
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 10:51:15 +0000 (10:51 +0000)]
[ISEL][X86] Tracking of registers that forward call arguments
While lowering calls, collect info about registers that forward arguments
into following function frame. We store such info into the MachineFunction
of the call. This is used very late when dumping DWARF info about
call site parameters.
([9/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D60715
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364516
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeremy Morse [Thu, 27 Jun 2019 10:20:27 +0000 (10:20 +0000)]
[DebugInfo] Avoid register coalesing unsoundly changing DBG_VALUE locations
Once MIR code leaves SSA form and the liveness of a vreg is considered,
DBG_VALUE insts are able to refer to non-live vregs, because their
debug-uses do not contribute to liveness. This non-liveness becomes
problematic for optimizations like register coalescing, as they can't
``see'' the debug uses in the liveness analyses.
As a result registers get coalesced regardless of debug uses, and that can
lead to invalid variable locations containing unexpected values. In the
added test case, the first vreg operand of ADD32rr is merged with various
copies of the vreg (great for performance), but a DBG_VALUE of the
unmodified operand is blindly updated to the modified operand. This changes
what value the variable will appear to have in a debugger.
Fix this by changing any DBG_VALUE whose operand will be resurrected by
register coalescing to be a $noreg DBG_VALUE, i.e. give the variable no
location. This is an overapproximation as some coalesced locations are
safe (others are not) -- an extra domination analysis would be required to
work out which, and it would be better if we just don't generate non-live
DBG_VALUEs.
This fixes PR40010.
Differential Revision: https://reviews.llvm.org/D56151
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364515
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 09:49:07 +0000 (09:49 +0000)]
[GlobalISel] Remove [un]packRegs from IRTranslator
Remove the last use of packRegs from IRTranslator and delete
pack/unpackRegs. This introduces a fallback to DAGISel for intrinsics
with aggregate arguments, since we don't have a testcase for them so
it's hard to tell how we'd want to handle them.
Discussed in https://reviews.llvm.org/D63551
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364514
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 09:24:30 +0000 (09:24 +0000)]
[AArch64 GlobalISel] Cleanup CallLowering. NFCI
Now that lowerCall and lowerFormalArgs have been refactored, we can
simplify splitToValueTypes.
Differential Revision: https://reviews.llvm.org/D63552
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364513
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 09:18:03 +0000 (09:18 +0000)]
[GlobalISel] Accept multiple vregs for lowerCall's args
Change the interface of CallLowering::lowerCall to accept several
virtual registers for each argument, instead of just one. This is a
follow-up to D46018.
CallLowering::lowerReturn was similarly refactored in D49660 and
lowerFormalArguments in D63549.
With this change, we no longer pack the virtual registers generated for
aggregates into one big lump before delegating to the target. Therefore,
the target can decide itself whether it wants to handle them as separate
pieces or use one big register.
ARM and AArch64 have been updated to use the passed in virtual registers
directly, which means we no longer need to generate so many
merge/extract instructions.
NFCI for AMDGPU, Mips and X86.
Differential Revision: https://reviews.llvm.org/D63551
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364512
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 09:15:53 +0000 (09:15 +0000)]
[GlobalISel] Accept multiple vregs for lowerCall's result
Change the interface of CallLowering::lowerCall to accept several
virtual registers for the call result, instead of just one. This is a
follow-up to D46018.
CallLowering::lowerReturn was similarly refactored in D49660 and
lowerFormalArguments in D63549.
With this change, we no longer pack the virtual registers generated for
aggregates into one big lump before delegating to the target. Therefore,
the target can decide itself whether it wants to handle them as separate
pieces or use one big register.
ARM and AArch64 have been updated to use the passed in virtual registers
directly, which means we no longer need to generate so many
merge/extract instructions.
NFCI for AMDGPU, Mips and X86.
Differential Revision: https://reviews.llvm.org/D63550
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364511
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 08:54:17 +0000 (08:54 +0000)]
[GlobalISel] Accept multiple vregs in lowerFormalArgs
Change the interface of CallLowering::lowerFormalArguments to accept
several virtual registers for each formal argument, instead of just one.
This is a follow-up to D46018.
CallLowering::lowerReturn was similarly refactored in D49660. lowerCall
will be refactored in the same way in follow-up patches.
With this change, we forward the virtual registers generated for
aggregates to CallLowering. Therefore, the target can decide itself
whether it wants to handle them as separate pieces or use one big
register. We also copy the pack/unpackRegs helpers to CallLowering to
facilitate this.
ARM and AArch64 have been updated to use the passed in virtual registers
directly, which means we no longer need to generate so many
merge/extract instructions.
AArch64 seems to have had a bug when lowering e.g. [1 x i8*], which was
put into a s64 instead of a p0. Added a test-case which illustrates the
problem more clearly (it crashes without this patch) and fixed the
existing test-case to expect p0.
AMDGPU has been updated to unpack into the virtual registers for
kernels. I think the other code paths fall back for aggregates, so this
should be NFC.
Mips doesn't support aggregates yet, so it's also NFC.
x86 seems to have code for dealing with aggregates, but I couldn't find
the tests for it, so I just added a fallback to DAGISel if we get more
than one virtual register for an argument.
Differential Revision: https://reviews.llvm.org/D63549
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364510
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 27 Jun 2019 08:50:53 +0000 (08:50 +0000)]
[GlobalISel] Allow multiple VRegs in ArgInfo. NFC
Allow CallLowering::ArgInfo to contain more than one virtual register.
This is useful when passes split aggregates into several virtual
registers, but need to also provide information about the original type
to the call lowering. Used in follow-up patches.
Differential Revision: https://reviews.llvm.org/D63548
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364509
91177308-0d34-0410-b5e6-
96231b3b80d8
Jay Foad [Thu, 27 Jun 2019 08:19:28 +0000 (08:19 +0000)]
[AMDGPU] Fix +DumpCode to print an entry label for the first function
Summary:
The +DumpCode attribute is a horrible hack in AMDGPU to embed the
disassembly of the generated code into the elf file. It is used by LLPC
to implement an extension that allows the application to read back the
disassembly of the code.
It tries to print an entry label at the start of every function, but
that didn't work for the first function in the module because
DumpCodeInstEmitter wasn't initialised until EmitFunctionBodyStart
which is too late.
Change-Id: I790d73ddf4f51fd02ab32529380c7cb7c607c4ee
Reviewers: arsenm, tpr, kzhuravl
Reviewed By: arsenm
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63712
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364508
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikael Holmen [Thu, 27 Jun 2019 08:16:18 +0000 (08:16 +0000)]
Silence gcc warning after r364458
Without the fix gcc 7.4.0 complains with
../lib/Target/X86/X86ISelLowering.cpp: In function 'bool getFauxShuffleMask(llvm::SDValue, llvm::SmallVectorImpl<int>&, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SelectionDAG&)':
../lib/Target/X86/X86ISelLowering.cpp:6690:36: error: enumeral and non-enumeral type in conditional expression [-Werror=extra]
int Idx = (ZeroMask[j] ? SM_SentinelZero : (i + j + Ofs));
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364507
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 07:48:06 +0000 (07:48 +0000)]
[MachineFunction] Base support for call site info tracking
Add an attribute into the MachineFunction that tracks call site info.
([8/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D61061
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364506
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 27 Jun 2019 07:32:19 +0000 (07:32 +0000)]
Fix -Wunused-variable warnings after r364464
/work/llvm.monorepo/llvm/lib/Bitcode/Reader/BitcodeReader.cpp: In function
‘llvm::Expected<std::basic_string<char> > readIdentificationBlock(llvm::BitstreamCursor&)’:
/work/llvm.monorepo/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:205:22:
warning: unused variable ‘BitCode’ [-Wunused-variable]
switch (unsigned BitCode = MaybeBitCode.get()) {
^
/work/llvm.monorepo/llvm/lib/Bitcode/Reader/BitcodeReader.cpp: In member function
‘llvm::Error {anonymous}::ModuleSummaryIndexBitcodeReader::parseModule()’:
/work/llvm.monorepo/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:5367:26:
warning: unused variable ‘BitCode’ [-Wunused-variable]
switch (unsigned BitCode = MaybeBitCode.get()) {
^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364505
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 27 Jun 2019 07:32:10 +0000 (07:32 +0000)]
Fix GCC 4 build after r364464
It was failing with:
In file included from /b/s/w/ir/cache/builder/src/third_party/llvm/llvm/lib/Bitcode/Reader/BitstreamReader.cpp:9:0:
/b/s/w/ir/cache/builder/src/third_party/llvm/llvm/include/llvm/Bitcode/BitstreamReader.h:
In member function 'llvm::Expected<long unsigned int> llvm::SimpleBitstreamCursor::ReadVBR64(unsigned int)':
/b/s/w/ir/cache/builder/src/third_party/llvm/llvm/include/llvm/Bitcode/BitstreamReader.h:262:14:
error: could not convert 'MaybeRead' from 'llvm::Expected<unsigned int>' to 'llvm::Expected<long unsigned int>'
return MaybeRead;
^
/b/s/w/ir/cache/builder/src/third_party/llvm/llvm/include/llvm/Bitcode/BitstreamReader.h:279:16:
error: could not convert 'MaybeRead' from 'llvm::Expected<unsigned int>' to 'llvm::Expected<long unsigned int>'
return MaybeRead;
^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364504
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 27 Jun 2019 06:08:57 +0000 (06:08 +0000)]
gn build: Follow-up to r364491 "[GN] Update build files"
- Merge r364427 (GSYM lib) more: It was missing the new unit test
(as pointed out by llvm/utils/gn/build/sync_source_lists_from_cmake.py),
and it had some superfluous deps not present in the cmake build.
- Merge r364474 (clang DependencyScanning lib) more: The deps didn't
quite match cmake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364501
91177308-0d34-0410-b5e6-
96231b3b80d8
Djordje Todorovic [Thu, 27 Jun 2019 06:07:41 +0000 (06:07 +0000)]
[IR] Add DISuprogram and DIE for a func decl
A unique DISubprogram may be attached to a function declaration used for
call site debug info.
([6/13] Introduce the debug entry values.)
Co-authored-by: Ananth Sowda <asowda@cisco.com>
Co-authored-by: Nikola Prica <nikola.prica@rt-rk.com>
Co-authored-by: Ivan Baev <ibaev@cisco.com>
Differential Revision: https://reviews.llvm.org/D60713
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364500
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 27 Jun 2019 05:52:00 +0000 (05:52 +0000)]
[X86] Remove (vzext_movl (scalar_to_vector (load))) matching code from selectScalarSSELoad.
I think this will be turning into vzext_load during DAG combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364499
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 27 Jun 2019 05:51:56 +0000 (05:51 +0000)]
[X86] Teach selectScalarSSELoad to not narrow volatile loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364498
91177308-0d34-0410-b5e6-
96231b3b80d8
Huihui Zhang [Thu, 27 Jun 2019 05:46:06 +0000 (05:46 +0000)]
[InstCombine][NFCI] Fix test comments.
For fold
(X & (signbit l>> Y)) ==/!= 0 -> (X << Y) >=/< 0
(X & (signbit << Y)) ==/!= 0 -> (X l>> Y) >=/< 0
Test cases of X being constant are positive tests not negative.
Prep work for D62818.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364497
91177308-0d34-0410-b5e6-
96231b3b80d8
Kang Zhang [Thu, 27 Jun 2019 03:39:09 +0000 (03:39 +0000)]
[NFC][PowerPC] Improve the for loop in Early Return
Summary:
In `PPCEarlyReturn.cpp`
```
183 for (MachineFunction::iterator I = MF.begin(); I != MF.end();) {
184 MachineBasicBlock &B = *I++;
185 if (processBlock(B))
186 Changed = true;
187 }
```
Above code can be improved to:
```
184 for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E;) {
185 MachineBasicBlock &B = *I++;
186 Changed |= processBlock(B);
187 }
```
Reviewed By: hfinkel
Differential Revision: https://reviews.llvm.org/D63800
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364496
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Thu, 27 Jun 2019 01:35:47 +0000 (01:35 +0000)]
[GN] Fix check-llvm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364493
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Thu, 27 Jun 2019 01:34:19 +0000 (01:34 +0000)]
[GN] Update build files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364491
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 26 Jun 2019 23:46:51 +0000 (23:46 +0000)]
[ARM] Don't reserve R12 on Thumb1 as an emergency spill slot.
The current implementation of ThumbRegisterInfo::saveScavengerRegister
is bad for two reasons: one, it's buggy, and two, it blocks using R12
for other optimizations. So this patch gets rid of it, and adds the
necessary support for using an ordinary emergency spill slot on Thumb1.
(Specifically, I think saveScavengerRegister was broken by r305625, and
nobody noticed for two years because the codepath is almost never used.
The new code will also probably not be used much, but it now has better
tests, and if we fail to emit a necessary emergency spill slot we get a
reasonable error message instead of a miscompile.)
A rough outline of the changes in the patch:
1. Gets rid of ThumbRegisterInfo::saveScavengerRegister.
2. Modifies ARMFrameLowering::determineCalleeSaves to allocate an
emergency spill slot for Thumb1.
3. Implements useFPForScavengingIndex, so the emergency spill slot isn't
placed at a negative offset from FP on Thumb1.
4. Modifies the heuristics for allocating an emergency spill slot to
support Thumb1. This includes fixing ExtraCSSpill so we don't try to
use "lr" as a substitute for allocating an emergency spill slot.
5. Allocates a base pointer in more cases, so the emergency spill slot
is always accessible.
6. Modifies ARMFrameLowering::ResolveFrameIndexReference to compute the
right offset in the new cases where we're forcing a base pointer.
7. Ensures we never generate a load or store with an offset outside of
its frame object. This makes the heuristics more straightforward.
8. Changes Thumb1 prologue and epilogue emission so it never uses
register scavenging.
Some of the changes to the emergency spill slot heuristics in
determineCalleeSaves affect ARM/Thumb2; hopefully, they should allow
the compiler to avoid allocating an emergency spill slot in cases
where it isn't necessary. The rest of the changes should only affect
Thumb1.
Differential Revision: https://reviews.llvm.org/D63677
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364490
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Wed, 26 Jun 2019 23:08:29 +0000 (23:08 +0000)]
Fix Bitcode/invalid.test
On the armv8 bot the failure is slightly different in the number it prints. Don't check the numbers. This was caused by r364464.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364488
91177308-0d34-0410-b5e6-
96231b3b80d8
Pengxuan Zheng [Wed, 26 Jun 2019 22:07:43 +0000 (22:07 +0000)]
[cmake] Allow config.guess to be run with MSYS on Windows
Summary:
With r363420, config.guess can no longer be run with MSYS on Windows and this
patch should be able to fix this particular case.
Reviewers: compnerd
Reviewed By: compnerd
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63834
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364485
91177308-0d34-0410-b5e6-
96231b3b80d8
Gerolf Hoflehner [Wed, 26 Jun 2019 21:44:37 +0000 (21:44 +0000)]
[SCCP] Fix non-deterministic uselists of return values (DenseMap -> MapVector)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364482
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Porpodas [Wed, 26 Jun 2019 21:25:24 +0000 (21:25 +0000)]
[SLP] Look-ahead operand reordering heuristic.
Summary: This patch introduces a new heuristic for guiding operand reordering. The new "look-ahead" heuristic can look beyond the immediate predecessors. This helps break ties when the immediate predecessors have identical opcodes (see lit test for an example).
Reviewers: RKSimon, ABataev, dtemirbulatov, Ayal, hfinkel, rnk
Reviewed By: RKSimon, dtemirbulatov
Subscribers: rnk, rcorcs, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60897
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364478
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 26 Jun 2019 21:19:31 +0000 (21:19 +0000)]
[InstCombine] change 'tmp' variable names; NFC
I don't think there was anything going wrong here,
but the auto-generating CHECK line script is known
to have problems with 'TMP' because it uses that
to match nameless values.
This is a retry of rL364452.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364477
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 26 Jun 2019 20:56:18 +0000 (20:56 +0000)]
AMDGPU: Assert SPAdj is 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364473
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 26 Jun 2019 20:56:15 +0000 (20:56 +0000)]
PEI: Add default handling of spills to registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364472
91177308-0d34-0410-b5e6-
96231b3b80d8
Jinsong Ji [Wed, 26 Jun 2019 20:35:19 +0000 (20:35 +0000)]
[UpdateTestChecks][NFC] Remove entries with same prefix
Matching is 'lossy', triples with same prefix can be dropped.
Differential Revision: https://reviews.llvm.org/D63732
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364471
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 26 Jun 2019 20:35:18 +0000 (20:35 +0000)]
[AMDGPU] Fix Livereg computation during epilogue insertion
The LivePhysRegs calculated in order to find a scratch register in the
epilogue code wrongly uses 'LiveIns'. Instead, it should use the
'Liveout' sets. For the liveness, also considering the operands of
the terminator (return) instruction which is the insertion point for
the scratch-exec-copy instruction.
Patch by Christudasan Devadasan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364470
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 26 Jun 2019 20:16:19 +0000 (20:16 +0000)]
[X86] Rework the logic in LowerBuildVectorv16i8 to make better use of any_extend and break false dependencies. Other improvements
This patch rewrites the loop iteration to only visit every other element starting with element 0. And we work on the "even" element and "next" element at the same time. The "First" logic has been moved to the bottom of the loop and doesn't run on every element. I believe it could create dangling nodes previously since we didn't check if we were going to use SCALAR_TO_VECTOR for the first insertion. I got rid of the "First" variable and just do a null check on V which should be equivalent. We also no longer use undef as the starting V for vectors with no zeroes to avoid false dependencies. This matches v8i16.
I've changed all the extends and OR operations to use MVT::i32 since that's what they'll be promoted to anyway. I've tried to use zero_extend only when necessary and use any_extend otherwise. This resulted in some improvements in tests where we are now able to promote aligned (i32 (extload i8)) to a 32-bit load.
Differential Revision: https://reviews.llvm.org/D63702
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364469
91177308-0d34-0410-b5e6-
96231b3b80d8
Guanzhong Chen [Wed, 26 Jun 2019 20:16:14 +0000 (20:16 +0000)]
[WebAssembly] Implement Address Sanitizer for Emscripten
Summary:
This diff enables address sanitizer on Emscripten.
On Emscripten, real memory starts at the value passed to --global-base.
All memory before this is used as shadow memory, and thus the shadow mapping
function is simply dividing by 8.
Reviewers: tlively, aheejin, sbc100
Reviewed By: sbc100
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D63742
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364468
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Wed, 26 Jun 2019 19:50:12 +0000 (19:50 +0000)]
BitStream reader: propagate errors
The bitstream reader handles errors poorly. This has two effects:
* Bugs in file handling (especially modules) manifest as an "unexpected end of
file" crash
* Users of clang as a library end up aborting because the code unconditionally
calls `report_fatal_error`
The bitstream reader should be more resilient and return Expected / Error as
soon as an error is encountered, not way late like it does now. This patch
starts doing so and adopting the error handling where I think it makes sense.
There's plenty more to do: this patch propagates errors to be minimally useful,
and follow-ups will propagate them further and improve diagnostics.
https://bugs.llvm.org/show_bug.cgi?id=42311
<rdar://problem/
33159405>
Differential Revision: https://reviews.llvm.org/D63518
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364464
91177308-0d34-0410-b5e6-
96231b3b80d8