Nico Weber [Fri, 18 Sep 2020 19:25:53 +0000 (15:25 -0400)]
clangd: Make ompletionModelCodegen.py tpy2.7 compatible
LLVM still supports Python 2.7, so unbreak bots that still run that.
In a separate commit so that this is easy to revert once we drop
support :)
Stella Laurenzo [Fri, 18 Sep 2020 07:21:09 +0000 (00:21 -0700)]
First pass on MLIR python context lifetime management.
* Per thread https://llvm.discourse.group/t/revisiting-ownership-and-lifetime-in-the-python-bindings/1769
* Reworks contexts so it is always possible to get back to a py::object that holds the reference count for an arbitrary MlirContext.
* Retrofits some of the base classes to automatically take a reference to the context, elimintating keep_alives.
* More needs to be done, as discussed, when moving on to the operations/blocks/regions.
Differential Revision: https://reviews.llvm.org/D87886
Peter Collingbourne [Thu, 10 Sep 2020 02:15:26 +0000 (19:15 -0700)]
scudo: Add an API for disabling memory initialization per-thread.
Here "memory initialization" refers to zero- or pattern-init on
non-MTE hardware, or (where possible to avoid) memory tagging on MTE
hardware. With shared TSD the per-thread memory initialization state
is stored in bit 0 of the TLS slot, similar to PointerIntPair in LLVM.
Differential Revision: https://reviews.llvm.org/D87739
Simon Pilgrim [Fri, 18 Sep 2020 18:51:45 +0000 (19:51 +0100)]
[X86][AVX] lowerBuildVectorAsBroadcast - improve BROADCASTM lowering on non-VLX targets
Broadcast to a ZMM type then extract the low subvector.
Arthur Eubanks [Fri, 18 Sep 2020 18:32:58 +0000 (11:32 -0700)]
[test][TSan] Fix tests under NPM
Under NPM, the TSan passes are split into a module and function pass. A
couple tests were testing for inserted module constructors, which is
only part of the module pass.
Huihui Zhang [Fri, 18 Sep 2020 18:26:28 +0000 (11:26 -0700)]
[InstCombine][SVE] Skip scalable type for InstCombiner::getFlippedStrictnessPredicateAndConstant.
We cannot iterate on scalable vector, the number of elements is unknown at compile-time.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D87918
David Blaikie [Fri, 18 Sep 2020 18:22:37 +0000 (11:22 -0700)]
Linewrap & remove some dead typedefs from previous commit
Cleanup for
51a505340dfdfdfd9ab32c7267a74db3cdeefa56
David Blaikie [Fri, 18 Sep 2020 18:17:56 +0000 (11:17 -0700)]
DebugInfo: Simplify line table parsing to take all the units together, rather than CUs and TUs separately
James Y Knight [Thu, 17 Sep 2020 22:10:19 +0000 (18:10 -0400)]
PR47468: Fix findPHICopyInsertPoint, so that copies aren't incorrectly inserted after an INLINEASM_BR.
findPHICopyInsertPoint special cases placement in a block with a
callbr or invoke in it. In that case, we must ensure that the copy is
placed before the INLINEASM_BR or call instruction, if the register is
defined prior to that instruction, because it may jump out of the
block.
Previously, the code placed it immediately after the last def _or
use_. This is wrong, if the use is the instruction which may jump. We
could correctly place it immediately after the last def (ignoring
uses), but that is non-optimal for register pressure.
Instead, place the copy after the last def, or before the
call/inlineasm_br, whichever is later.
Differential Revision: https://reviews.llvm.org/D87865
Simon Pilgrim [Fri, 18 Sep 2020 18:11:09 +0000 (19:11 +0100)]
[X86][AVX] Add missing non AVX512VL broadcastm test coverage
Matt Arsenault [Fri, 11 Sep 2020 15:42:44 +0000 (11:42 -0400)]
CodeGen: Move split block utility to MachineBasicBlock
AMDGPU needs this in several places, so consolidate them here.
Matt Arsenault [Mon, 14 Sep 2020 16:48:12 +0000 (12:48 -0400)]
RegAllocFast: Rewrite and improve
This rewrites big parts of the fast register allocator. The basic
strategy of doing block-local allocation hasn't changed but I tweaked
several details:
Track register state on register units instead of physical
registers. This simplifies and speeds up handling of register aliases.
Process basic blocks in reverse order: Definitions are known to end
register livetimes when walking backwards (contrary when walking
forward then uses may or may not be a kill so we need heuristics).
Check register mask operands (calls) instead of conservatively
assuming everything is clobbered. Enhance heuristics to detect
killing uses: In case of a small number of defs/uses check if they are
all in the same basic block and if so the last one is a killing use.
Enhance heuristic for copy-coalescing through hinting: We check the
first k defs of a register for COPYs rather than relying on there just
being a single definition. When testing this on the full llvm
test-suite including SPEC externals I measured:
average 5.1% reduction in code size for X86, 4.9% reduction in code on
aarch64. (ranging between 0% and 20% depending on the test) 0.5%
faster compiletime (some analysis suggests the pass is slightly slower
than before, but we more than make up for it because later passes are
faster with the reduced instruction count)
Also adds a few testcases that were broken without this patch, in
particular bug 47278.
Patch mostly by Matthias Braun
Matt Arsenault [Tue, 15 Sep 2020 13:16:14 +0000 (09:16 -0400)]
Reapply "RegAllocFast: Record internal state based on register units"
The regressions this caused should be fixed when
https://reviews.llvm.org/D52010 is applied.
This reverts commit
a21387c65470417c58021f8d3194a4510bb64f46.
Zequan Wu [Thu, 17 Sep 2020 02:05:51 +0000 (19:05 -0700)]
[CodeGen] emit CG profile for COFF object file
I forgot to add emission of CG profile for COFF object file, when adding the support (https://reviews.llvm.org/D81775)
Differential Revision: https://reviews.llvm.org/D87811
Arthur Eubanks [Fri, 18 Sep 2020 17:55:28 +0000 (10:55 -0700)]
[test][HWAsan] Fix kernel-inline.ll under NPM
David Blaikie [Fri, 18 Sep 2020 17:54:02 +0000 (10:54 -0700)]
DebugInfo: Tidy up initializing multi-section contributions in DWARFContext
Raul Tambre [Fri, 18 Sep 2020 17:07:05 +0000 (20:07 +0300)]
[Sema] Handle objc_super special lookup when checking builtin compatibility
objc_super is special and needs LookupPredefedObjCSuperType() called before performing builtin type comparisons.
This fixes an error when compiling macOS headers. A test is added.
Differential Revision: https://reviews.llvm.org/D87917
Arthur Eubanks [Fri, 18 Sep 2020 17:50:17 +0000 (10:50 -0700)]
[ASan][NewPM] Fix byref-args.ll under NPM
peter klausler [Thu, 17 Sep 2020 19:19:42 +0000 (12:19 -0700)]
[flang] Rework preprocessing of stringification
Hew more closely to the C17 standard; perform macro replacement
of arguments to function-like macros unless they're being stringified
or pasted. Test with a model "assert" macro idiom that exposed
the problem.
Differential Revision: https://reviews.llvm.org/D87650
Matt Arsenault [Thu, 10 Sep 2020 19:49:09 +0000 (15:49 -0400)]
AMDGPU: Don't sometimes allow instructions before lowered si_end_cf
Since
6524a7a2b9ca072bd7f7b4355d1230e70c679d2f, this would sometimes
not emit the or to exec at the beginning of the block, where it really
has to be. If there is an instruction that defines one of the source
operands, split the block and turn the si_end_cf into a terminator.
This avoids regressions when regalloc fast is switched to inserting
reloads at the beginning of the block, instead of spills at the end of
the block.
In a future change, this should always split the block.
Amara Emerson [Fri, 18 Sep 2020 17:23:35 +0000 (10:23 -0700)]
[AArch64][GlobalISel] Make <8 x s8> of G_BUILD_VECTOR legal.
Utkarsh Saxena [Tue, 14 Jul 2020 21:12:45 +0000 (23:12 +0200)]
[clangd] Add Random Forest runtime for code completion.
Summary:
[WIP]
- Proposes a json format for representing Random Forest model.
- Proposes a way to test the generated runtime using a test model.
TODO:
- Add generated source code snippet for easier review.
- Fix unused label warning.
- Figure out required using declarations for CATEGORICAL columns from Features.json.
- Necessary Google3 internal modifications for blaze before landing.
- Add documentation for format of the model.
- Document more.
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D83814
Sean Silva [Fri, 18 Sep 2020 01:16:41 +0000 (18:16 -0700)]
[mlir][shape] Extend shape.cstr_require with a message.
I realized when using this that one can't get very good error messages
without an additional message attribute.
Differential Revision: https://reviews.llvm.org/D87875
mydeveloperday [Fri, 18 Sep 2020 17:16:02 +0000 (18:16 +0100)]
[clang-format] NFC ensure the clang-format tests remain clang-formatted
mydeveloperday [Fri, 18 Sep 2020 17:11:33 +0000 (18:11 +0100)]
[clang-format] Add a option for the position of Java static import
Some Java style guides and IDEs group Java static imports after
non-static imports. This patch allows clang-format to control
the location of static imports.
Patch by: @bc-lee
Reviewed By: MyDeveloperDay, JakeMerdichAMD
Differential Revision: https://reviews.llvm.org/D87201
JonChesterfield [Fri, 18 Sep 2020 17:10:27 +0000 (18:10 +0100)]
[libomptarget] Disable build of amdgpu plugin as it doesn't build with rocm.
Francis Visoiu Mistrih [Thu, 17 Sep 2020 22:41:01 +0000 (15:41 -0700)]
[NFC][ScheduleDAG] Remove unused EntrySU SUnit
EntrySU doesn't seem to be used at all when building the ScheduleDAG.
Differential Revision: https://reviews.llvm.org/D87867
Jianzhou Zhao [Fri, 18 Sep 2020 16:41:18 +0000 (16:41 +0000)]
Use one more byte to silence a warning from Vistual C++
Jon Roelofs [Fri, 18 Sep 2020 15:47:37 +0000 (08:47 -0700)]
Extending Baremetal toolchain's support for the rtlib option.
Differential Revision: https://reviews.llvm.org/D87164
Patch by Manuel Carrasco!
Andy Ly [Fri, 18 Sep 2020 15:18:12 +0000 (15:18 +0000)]
[MLIR][ODS] Add constBuilderCall for TypeArrayAttr
constBuilderCall was not defined for TypeArrayAttr, resulting in tblgen not emitting the correct code when TypeArrayAttr is used with a default valued attribute.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D87907
Simon Pilgrim [Fri, 18 Sep 2020 15:35:39 +0000 (16:35 +0100)]
[X86][AVX] lowerBuildVectorAsBroadcast - improve i64 BROADCASTM lowering on 32-bit targets
We already handle the the cases where we have a 'zero extended splat' build vector (a, 0, 0, 0, a, 0, 0, 0, ...) but were missing the case where the 'a' scalar was zero-extended as well - such as i64 -> vXi64 splat cases on 32-bit targets.
Matt Morehouse [Fri, 18 Sep 2020 15:47:31 +0000 (08:47 -0700)]
[DFSan] Add strpbrk wrapper.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D87849
ergawy [Fri, 18 Sep 2020 15:47:37 +0000 (11:47 -0400)]
[MLIR][SPIRV] Create new ctx for deserialization in roundtrips.
Roundtripping SPIR-V modules used the same MLIRContext object for both
ways of the trip. This resulted in deserialization using a context
object already containing Types constructed during serialization.
This commit rectifies that by creating a new MLIRContext during
deserialization.
Reviewed By: mravishankar, antiagainst
Differential Revision: https://reviews.llvm.org/D87692
Valentin Clement [Fri, 18 Sep 2020 15:52:02 +0000 (11:52 -0400)]
[mlir][openacc] Add missing operands for acc.data operation
Add missing operands to represent copyin with readonly modifier, copyout with zero modifier
and create with zero modifier.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D87874
Valentin Clement [Fri, 18 Sep 2020 15:37:34 +0000 (11:37 -0400)]
[mlir][openacc] Support Index and AnyInteger in loop op
Following patch D87712, this patch switch AnyInteger for operands gangNum, gangStatic,
workerNum, vectoreLength and tileOperands to Index and AnyInteger.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D87848
Simon Pilgrim [Fri, 18 Sep 2020 15:10:09 +0000 (16:10 +0100)]
[X86][AVX] Add missing i686 broadcastm test coverage
Simon Pilgrim [Fri, 18 Sep 2020 14:11:13 +0000 (15:11 +0100)]
[DAG] BuildVectorSDNode::getSplatValue - pull out repeated getNumOperands() calls. NFCI.
David Tenty [Thu, 30 Jul 2020 12:31:54 +0000 (08:31 -0400)]
[AIX] Enable large code model when building with clang
Adam Czachorowski [Tue, 15 Sep 2020 17:47:50 +0000 (19:47 +0200)]
[clangd] Add option for disabling AddUsing tweak on some namespaces.
For style guides forbid "using" declarations for namespaces like "std".
With this new config option, AddUsing can be selectively disabled on
those.
Differential Revision: https://reviews.llvm.org/D87775
Hanhan Wang [Fri, 18 Sep 2020 14:07:10 +0000 (07:07 -0700)]
[mlir][StandardToSPIRV] Handle vector of i1 case for lowering zexti to SPIR-V.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D87887
Sanjay Patel [Fri, 18 Sep 2020 13:53:06 +0000 (09:53 -0400)]
[InstSimplify] fix fmin/fmax miscompile for partial undef vectors (PR47567)
It would also be correct to return the variable operand in these cases,
but eliminating a variable use is probably better for optimization.
Matt Arsenault [Thu, 17 Sep 2020 21:50:42 +0000 (17:50 -0400)]
IR: Move denormal mode parsing from MachineFunction to Function
This was just inspecting the IR to begin with, and is useful to check
in some places in the IR.
Matt Arsenault [Fri, 18 Sep 2020 13:28:57 +0000 (09:28 -0400)]
emacs: Add nofree and willreturn to list of attributes
Matt Arsenault [Thu, 17 Sep 2020 16:07:59 +0000 (12:07 -0400)]
Revert "[amdgpu] Lower SGPR-to-VGPR copy in the final phase of ISel."
This reverts commit
c3492a1aa1b98c8d81b0969d52cea7681f0624c2.
I think this is the wrong strategy and wrong place to do this
transform anyway. Also reverts follow up commit
7d593d0d6905b55ca1124fca5e4d1ebb17203138.
Alexey Bataev [Thu, 17 Sep 2020 15:24:00 +0000 (11:24 -0400)]
[SLP] Allow reordering of vectorization trees with reused instructions.
If some leaves have the same instructions to be vectorized, we may
incorrectly evaluate the best order for the root node (it is built for the
vector of instructions without repeated instructions and, thus, has less
elements than the root node). In this case we just can not try to reorder
the tree + we may calculate the wrong number of nodes that requre the
same reordering.
For example, if the root node is \<a+b, a+c, a+d, f+e\>, then the leaves
are \<a, a, a, f\> and \<b, c, d, e\>. When we try to vectorize the first
leaf, it will be shrink to \<a, b\>. If instructions in this leaf should
be reordered, the best order will be \<1, 0\>. We need to extend this
order for the root node. For the root node this order should look like
\<3, 0, 1, 2\>. This patch allows extension of the orders of the nodes
with the reused instructions.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D45263
Mirko Brkusanin [Fri, 18 Sep 2020 13:19:54 +0000 (15:19 +0200)]
[AMDGPU] Set DS alignment requirements to be more strict
Alignment requirements for ds_read/write_b96/b128 for gfx9 and onward are
now the same as for other GCN subtargets. This way we can avoid any
unintentional use of these instructions on systems that do not support dword
alignment and instead require natural alignment.
This also makes 'SH_MEM_CONFIG.alignment_mode == STRICT' the default.
Differential Revision: https://reviews.llvm.org/D87821
Sanjay Patel [Thu, 17 Sep 2020 21:20:17 +0000 (17:20 -0400)]
[InstSimplify] add another test for NaN propagation; NFC
Daniel Kiss [Wed, 16 Sep 2020 21:03:19 +0000 (23:03 +0200)]
[libunwind] Support for leaf function unwinding.
Unwinding leaf function is useful in cases when the backtrace finds a
leaf function for example when it caused a signal.
This patch also add the support for the DW_CFA_undefined because it marks
the end of the frames.
Ryan Prichard provided code for the tests.
Reviewed By: #libunwind, mstorsjo
Differential Revision: https://reviews.llvm.org/D83573
Reland with limit the test to the x86_64-linux target.
Xing GUO [Fri, 18 Sep 2020 12:20:58 +0000 (20:20 +0800)]
[DWARFYAML] Make the include_directories, file_names and opcodes fields of the line table optional.
This patch makes the include_directories, file_names and opcodes fields
of the line table optional. This helps us simplify some tests.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D87878
Xing GUO [Fri, 18 Sep 2020 12:18:48 +0000 (20:18 +0800)]
[DWARFYAML][test] Use 'CHECK-NEXT:' to make checkers stricter. NFC.
This patch makes checkers stricter so that we are able to avoid
some potential problems earlier.
Reviewed By: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D87876
David Greene [Mon, 13 Jan 2020 18:16:35 +0000 (12:16 -0600)]
[UpdateCCTestChecks] Include generated functions if asked
Add the --include-generated-funcs option to update_cc_test_checks.py so that any
functions created by the compiler that don't exist in the source will also be
checked.
We need to maintain the output order of generated function checks so that
CHECK-LABEL works properly. To do so, maintain a list of functions output for
each prefix in the order they are output. Use this list to output checks for
generated functions in the proper order.
Differential Revision: https://reviews.llvm.org/D83004
Max Kazantsev [Fri, 18 Sep 2020 10:38:08 +0000 (17:38 +0700)]
[Test] Missing range check removal opportunity
Florian Hahn [Fri, 18 Sep 2020 10:40:45 +0000 (11:40 +0100)]
[Polly] Update map passed to SCEVParameterReweriter.
The type of the map the SCEVParameterRewriter takes has been changed in
4635f6050b10.
Update the single use in polly to use SCEV* as type of the values.
Nicolas Vasilache [Fri, 18 Sep 2020 10:13:25 +0000 (06:13 -0400)]
[mlir][Linalg] Evolve named ops to use assembly form and support linalg on tensors.
This revision allows representing a reduction at the level of linalg on tensors for named ops. When a structured op has a reduction and returns tensor(s), new conventions are added and documented.
As an illustration, the syntax for a `linalg.matmul` writing into a buffer is:
```
linalg.matmul ins(%a, %b : memref<?x?xf32>, tensor<?x?xf32>)
outs(%c : memref<?x?xf32>)
```
, whereas the syntax for a `linalg.matmul` returning a new tensor is:
```
%d = linalg.matmul ins(%a, %b : tensor<?x?xf32>, memref<?x?xf32>)
init(%c : memref<?x?xf32>)
-> tensor<?x?xf32>
```
Other parts of linalg will be extended accordingly to allow mixed buffer/tensor semantics in the presence of reductions.
Florian Hahn [Fri, 18 Sep 2020 07:54:09 +0000 (08:54 +0100)]
Recommit "[DSE] Switch to MemorySSA-backed DSE by default."
This switches to using DSE + MemorySSA by default again, after
fixing the issues reported after the first commit.
Notable fixes
fc8200633122,
a0017c2bc258.
This reverts commit
3a59628f3cc26eb085acfc9cbdc97243ef71a6c5.
Daniel Kiss [Fri, 18 Sep 2020 09:37:54 +0000 (11:37 +0200)]
Revert "[libunwind] Support for leaf function unwinding."
This reverts commit
23bef7ee9923b1262326981960397e8cd95d6923.
Florian Hahn [Fri, 18 Sep 2020 08:50:01 +0000 (09:50 +0100)]
[SCEV] Generalize SCEVParameterRewriter to accept SCEV expression as target.
This patch extends SCEVParameterRewriter to support rewriting unknown
epxressions to arbitrary SCEV expressions. It will be used by further
patches.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D67176
Gabriel Hjort Ã…kerlund [Fri, 18 Sep 2020 08:08:32 +0000 (10:08 +0200)]
[TableGen][GlobalISel] Fix handling of zero_reg
When generating matching tables for GlobalISel, TableGen would output
"::zero_reg" whenever encountering the zero_reg, which in turn would
result in compilation error. This patch fixes that by instead outputting
NoRegister (== 0), which is the same result that TableGen produces when
generating matching tables for ISelDAG.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D86215
Tim Northover [Tue, 8 Sep 2020 10:08:25 +0000 (11:08 +0100)]
AArch64: make sure jump table entries can reach entire image
This turns all jump table entries into deltas within the target
function because in the small memory model all code & static data must
be in a 4GB block somewhere in memory.
When the entries were a delta between the table location and a basic
block, the 32-bit signed entries are not enough to guarantee
reachability.
https://reviews.llvm.org/D87286
Vitaly Buka [Fri, 18 Sep 2020 08:17:54 +0000 (01:17 -0700)]
[NFC][gotsan] Fix 'format' error
Vitaly Buka [Fri, 18 Sep 2020 08:09:16 +0000 (01:09 -0700)]
[NFC][sanitizer] Disable a test on Windows
Teresa Johnson [Wed, 16 Sep 2020 20:47:16 +0000 (13:47 -0700)]
[sanitizer] Add facility to print the full StackDepot
Split out of D87120 (memory profiler). Added unit testing of the new
printing facility.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D87792
Nikita Popov [Fri, 18 Sep 2020 07:27:56 +0000 (09:27 +0200)]
Revert "[InstCombine] Canonicalize SPF_ABS to abs intrinc"
This reverts commit
05d4c4ebc2fb006b8a2bd05b24c6aba10dd2eef8.
mstorsjo reports a miscompile after this change in
https://reviews.llvm.org/D87188#2281093. Reverting until I can
investigate this.
Vitaly Buka [Fri, 18 Sep 2020 07:17:18 +0000 (00:17 -0700)]
[NFC][fuzzer] Simplify StrcmpTest.cpp
The test started to consistently fail after unrelated
2ffaa9a1732c6f2af514603d25f0e8c238b3dd06.
Even before the patch it was possible to fail the test,
e.g. -seed=
1660180256 on my workstation.
Also this checks do not look related to strcmp.
Andrew Wei [Fri, 18 Sep 2020 06:59:51 +0000 (14:59 +0800)]
[AArch64] Add tests for zext pattern match with AssertZext/AssertSext operand, NFC
Serge Pavlov [Wed, 16 Sep 2020 16:27:46 +0000 (23:27 +0700)]
[FPEnv] Use typed accessors in FPOptions
Previously methods `FPOptions::get*` returned unsigned value even if the
corresponding property was represented by specific enumeration type. With
this change such methods return actual type of the property. It also
allows printing value of a property as text rather than integer code.
Differential Revision: https://reviews.llvm.org/D87812
Artur Bialas [Fri, 18 Sep 2020 06:43:53 +0000 (08:43 +0200)]
Revert "This is a test commit"
This reverts commit
9d54b166c2e59f29e476a6566951b6809fc8808e.
Artur Bialas [Fri, 18 Sep 2020 06:43:18 +0000 (08:43 +0200)]
This is a test commit
Craig Topper [Fri, 18 Sep 2020 05:37:29 +0000 (22:37 -0700)]
[X86] Add some demanded bits test cases for PDEP with constant mask
The number of ones in the mask for the PDEP determines how many
bits of the other operand are used. If the mask is constant we
can use this to build a mask for SimplifyDemandedBits. This can
be used to replace the extends in the test with anyextend.
Andrew Wei [Fri, 18 Sep 2020 04:36:22 +0000 (12:36 +0800)]
[AArch64] Emit zext move when the source of the zext is AssertZext or AssertSext
When the source of the zext is AssertZext or AssertSext, it is hard to know any information about the upper 32 bits,
so we should insert a zext move before emitting SUBREG_TO_REG to define the lower 32 bits.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D87771
Teresa Johnson [Fri, 18 Sep 2020 04:18:16 +0000 (21:18 -0700)]
Revert "[sanitizer] Add facility to print the full StackDepot"
This reverts commit
2ffaa9a1732c6f2af514603d25f0e8c238b3dd06.
There were 2 reported bot failures that need more investigation:
http://lab.llvm.org:8011/builders/sanitizer-windows/builds/69871/steps/stage%201%20check/logs/stdio
This one is in my new test.
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/39187/steps/check-fuzzer/logs/stdio
This one seems completely unrelated.
Tue Ly [Thu, 13 Aug 2020 01:18:28 +0000 (21:18 -0400)]
[libc] Add implementation for hypotf
Truncating the sum of squares, and then use shift-and-add algorithm to compute its square root.
Required MPFR testing infra is updated in https://reviews.llvm.org/D87514
Differential Revision: https://reviews.llvm.org/D87516
Teresa Johnson [Wed, 16 Sep 2020 20:47:16 +0000 (13:47 -0700)]
[sanitizer] Add facility to print the full StackDepot
Split out of D87120 (memory profiler). Added unit testing of the new
printing facility.
Differential Revision: https://reviews.llvm.org/D87792
Vitaly Buka [Fri, 18 Sep 2020 01:03:55 +0000 (18:03 -0700)]
[NFC] clang-format one line
Vitaly Buka [Fri, 18 Sep 2020 00:42:33 +0000 (17:42 -0700)]
[NFC][Lsan] Fix zero-sized array compilation error
Roland McGrath [Thu, 17 Sep 2020 19:35:31 +0000 (12:35 -0700)]
[scudo/standalone] Don't define test main function for Fuchsia
Fuchsia's unit test library provides the main function by default.
Reviewed By: cryptoad
Differential Revision: https://reviews.llvm.org/D87809
Rahul Joshi [Thu, 17 Sep 2020 23:51:20 +0000 (16:51 -0700)]
[MLIR] Fix build failure due to https://reviews.llvm.org/D87059.
- Remove spurious ;
- Make comparison object invokable as const.
Differential Revision: https://reviews.llvm.org/D87872
Sean Silva [Thu, 17 Sep 2020 23:20:47 +0000 (16:20 -0700)]
[mlir][shape] Add `shape.cstr_require %bool`
This op is a catch-all for creating witnesses from various random kinds
of constraints. In particular, I when dealing with extents directly,
which are of `index` type, one can directly use std ops for calculating
the predicates, and then use cstr_require for the final conversion to a
witness.
Differential Revision: https://reviews.llvm.org/D87871
Vedant Kumar [Thu, 17 Sep 2020 23:53:17 +0000 (16:53 -0700)]
[lldb] Clarify docstring for SBBlock::IsInlined, NFC
Previously, there was a little ambiguity about whether IsInlined should
return true for an inlined lexical block, since technically the lexical
block would not represent an inlined function (it'd just be contained
within one).
Edit suggested by Jim Ingham.
Amara Emerson [Thu, 17 Sep 2020 23:42:18 +0000 (16:42 -0700)]
[AArch64][GlobalISel] Make G_STORE <8 x s8> legal.
Amara Emerson [Thu, 17 Sep 2020 23:40:36 +0000 (16:40 -0700)]
[AArch64][GlobalISel] clang-format AArch64LegalizerInfo.cpp. NFC.
Amy Kwan [Thu, 17 Sep 2020 23:20:37 +0000 (18:20 -0500)]
[PowerPC] Add Set Boolean Condition Instruction Definitions and MC Tests
This patch adds the instruction definitions and assembly/disassembly tests for
the set boolean condition instructions. This also includes the negative, and
reverse variants of the instruction.
Differential Revision: https://reviews.llvm.org/D86252
Amy Kwan [Wed, 16 Sep 2020 15:03:17 +0000 (10:03 -0500)]
[PowerPC] Implement Vector Count Mask Bits builtins in LLVM/Clang
This patch implements the vec_cntm function prototypes in altivec.h in order to
utilize the vector count mask bits instructions introduced in Power10.
Differential Revision: https://reviews.llvm.org/D82726
Philip Reames [Thu, 17 Sep 2020 23:07:22 +0000 (16:07 -0700)]
[MemorySSA] Fix an unused variable warning [NFC]
Rahul Joshi [Thu, 17 Sep 2020 20:18:09 +0000 (13:18 -0700)]
[MLIR][TableGen] Automatic detection and elimination of redundant methods
- Change OpClass new method addition to find and eliminate any existing methods that
are made redundant by the newly added method, as well as detect if the newly added
method will be redundant and return nullptr in that case.
- To facilitate that, add the notion of resolved and unresolved parameters, where resolved
parameters have each parameter type known, so that redundancy checks on methods
with same name but different parameter types can be done.
- Eliminate existing code to avoid adding conflicting/redundant build methods and rely
on this new mechanism to eliminate conflicting build methods.
Fixes https://bugs.llvm.org/show_bug.cgi?id=47095
Differential Revision: https://reviews.llvm.org/D87059
Zhaoshi Zheng [Fri, 27 Mar 2020 05:09:31 +0000 (22:09 -0700)]
[RISCV] Support Shadow Call Stack
Currenlty assume x18 is used as pointer to shadow call stack. User shall pass
flags:
"-fsanitize=shadow-call-stack -ffixed-x18"
Runtime supported is needed to setup x18.
If SCS is desired, all parts of the program should be built with -ffixed-x18 to
maintain inter-operatability.
There's no particuluar reason that we must use x18 as SCS pointer. Any register
may be used, as long as it does not have designated purpose already, like RA or
passing call arguments.
Differential Revision: https://reviews.llvm.org/D84414
Philip Reames [Thu, 17 Sep 2020 22:39:50 +0000 (15:39 -0700)]
[AArch64] Enable implicit null check transformation
This change enables the generic implicit null transformation for the AArch64 target. As background for those unfamiliar with our implicit null check support:
An implicit null check is the use of a signal handler to catch and redirect to a handler a null pointer. Specifically, it's replacing an explicit conditional branch with such a redirect. This is only done for very cold branches under frontend control w/appropriate metadata.
FAULTING_OP is used to wrap the faulting instruction. It is modelled as being a conditional branch to reflect the fact it can transfer control in the CFG.
FAULTING_OP does not need to be an analyzable branch to achieve it's purpose. (Or at least, that's the x86 model. I find this slightly questionable.)
When lowering to MC, we convert the FAULTING_OP back into the actual instruction, record the labels, and lower the original instruction.
As can be seen in the test changes, currently the AArch64 backend does not eliminate the unconditional branch to the fallthrough block. I've tried two approaches, neither of which worked. I plan to return to this in a separate change set once I've wrapped my head around the interactions a bit better. (X86 handles this via AllowModify on analyzeBranch, but adding the obvious code causing BranchFolding to crash. I haven't yet figured out if it's a latent bug in BranchFolding, or something I'm doing wrong.)
Differential Revision: https://reviews.llvm.org/D87851
Arthur Eubanks [Mon, 24 Aug 2020 20:43:02 +0000 (13:43 -0700)]
[test] Fix FullUnroll.ll
I believe the intention of this test added in
https://reviews.llvm.org/D71687 was to test LoopFullUnrollPass with
clang's -fno-unroll-loops, not its interaction with optnone. Loop
unrolling passes don't run under optnone/-O0.
Also added back unintentionally removed -disable-loop-unrolling from
https://reviews.llvm.org/D85578.
Reviewed By: echristo
Differential Revision: https://reviews.llvm.org/D86485
Quentin Colombet [Thu, 17 Sep 2020 21:47:12 +0000 (14:47 -0700)]
[TargetRegisterInfo] Add a couple of target hooks for the greedy register allocator
Before this patch, the last chance recoloring and deferred spilling
techniques were solely controled by command line options.
This patch adds target hooks for these two techniques so that it
is easier for backend writers to override the default behavior.
The default behavior of the hooks preserves the default values of
the related command line options.
NFC
Zhaoshi Zheng [Thu, 17 Sep 2020 22:14:14 +0000 (15:14 -0700)]
[NFC] Test Commit
Derek Schuff [Sat, 8 Aug 2020 04:23:11 +0000 (21:23 -0700)]
Support dwarf fission for wasm object files
Initial support for dwarf fission sections (-gsplit-dwarf) on wasm.
The most interesting change is support for writing 2 files (.o and .dwo) in the
wasm object writer. My approach moves object-writing logic into its own function
and calls it twice, swapping out the endian::Writer (W) in between calls.
It also splits the import-preparation step into its own function (and skips it when writing a dwo).
Differential Revision: https://reviews.llvm.org/D85685
Florian Hahn [Thu, 17 Sep 2020 21:09:53 +0000 (22:09 +0100)]
[MemorySSA] Be more conservative when traversing MemoryPhis.
I think we need to be even more conservative when traversing memory
phis, to make sure we catch any loop carried dependences.
This approach updates fillInCurrentPair to use unknown sizes for
locations when we walk over a phi, unless the location is guaranteed to
be loop-invariant for any possible loop. Using an unknown size for
locations should ensure we catch all memory accesses to locations after
the given memory location, which includes loop-carried dependences.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D87778
Arthur Eubanks [Thu, 17 Sep 2020 20:57:28 +0000 (13:57 -0700)]
[NewPM] Fix pr45927.ll under NPM
Alexander Shaposhnikov [Fri, 11 Sep 2020 05:05:20 +0000 (22:05 -0700)]
[llvm-install-name-tool] Update the command-line guide
Nikita Popov [Sat, 5 Sep 2020 09:38:39 +0000 (11:38 +0200)]
[InstCombine] Canonicalize SPF_ABS to abs intrinc
Enable canonicalization of SPF_ABS and SPF_NABS to the abs intrinsic.
To be conservative, the one-use check on the comparison is retained,
this may be relaxed if all goes well.
It's pretty likely that this will uncover places that missing
handling for the abs() intrinsic. Please report any seen performance
regressions.
Differential Revision: https://reviews.llvm.org/D87188
Whitney Tsang [Thu, 17 Sep 2020 17:53:26 +0000 (17:53 +0000)]
[LoopUnrollAndJam] Allow unroll and jam loops forced by user.
Summary: Allow unroll and jam loops forced by user.
LoopUnrollAndJamPass is still disabled by default in the NPM pipeline,
and can be controlled by -enable-npm-unroll-and-jam.
Reviewed By: Meinersbur, dmgreen
Differential Revision: https://reviews.llvm.org/D87786
Nikita Popov [Thu, 17 Sep 2020 19:22:37 +0000 (21:22 +0200)]
[GVN] Use that assume(!X) implies X==false (PR47496)
We already use that assume(X) implies X==true, do the same for
assume(!X) implying X==false. This fixes PR47496.
Nikita Popov [Thu, 17 Sep 2020 18:39:29 +0000 (20:39 +0200)]
[GVN] Add additional assume tests (NFC)
The other assume tests seem to be dealing with equalities in
particular. Test implication for the condition itself, especially
the negated case from PR47496.
Florian Hahn [Thu, 17 Sep 2020 15:45:02 +0000 (16:45 +0100)]
[SCEV] Add test cases for max BTC with loop guard info.
This adds test cases for PR40961 and PR47247. They illustrate cases in
which the max backedge-taken count can be improved by information from
the loop guards.
Victor Huang [Thu, 17 Sep 2020 19:13:29 +0000 (14:13 -0500)]
Disable hoisting MI to hotter basic blocks when using pgo
This is a follow up patch for https://reviews.llvm.org/D63676 to
enable the feature when using pgo.
Differential Revision: https://reviews.llvm.org/D85240