OSDN Git Service
Simon Pilgrim [Sat, 6 Apr 2019 18:54:17 +0000 (18:54 +0000)]
[X86] combineBitcastvxi1 - provide dst VT and src SDValue directly. NFCI.
Prep work to make it easier to reuse the BITCAST->MOVSMK combine in other cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357847
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:50 +0000 (18:00 +0000)]
[X86] Use a signed mask in foldMaskedShiftToScaledMask to enable a shorter immediate encoding.
This function reorders AND and SHL to enable the SHL to fold into an LEA. The
upper bits of the AND will be shifted out by the SHL so it doesn't matter what
mask value we use for these bits. By using sign bits from the original mask in
these upper bits we might enable a shorter immediate encoding to be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357846
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:45 +0000 (18:00 +0000)]
[X86] Add test cases to show missed opportunities to use a sign extended 8 or 32 bit immediate AND when reversing SHL+AND to form an LEA.
When we shift the AND mask over we should shift in sign bits instead of zero bits. The scale in the LEA will shift these bits out so it doesn't matter whether we mask the bits off or not. Using sign bits will potentially allow a sign extended immediate to be used.
Also add some other test cases for cases that are currently optimal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357845
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:41 +0000 (18:00 +0000)]
[X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357844
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 15:38:34 +0000 (15:38 +0000)]
Fix spelling mistake. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357843
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:40:52 +0000 (14:40 +0000)]
[X86] Add AVX-target expandload and compressstore tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357842
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Sat, 6 Apr 2019 14:16:26 +0000 (14:16 +0000)]
[llvm-exegesis][X86] Handle CMOVcc/SETcc OPERAND_COND_CODE OperandType
Summary:
D60041 / D60138 refactoring changed how CMOV/SETcc opcodes
are handled. concode is now an immediate, with it's own operand type.
This at least allows to not crash on the opcode.
However, this still won't generate all the snippets
with all the condcode enumerators. D60066 does that.
Reviewers: courbet, gchatelet
Reviewed By: gchatelet
Subscribers: tschuett, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60057
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357841
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:14:54 +0000 (14:14 +0000)]
[X86] Split expandload and compressstore tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357840
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:01:37 +0000 (14:01 +0000)]
[X86][SSE] Add more exhaustive masked load/store tests
Reordered/renamed some existing tests to match the cleaned up order
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357839
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 12:08:37 +0000 (12:08 +0000)]
[CostModel][X86] Add more exhaustive masked load/store/gather/scatter/expand/compress cost tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357838
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Sat, 6 Apr 2019 09:20:48 +0000 (09:20 +0000)]
[AMDGPU] Sort out and rename multiple CI/VI predicates
Differential Revision: https://reviews.llvm.org/D60346
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357835
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 6 Apr 2019 09:12:53 +0000 (09:12 +0000)]
[DWARF] Simplify DWARFDebugAranges::findAddress
The current lower_bound approach has to check two iterators pos and pos-1.
Changing it to upper_bound allows us to check one iterator (similar to
DWARFUnitVector::getUnitFor*).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357834
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 6 Apr 2019 02:18:56 +0000 (02:18 +0000)]
[Symbolize] Uniquify sorted vector<pair<SymbolDesc, StringRef>>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357833
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 23:57:10 +0000 (23:57 +0000)]
gn build: Pacify `gn format`
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357830
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 22:09:30 +0000 (22:09 +0000)]
[PDB Docs] Add documentation for the hash table format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357826
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 22:09:14 +0000 (22:09 +0000)]
[PDB Docs] The IPI Stream actually has index 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357825
91177308-0d34-0410-b5e6-
96231b3b80d8
Robert Widmann [Fri, 5 Apr 2019 21:36:50 +0000 (21:36 +0000)]
[LLVM-C] Begin to Expose A More General Binary Interface
Summary:
Provides a new type, `LLVMBinaryRef`, and a binding to `llvm::object::createBinary` for more general interoperation with binary files than `LLVMObjectFileRef`. It also provides the proper non-consuming API for input buffers and populates an out parameter for error handling if necessary - two things the previous API did not do.
In a follow-up, I'll define section and symbol iterators and begin to build upon the existing test infrastructure.
This patch is a first step towards deprecating that API and replacing it with something more robust.
Reviewers: deadalnix, whitequark
Reviewed By: whitequark
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60322
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357822
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 21:30:40 +0000 (21:30 +0000)]
[gn] Support for building compiler-rt builtins
This is support for building compiler-rt builtins, The library build
should be complete for a subset of supported platforms, but not all
CMake options have been replicated in GN.
We always use the just built compiler to build all the runtimes, which
is equivalent to the CMake runtimes build. This simplifies the build
configuration because we don't need to support arbitrary host compiler
and can always assume the latest Clang. With GN's toolchain support,
this is significantly more efficient than the CMake runtimes build.
Differential Revision: https://reviews.llvm.org/D60331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357821
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 5 Apr 2019 21:22:17 +0000 (21:22 +0000)]
[globalisel] Allow combiners to query legality
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357820
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 21:16:00 +0000 (21:16 +0000)]
[PDB Docs] Delete * LINKER * Stream information.
This is actually just a module debug info stream, so it should
technically be covered by a discussion of the module list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357819
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 20:54:35 +0000 (20:54 +0000)]
[InstCombine] add more tests for fmul+fdiv+sqrt; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357816
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 5 Apr 2019 20:47:13 +0000 (20:47 +0000)]
[globalisel] Support 3-type legalForCartesianProduct()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357815
91177308-0d34-0410-b5e6-
96231b3b80d8
Robert Widmann [Fri, 5 Apr 2019 20:32:43 +0000 (20:32 +0000)]
[LLVM-C] Add bindings to insert basic blocks
Summary:
Now that we can create standalone basic blocks, it's useful to be able to append them. Add bindings to
- Insert a basic block after the current insertion block
- Append a basic block to the end of a function's list of basic blocks
Reviewers: whitequark, deadalnix, harlanhaskins
Reviewed By: whitequark, harlanhaskins
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357812
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Fri, 5 Apr 2019 20:18:25 +0000 (20:18 +0000)]
[X86] Enable tail calls for CallingConv::Swift
It's currently only enabled on AArch64 (enabled in r281376).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357809
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Fri, 5 Apr 2019 20:18:21 +0000 (20:18 +0000)]
[X86] Preserve operand flag when expanding TCRETURNri
The expansion of TCRETURNri(64) would not keep operand flags like
undef/renamable/etc. which can result in machine verifier issues.
Also add plumbing to be able to use `-run-pass=x86-pseudo`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357808
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 5 Apr 2019 20:11:32 +0000 (20:11 +0000)]
[AMDGPU] Add MachineDCE pass after RenameIndependentSubregs
Detect dead lanes can create some dead defs. Then RenameIndependentSubregs
will break a REG_SEQUENCE which may use these dead defs. At this point
a dead instruction can be removed but we do not run a DCE anymore.
MachineDCE was only running before live variable analysis. The patch
adds a mean to preserve LiveIntervals and SlotIndexes in case it works
past this.
Differential Revision: https://reviews.llvm.org/D59626
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357805
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:28:09 +0000 (19:28 +0000)]
[X86] Merge the different Jcc instructions for each condition code into single instructions that store the condition code as an operand.
Summary:
This avoids needing an isel pattern for each condition code. And it removes translation switches for converting between Jcc instructions and condition codes.
Now the printer, encoder and disassembler take care of converting the immediate. We use InstAliases to handle the assembly matching. But we print using the asm string in the instruction definition. The instruction itself is marked IsCodeGenOnly=1 to hide it from the assembly parser.
Reviewers: spatel, lebedev.ri, courbet, gchatelet, RKSimon
Reviewed By: RKSimon
Subscribers: MatzeB, qcolombet, eraman, hiraditya, arphaman, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60228
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357802
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:27:49 +0000 (19:27 +0000)]
[X86] Merge the different SETcc instructions for each condition code into single instructions that store the condition code as an operand.
Summary:
This avoids needing an isel pattern for each condition code. And it removes translation switches for converting between SETcc instructions and condition codes.
Now the printer, encoder and disassembler take care of converting the immediate. We use InstAliases to handle the assembly matching. But we print using the asm string in the instruction definition. The instruction itself is marked IsCodeGenOnly=1 to hide it from the assembly parser.
Reviewers: andreadb, courbet, RKSimon, spatel, lebedev.ri
Reviewed By: andreadb
Subscribers: hiraditya, lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60138
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357801
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:27:41 +0000 (19:27 +0000)]
[X86] Merge the different CMOV instructions for each condition code into single instructions that store the condition code as an immediate.
Summary:
Reorder the condition code enum to match their encodings. Move it to MC layer so it can be used by the scheduler models.
This avoids needing an isel pattern for each condition code. And it removes
translation switches for converting between CMOV instructions and condition
codes.
Now the printer, encoder and disassembler take care of converting the immediate.
We use InstAliases to handle the assembly matching. But we print using the
asm string in the instruction definition. The instruction itself is marked
IsCodeGenOnly=1 to hide it from the assembly parser.
This does complicate the scheduler models a little since we can't assign the
A and BE instructions to a separate class now.
I plan to make similar changes for SETcc and Jcc.
Reviewers: RKSimon, spatel, lebedev.ri, andreadb, courbet
Reviewed By: RKSimon
Subscribers: gchatelet, hiraditya, kristina, lebedev.ri, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60041
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357800
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 19:13:54 +0000 (19:13 +0000)]
[gn] Rebase paths in symlink_or_copy against root_build_dir
We should be always rebasing paths against root_build_dir which is
the directory where scripts are run from, not root_out_dir which is
the current toolchain directory. The latter can result in invalid
paths when the action is being used from a non-default toolchain.
Differential Revision: https://reviews.llvm.org/D60330
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357798
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 19:12:37 +0000 (19:12 +0000)]
[gn] Make -no-exceptions flag a config
This allows it to be disabled for targets that need exceptions
like libunwind, libc++abi and libc++.
Differential Revision: https://reviews.llvm.org/D60328
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357797
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Fri, 5 Apr 2019 18:51:08 +0000 (18:51 +0000)]
[LCG] Add aliased functions as LCG roots
Current LCG doesn't check aliased functions. So if an internal function has a public alias it will not be added to CG SCC, but it is still reachable from outside through the alias.
So this patch adds aliased functions to SCC.
Differential Revision: https://reviews.llvm.org/D59898
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357795
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 5 Apr 2019 18:24:34 +0000 (18:24 +0000)]
[AMDGPU] predicate and feature refactoring
We have done some predicate and feature refactoring lately but
did not upstream it. This is to sync.
Differential revision: https://reviews.llvm.org/D60292
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357791
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 18:06:42 +0000 (18:06 +0000)]
Try to fix Sphinx bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357790
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 5 Apr 2019 18:00:49 +0000 (18:00 +0000)]
lit: make rm python 3 friendly (NFC)
Add some alterations for python 3 compatibility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357789
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 17:59:26 +0000 (17:59 +0000)]
[PDB Docs] Finish documentation for PDB Info Stream.
The information about the named stream map and feature codes
was not present. This patch adds it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357788
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 17:12:37 +0000 (17:12 +0000)]
[PDB Docs] Add info about the hash adjustment buffer.
This necessitates adding a document describing the serialized
hash table format. This document is currently empty, although
it will be filled out in followup patches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357784
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 17:05:54 +0000 (17:05 +0000)]
gn build: Merge 357768 and 357770
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357783
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 17:00:57 +0000 (17:00 +0000)]
[InstCombine] add tests for fdiv+fmul; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357782
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 16:57:34 +0000 (16:57 +0000)]
gn build: Merge r357719
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357781
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 16:52:57 +0000 (16:52 +0000)]
[InstCombine] add tests for sqrt+fdiv+fmul; NFC
Examples based on recent llvm-dev thread. These are specific
patterns of more general enhancements that would solve these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357780
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 5 Apr 2019 16:48:00 +0000 (16:48 +0000)]
lit: support long paths on Windows
Use ctypes to call into SHFileOperationW with the extended NT path to allow us
to remove paths which exceed 261 characters on Windows. This functionality is
exercised by swift's test suite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357778
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 16:43:42 +0000 (16:43 +0000)]
Add documentation for PDB TPI/IPI Stream.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357777
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 16:42:21 +0000 (16:42 +0000)]
[InstCombine] add test to show reassociation that creates a denormal constant; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357776
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 16:32:25 +0000 (16:32 +0000)]
Revert "[llvm-readobj] Improve error message for --string-dump"
This reverts commit
681b0798dbbc6b3500c9930977ec8a274b142acb.
Reverted due to causing build failures: llvm-svn: 357772
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357774
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Fri, 5 Apr 2019 16:16:23 +0000 (16:16 +0000)]
Change some dyn_cast to more apropriate isa. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357773
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 16:15:50 +0000 (16:15 +0000)]
[llvm-readobj] Improve error message for --string-dump
Fixes bug 40630: https://bugs.llvm.org/show_bug.cgi?id=40630
This patch changes the error message when the section specified by
--string-dump cannot be found by including the name of the section in
the error message and changing the prefix text to not imply that the
file itself was invalid. As part of this change some uses of
std::error_code have been replaced with the llvm Error class to better
encapsulate the error info (rather than passing File strings around),
and the WithColor class replaces string literal error prefixes.
Differential Revision: https://reviews.llvm.org/D59946
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357772
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 15:59:07 +0000 (15:59 +0000)]
[format] Add correct punctuation to comment
Test commit that adds a grammatically correct full stop to a single
comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357771
91177308-0d34-0410-b5e6-
96231b3b80d8
Guillaume Chatelet [Fri, 5 Apr 2019 15:18:59 +0000 (15:18 +0000)]
Add an option do not dump the generated object on disk
Reviewers: courbet
Subscribers: llvm-commits, bdb
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60317
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357769
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Fri, 5 Apr 2019 15:03:25 +0000 (15:03 +0000)]
[ExpandMemCmp][NFC] Add tests for `memcmp(p, q, n) < 0` case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357767
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Apr 2019 14:56:21 +0000 (14:56 +0000)]
[SelectionDAG] Add fcmp UNDEF handling to SelectionDAG::FoldSetCC
Second half of PR40800, this patch adds DAG undef handling to fcmp instructions to match the behavior in llvm::ConstantFoldCompareInstruction, this permits constant folding of vector comparisons where some elements had been reduced to UNDEF (by SimplifyDemandedVectorElts etc.).
This involves a lot of tweaking to reduced tests as bugpoint loves to reduce fcmp arguments to undef........
Differential Revision: https://reviews.llvm.org/D60006
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357765
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 5 Apr 2019 14:03:07 +0000 (14:03 +0000)]
GlobalISel: Add another overload of buildUnmerge
It's annoying to have to create an array of the result type,
particularly when you don't care about the size of the value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357763
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 5 Apr 2019 14:03:04 +0000 (14:03 +0000)]
AMDGPU/GlobalISel: Fix non-power-of-2 select
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357762
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Fri, 5 Apr 2019 13:59:24 +0000 (13:59 +0000)]
[llvm] Add isa_and_nonnull
Summary:
Add new ``isa_and_nonnull<>`` operator that works just like
the ``isa<>`` operator, except that it allows for a null pointer as an
argument (which it then returns false).
Reviewers: lattner, aaron.ballman, greened
Reviewed By: lattner
Subscribers: hubert.reinterpretcast, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357761
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 13:32:17 +0000 (13:32 +0000)]
[DAGCombiner][x86] scalarize splatted vector FP ops
There are a variety of vector patterns that may be profitably reduced to a
scalar op when scalar ops are performed using a subset (typically, the
first lane) of the vector register file.
For x86, this is true for float/double ops and element 0 because
insert/extract is just a sub-register rename.
Other targets should likely enable the hook in a similar way.
Differential Revision: https://reviews.llvm.org/D60150
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357760
91177308-0d34-0410-b5e6-
96231b3b80d8
Petar Jovanovic [Fri, 5 Apr 2019 12:58:15 +0000 (12:58 +0000)]
[TextAPI] Fix off-by-one error in the bit index extraction loop
The loop in findNextSetBit() runs one pass more than it should.
On 64-bit architectures this does not cause a problem, but 32-bit
architectures mask the shift count to 5 bits which limits the number of
shifts inside a range of 0 to 31. Shifting by 32 has the same effect as
shifting by 0, so if the first bit in the set is 1, the function will return
with Index different from EndIndexVal. Because of that, range-based for
loops iterating thorough architectures will continue until hitting a 0 in
the set, resulting in n additional iterations, where n is equal to the
number of consecutive 1 bits at the start the set.
Ultimately TBDv1.WriteFile and TBDv2.WriteFile will output additional
architectures causing a failure in the unit tests.
Patch by Milos Stojanovic.
Differential Revision: https://reviews.llvm.org/D60198
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357759
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Fri, 5 Apr 2019 12:52:04 +0000 (12:52 +0000)]
[Symbolize] Replace map<SymbolDesc, StringRef> with sorted vector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357758
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Apr 2019 11:34:30 +0000 (11:34 +0000)]
[X86][AVX] Add PR34584 masked store test cases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357757
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Apr 2019 11:22:28 +0000 (11:22 +0000)]
[X86] Add SSE/AVX1/AVX2 masked trunc+store tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357756
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Fri, 5 Apr 2019 08:43:54 +0000 (08:43 +0000)]
Fix r357749 for big-endian architectures
We need to read the strings from the minidump files as little-endian,
regardless of the host byte order.
I definitely remember thinking about this case while writing the patch
(and in fact, I have implemented that for the "write" case), but somehow
I have ended up not implementing the byte swapping when reading the
data. This adds the necessary byte-swapping and should hopefully fix
test failures on big-endian bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357754
91177308-0d34-0410-b5e6-
96231b3b80d8
Roger Ferrer Ibanez [Fri, 5 Apr 2019 08:40:57 +0000 (08:40 +0000)]
[RISCV] Implement adding a displacement to a BlockAddress
Recent change rL357393 uses MachineInstrBuilder::addDisp to add a based on a
BlockAddress but this case was not implemented.
This patch adds the missing case and a test for RISC-V that exercises the new
case.
Differential Revision: https://reviews.llvm.org/D60136
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357752
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Fri, 5 Apr 2019 08:26:58 +0000 (08:26 +0000)]
Fix MSVC build for r357749
MSVC found the bare "make_unique" invocation ambiguous (between std::
and llvm:: versions). Explicitly qualifying the call with llvm:: should
hopefully fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357750
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Fri, 5 Apr 2019 08:06:26 +0000 (08:06 +0000)]
Minidump: Add support for reading/writing strings
Summary:
Strings in minidump files are stored as a 32-bit length field, giving
the length of the string in *bytes*, which is followed by the
appropriate number of UTF16 code units. The string is also supposed to
be null-terminated, and the null-terminator is not a part of the length
field. This patch:
- adds support for reading these strings out of the minidump file (this
implementation does not depend on proper null-termination)
- adds support for writing them to a minidump file
- using the previous two pieces implements proper (de)serialization of
the CSDVersion field of the SystemInfo stream. Previously, this was
only read/written as hex, and no attempt was made to access the
referenced string -- now this string is read and written correctly.
The changes are tested via yaml2obj|obj2yaml round-trip as well as a
unit test which checks the corner cases of the string deserialization
logic.
Reviewers: jhenderson, zturner, clayborg
Subscribers: llvm-commits, aprantl, markmentovai, amccarth, lldb-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59775
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357749
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Sobczak [Fri, 5 Apr 2019 07:44:09 +0000 (07:44 +0000)]
[SelectionDAG] Compute known bits of CopyFromReg
Summary:
Teach SelectionDAG how to compute known bits of ISD::CopyFromReg if
the virtual reg used has one def only.
This can be particularly useful when calling isBaseWithConstantOffset()
with the ISD::CopyFromReg argument, as more optimizations may get enabled
in the result.
Also add a missing truncation on X86, found by testing of this patch.
Change-Id: Id1c9fceec862d118c54a5b53adf72ada5d6daefa
Reviewers: bogner, craig.topper, RKSimon
Reviewed By: RKSimon
Subscribers: lebedev.ri, nemanjai, jvesely, nhaehnle, javed.absar, jsji, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59535
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357745
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 06:32:50 +0000 (06:32 +0000)]
[X86] Promote i16 SRA instructions to i32
We already promote SRL and SHL to i32.
This will introduce sign extends sometimes which might be harder to deal with than the zero we use for promoting SRL. I ran this through some of our internal benchmark lists and didn't see any major regressions.
I think there might be some DAG combine improvement opportunities in the test changes here.
Differential Revision: https://reviews.llvm.org/D60278
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357743
91177308-0d34-0410-b5e6-
96231b3b80d8
Serguei Katkov [Fri, 5 Apr 2019 05:41:08 +0000 (05:41 +0000)]
[FastISel] Fix crash for gc.relocate lowring
Lowering safepoint checks that all gc.relocaes observed in safepoint
must be lowered. However Fast-Isel is able to skip dead gc.relocate.
To resolve this issue we just ignore dead gc.relocate in the check.
Reviewers: reames
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60184
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357742
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 4 Apr 2019 23:34:38 +0000 (23:34 +0000)]
NFC: Move API uses of MD5::MD5Result to Optional rather than a pointer.
Differential Revision: https://reviews.llvm.org/D60290
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357736
91177308-0d34-0410-b5e6-
96231b3b80d8
David Callahan [Thu, 4 Apr 2019 23:30:47 +0000 (23:30 +0000)]
Include invoke'd functions for recursive extract
Summary: When recursively extracting a function from a bit code file, include functions mentioned in InvokeInst as well as CallInst
Reviewers: loladiro, espindola, volkan
Reviewed By: loladiro
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357735
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 4 Apr 2019 23:09:40 +0000 (23:09 +0000)]
An unreachable block may have a route to a reachable block, don't fast-path return that it can't.
A block reachable from the entry block can't have any route to a block that's not reachable from the entry block (if it did, that route would make it reachable from the entry block). That is the intended performance optimization for isPotentiallyReachable. For the case where we ask whether an unreachable from entry block has a route to a reachable from entry block, we can't conclude one way or the other. Fix a bug where we claimed there could be no such route.
The fix in rL357425 ironically reintroduced the very bug it was fixing but only when a DominatorTree is provided. This fixes the remaining bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357734
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Thu, 4 Apr 2019 22:56:50 +0000 (22:56 +0000)]
[TextAPI] Prefix all architecture enums to fix the build on i386.
Summary: This changes the Architecture enum to use a prefix (AK_) to prevent the
preprocessor from replacing i386 with 1 when building llvm/clang for i386.
Reviewers: steven_wu, lhames, mstorsjo
Reviewed By: mstorsjo
Subscribers: hiraditya, jkorous, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60241
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357733
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Thu, 4 Apr 2019 22:40:06 +0000 (22:40 +0000)]
[IR] Refactor attribute methods in Function class (NFC)
Rename the functions that query the optimization kind attributes.
Differential revision: https://reviews.llvm.org/D60287
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357731
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 4 Apr 2019 21:06:41 +0000 (21:06 +0000)]
Make SourceManager::createFileID(UnownedTag, ...) take a const llvm::MemoryBuffer*
Requires making the llvm::MemoryBuffer* stored by SourceManager const,
which in turn requires making the accessors for that return const
llvm::MemoryBuffer*s and updating all call sites.
The original motivation for this was to use it and fix the TODO in
CodeGenAction.cpp's ConvertBackendLocation() by using the UnownedTag
version of createFileID, and since llvm::SourceMgr* hands out a const
llvm::MemoryBuffer* this is required. I'm not sure if fixing the TODO
this way actually works, but this seems like a good change on its own
anyways.
No intended behavior change.
Differential Revision: https://reviews.llvm.org/D60247
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357724
91177308-0d34-0410-b5e6-
96231b3b80d8
Scott Linder [Thu, 4 Apr 2019 20:35:57 +0000 (20:35 +0000)]
Fix some MCTargetOptions Doxygen comments (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357723
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Thu, 4 Apr 2019 19:05:48 +0000 (19:05 +0000)]
Revert [X86] When using Win64 ABI, exit with error if SSE is disabled for varargs
It unnecessarily breaks previously-working code which used varargs,
but didn't pass any float/double arguments (such as EDK2).
Also revert the fixup on top of that:
Revert [X86] Fix a test from r357317
This reverts r357317 (git commit
d413f41de6baf500e5d20c638375447e18777db2)
This reverts r357380 (git commit
7af32444b9b17719ebabb6bee6eb52465acc8507)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357718
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 4 Apr 2019 18:45:05 +0000 (18:45 +0000)]
Appease STLs where std::atomic<void*> lacks a constexpr default ctor
MSVC 2019 casts the pointer to a pointer-sized integer, which is a
reinterpret_cast, which is invalid in a constexpr context, so I have to
remove the LLVM_REQUIRES_CONSTANT_INITIALIZATION annotation for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357716
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Clegg [Thu, 4 Apr 2019 18:40:51 +0000 (18:40 +0000)]
[WebAssembly] Apply data relocations at runtime in shared objects
See: https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md
Data section relocations in wasm shared libraries are applied by the
library itself at static constructor time. This change adds a new
synthetic function that applies relocations to relevant memory locations
on startup.
Differential Revision: https://reviews.llvm.org/D59278
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357715
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 4 Apr 2019 18:30:07 +0000 (18:30 +0000)]
Ensure that ManagedStatic is constant initialized in MSVC 2017 & 2019
Fixes PR41367.
This effectively relands r357655 with a workaround for MSVC 2017.
I tried various approaches with unions, but I ended up going with this
ifdef approach because it lets us write the proper C++11 code that we
want to write, with a separate workaround that we can delete when we
drop MSVC 2017 support.
This also adds LLVM_REQUIRE_CONSTANT_INITIALIZATION, which wraps
[[clang::require_constant_initialization]]. This actually detected a
minor issue when using clang-cl where clang wasn't able to use the
constexpr constructor in MSVC's STL, so I switched back to using the
default ctor of std::atomic<void*>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357714
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Clegg [Thu, 4 Apr 2019 17:43:50 +0000 (17:43 +0000)]
[WebAssembly] Add new explicit relocation types for PIC relocations
See https://github.com/WebAssembly/tool-conventions/pull/106
Differential Revision: https://reviews.llvm.org/D59907
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357710
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Thu, 4 Apr 2019 17:35:41 +0000 (17:35 +0000)]
[llvm-objcopy] [llvm-symbolizer] Fix failing tests
Summary: Fix failing tests that matched substrings in path.
Reviewers: evgeny777, mattd, espindola, alexshap, rupprecht, jhenderson
Reviewed By: jhenderson
Subscribers: Bulletmagnet, emaste, arichardson, jakehehrlich, MaskRay, rupprecht, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60170
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357709
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 4 Apr 2019 15:48:40 +0000 (15:48 +0000)]
llvm-dwarfdump: Support alternative architecture names in the -arch filter
<rdar://problem/
47918606>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357706
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 4 Apr 2019 14:46:13 +0000 (14:46 +0000)]
[x86] eliminate unnecessary broadcast of horizontal op
This is another pattern that comes up if we more aggressively
scalarize FP ops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357703
91177308-0d34-0410-b5e6-
96231b3b80d8
Michal Gorny [Thu, 4 Apr 2019 14:21:38 +0000 (14:21 +0000)]
[llvm] [cmake] Add additional headers only if they exist
Modify the add_header_files_for_glob() function to only add files
that do exist, rather than all matches of the glob. This fixes CMake
error when one of the include directories (which happen to include
/usr/include) contain broken symlinks.
Differential Revision: https://reviews.llvm.org/D59632
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357701
91177308-0d34-0410-b5e6-
96231b3b80d8
Lewis Revill [Thu, 4 Apr 2019 14:13:37 +0000 (14:13 +0000)]
[RISCV] Support assembling TLS add and associated modifiers
This patch adds support in the MC layer for parsing and assembling the
4-operand add instruction needed for TLS addressing. This also involves
parsing the %tprel_hi, %tprel_lo and %tprel_add operand modifiers.
Differential Revision: https://reviews.llvm.org/D55341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357698
91177308-0d34-0410-b5e6-
96231b3b80d8
Joseph Tremoulet [Thu, 4 Apr 2019 14:13:28 +0000 (14:13 +0000)]
[COFF] Fix delay import directory iterator
Summary:
Take the Index into account in `getDelayImportTable`, otherwise we
always return the entry for the first delay DLL reference.
Reviewers: ruiu
Reviewed By: ruiu
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60081
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357697
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Thu, 4 Apr 2019 12:12:35 +0000 (12:12 +0000)]
[SystemZ] Bugfix in isFusableLoadOpStorePattern()
This function is responsible for checking the legality of fusing an instance
of load -> op -> store into a single operation. In the SystemZ backend the
check was incomplete and a test case emerged with a cycle in the instruction
selection DAG as a result.
Instead of using the NodeIds to determine node relationships,
hasPredecessorHelper() now is used just like in the X86 backend. This handled
the failing tests and as well gave a few additional transformations on
benchmarks.
The SystemZ isFusableLoadOpStorePattern() is now a very near copy of the X86
function, and it seems this could be made a utility function in common code
instead.
Review: Ulrich Weigand
https://reviews.llvm.org/D60255
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357688
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Thu, 4 Apr 2019 11:49:54 +0000 (11:49 +0000)]
[yaml2obj] - Check we correctly set the sh_info field of .symtab section.
initSymtabSectionHeader has the following line:
SHeader.sh_info = findLocalsNum(Symbols) + 1;
As was mentioned in a review comments for D60122,
it is never tested. The patch adds a test.
Differential revision: https://reviews.llvm.org/D60192
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357687
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Apr 2019 11:12:30 +0000 (11:12 +0000)]
Revert rL357655 and rL357656 from llvm/trunk:
Fix minor innaccuracy in previous comment on ManagedStaticBase
........
Make ManagedStatic constexpr constructible
Apparently it needs member initializers so that it can be constructed in
a constexpr context. I explained my investigation of this in PR41367.
........
Causes vs2017 debug llvm-tblgen to fail with "Unknown command line argument" errors - similar to the vs2019 error discussed on PR41367 without the patch....
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357685
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Thu, 4 Apr 2019 11:08:45 +0000 (11:08 +0000)]
[Symbolize] Keep SymbolDescs with the same address and improve getNameFromSymbolTable heuristic
I'll follow up with better heuristics or tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357683
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 4 Apr 2019 10:24:51 +0000 (10:24 +0000)]
[ARM GlobalISel] Support DBG_VALUE
Make sure we can map and select DBG_VALUE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357681
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 4 Apr 2019 09:31:12 +0000 (09:31 +0000)]
[SLP][X86] Regenerate operandorder tests with arguments on same line. NFCI.
Stops update_test_checks.py from splitting the later arguments after the CHECKs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357679
91177308-0d34-0410-b5e6-
96231b3b80d8
Sander de Smalen [Thu, 4 Apr 2019 09:11:17 +0000 (09:11 +0000)]
[AArch64][AsmParser] Fix .arch_extension directive parsing
This patch fixes .arch_extension directive parsing to handle a wider
range of architecture extension options. The existing parser was parsing
extensions as an identifier which breaks for extensions containing a
"-", such as the "tlb-rmi" extension.
The extension is now parsed as a string. This is consistent with the
extension parsing in the .arch and .cpu directive parsing.
Patch by Cullen Rhodes (c-rhodes)
Reviewed By: SjoerdMeijer
Differential Revision: https://reviews.llvm.org/D60118
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357677
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Kudrin [Thu, 4 Apr 2019 08:45:06 +0000 (08:45 +0000)]
[llvm-symbolizer] Allow more flexible usage of -e.
addr2line allows -e to be grouped with other options; it also allows it
to prefix the value. Thus, all the following usages are possible:
* addr2line -f -e <bin> <addr>
* addr2line -fe <bin> <addr>
* addr2line -f e<bin> <addr>
* addr2line -fe<bin> <addr>
This patch adds the same for llvm-symbolizer.
Differential Revision: https://reviews.llvm.org/D60196
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357676
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Kudrin [Thu, 4 Apr 2019 08:39:40 +0000 (08:39 +0000)]
[llvm-symbolizer] Add `--output-style` switch.
In general, llvm-symbolizer follows the output style of GNU's addr2line.
However, there are still some differences; in particular, for a requested
address, llvm-symbolizer prints line and column, while addr2line prints
only the line number.
This patch adds a new switch to select the preferred style.
Differential Revision: https://reviews.llvm.org/D60190
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357675
91177308-0d34-0410-b5e6-
96231b3b80d8
Luqman Aden [Thu, 4 Apr 2019 07:08:30 +0000 (07:08 +0000)]
[InstCombine] Combine no-wrap sub and icmp w/ constant.
Teach InstCombine the transformation `(icmp P (sub nuw|nsw C2, Y), C) -> (icmp swap(P) Y, C2-C)`
Reviewers: majnemer, apilipenko, sanjoy, spatel, lebedev.ri
Reviewed By: lebedev.ri
Subscribers: dmgreen, lebedev.ri, nikic, hiraditya, JDevlieghere, jfb, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59916
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357674
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 4 Apr 2019 05:00:18 +0000 (05:00 +0000)]
[X86] Use INSERT_SUBREG rather than SUBREG_TO_REG when creating LEA64_32 during isel.
SUBREG_TO_REG is supposed to be used to assert that we know the upper bits are
zero. But that isn't the case here. We've done no analysis of the inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357673
91177308-0d34-0410-b5e6-
96231b3b80d8
Serguei Katkov [Thu, 4 Apr 2019 04:19:56 +0000 (04:19 +0000)]
[FastISel] Fix the crash in gc.result lowering
The Fast ISel has a fallback to SelectionDAGISel in case it cannot handle the instruction.
This works as follows:
Using reverse order, try to select instruction using Fast ISel, if it cannot handle instruction it fallbacks to SelectionDAGISel
for these instructions if it is a call and continue fast instruction selections.
However if unhandled instruction is not a call or statepoint related instruction it fallbacks to SelectionDAGISel for all remaining
instructions in basic block.
However gc.result instruction is missed and as a result it is possible that gc.result is processed earlier than statepoint
causing breakage invariant the gc.results should be handled after statepoint.
Test is updated because in the current form fast-isel cannot handle ret instruction (due to i1 ret type without explicit ext)
and as a result test does not check fast-isel at all.
Reviewers: reames
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60182
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357672
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Thu, 4 Apr 2019 02:27:57 +0000 (02:27 +0000)]
Revert r357452 - 'SimplifyCFG SinkCommonCodeFromPredecessors: Also sink function calls without used results (PR41259)'
This revision causes tests to fail under ASAN. Since the cause of the failures
is not clear (could be ASAN, could be a Clang bug, could be a bug in this
revision), the safest course of action seems to be to revert while investigating.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357667
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Thu, 4 Apr 2019 02:08:10 +0000 (02:08 +0000)]
gn build: Merge r357663
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357666
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Clegg [Thu, 4 Apr 2019 01:43:21 +0000 (01:43 +0000)]
[WebAssembly] EmscriptenEHSjLj: Don't abort if __THREW__ is defined
This allows __THREW__ to be defined in the current module, although
it is still required to be a GlobalVariable.
In emscripten we want to be able to compile the source code that
defines this symbols.
Previously we were avoid this by not running this pass when building
that compiler-rt library, but I have change out to build it using the
normal compiler path:
https://github.com/emscripten-core/emscripten/pull/8391
Differential Revision: https://reviews.llvm.org/D60232
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357665
91177308-0d34-0410-b5e6-
96231b3b80d8
Hubert Tong [Thu, 4 Apr 2019 00:53:21 +0000 (00:53 +0000)]
[XCOFF] Add functionality for parsing AIX XCOFF object file headers
Summary:
1. Add functionality for parsing AIX XCOFF object files headers.
2. Only support 32-bit AIX XCOFF object files in this patch.
3. Print out the AIX XCOFF object file header in YAML format.
Reviewers: sfertile, hubert.reinterpretcast, jasonliu, mstorsjo, zturner, rnk
Reviewed By: sfertile, hubert.reinterpretcast
Subscribers: jsji, mgorny, hiraditya, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59419
Patch by Digger Lin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357663
91177308-0d34-0410-b5e6-
96231b3b80d8