Valentin Clement [Fri, 4 Dec 2020 19:38:31 +0000 (14:38 -0500)]
[flang][openacc] Add clause validity tests for the update directive
Add couple of clause validity tests for the update directive and check for
the restriction where at least self, host or device clause must appear on the directive.
Reviewed By: sameeranjoshi
Differential Revision: https://reviews.llvm.org/D92447
Evgeny Leviant [Fri, 4 Dec 2020 19:10:36 +0000 (22:10 +0300)]
Attempt to fix buildbot after rG993eaf2d69d8
Duncan P. N. Exon Smith [Wed, 2 Dec 2020 21:44:16 +0000 (13:44 -0800)]
ADT: Stop peeking inside AlignedCharArrayUnion, NFC
Update all the users of `AlignedCharArrayUnion` to stop peeking inside
(to look at `buffer`) so that a follow-up patch can replace it with an
alias to `std::aligned_union_t`.
This was reviewed as part of https://reviews.llvm.org/D92512, but I'm
splitting this bit out to commit first to reduce churn in case the
change to `AlignedCharArrayUnion` needs to be reverted for some
unexpected reason.
Hiroshi Yamauchi [Thu, 3 Dec 2020 19:04:19 +0000 (11:04 -0800)]
Fix for Bug 48055.
Differential Revision: https://reviews.llvm.org/D92599
Marek Kurdej [Fri, 4 Dec 2020 19:04:09 +0000 (20:04 +0100)]
[libc++] [test] Disable parts of path.factory.pass.cpp as requiring localization enabled.
It was added in commit
6be11e35d5397ae1c117eb840a969585fdd7d08d, "[libcxx] Implement c++2a char8_t input/output of std::filesystem::path".
Alexey Bataev [Fri, 4 Dec 2020 18:56:28 +0000 (10:56 -0800)]
[TEST]Autogenerate test checks, NFC.
Marek Kurdej [Fri, 4 Dec 2020 18:58:48 +0000 (19:58 +0100)]
[libc++] [test] Mark path.charconv.pass.cpp as requiring localization enabled.
It was added in commit
0b71bf793924301d53cf01eeb0a27e96fea17791, "[libcxx] [test] Add a test for conversions between wchar_t, utf8, char16_t, char32_t and windows native narrow code pages"
Evgeny Leviant [Fri, 4 Dec 2020 18:50:34 +0000 (21:50 +0300)]
Recommit [TableGen][SchedModels] Fix read/write variant substitution
Original commit rG112b3cb6ba49 introduced non-determinism in subtarget
generator due to iteration over DenseMap. New patch fixes this changing
ProcModelMapTy from DenseMap to std::map.
Craig Topper [Fri, 4 Dec 2020 18:45:31 +0000 (10:45 -0800)]
[AArch64] Add custom lowering for ISD::ABS
Instead of trying to pattern match the code produced by ISD::ABS expansion, just custom legalize ISD::ABS to the desired sequence.
The one test change is because a DAG combine for (neg (abs)) is no longer firing because ISD::ABS is now Custom instead of Expand.
Differential Revision: https://reviews.llvm.org/D92154
Craig Topper [Fri, 4 Dec 2020 18:31:23 +0000 (10:31 -0800)]
[RISCV] Add support for printing pcrel immediates as absolute addresses in llvm-objdump
This makes the llvm-objdump output much more readable and closer to binutils objdump. This builds on D76591
It requires changing the OperandType for certain immediates to "OPERAND_PCREL" so tablegen will generate code to pass the instruction's address. This means we can't do the generic check on these instructions in verifyInstruction any more. Should I add it back with explicit opcode checks? Or should we add a new operand flag to control the passing of address instead of matching the name?
Differential Revision: https://reviews.llvm.org/D92147
Hafiz Abid Qadeer [Fri, 4 Dec 2020 17:45:04 +0000 (17:45 +0000)]
Don't use sysroot/include when sysroot is empty.
Baremetal toolchain add Driver.SysRoot/include to the system include
paths without checking if Driver.SysRoot is empty. This resulted in
"-internal-isystem" "include" in the command. This patch adds check for
empty sysroot.
Reviewed By: jroelofs
Differential Revision: https://reviews.llvm.org/D92176
Michael Jones [Thu, 19 Nov 2020 21:11:42 +0000 (21:11 +0000)]
[libc] add tests to WrapperGen
This adds an initial test that can serve as a basis for other tests on
wrappergen.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D92137
Simon Pilgrim [Fri, 4 Dec 2020 18:08:53 +0000 (18:08 +0000)]
[DAG] Move SelectionDAG implementation to KnownBits::setInReg(). NFCI.
Thomas Raoux [Fri, 4 Dec 2020 07:44:36 +0000 (23:44 -0800)]
[mlir][vector][NFC] Change UnrollVectorPattern to not be statically dependent on an op type
Make UnrollVectorPattern inherit from RewritePattern instead of
OpRewritePattern so that we don't need to create many patterns when applying to
many different type of ops. Since we may want to apply the pattern to all
arithmetic op, it is more convenient to filter dynamically.
Differential Revision: https://reviews.llvm.org/D92635
mydeveloperday [Fri, 4 Dec 2020 17:44:25 +0000 (17:44 +0000)]
[clang-format] Improve clang-formats handling of concepts
This is a starting point to improve the handling of concepts in clang-format. There is currently no real formatting of concepts and this can lead to some odd formatting, e.g.
Reviewed By: mitchell-stellar, miscco, curdeius
Differential Revision: https://reviews.llvm.org/D79773
Marek Kurdej [Fri, 4 Dec 2020 17:41:51 +0000 (18:41 +0100)]
[libc++] [docs] Add Version column to issues tables on status pages.
Joachim Protze [Fri, 4 Dec 2020 17:41:07 +0000 (18:41 +0100)]
[OpenMP][OMPT] Make sure that 0 is never used as ID in tests (NFC)
Rahul Joshi [Thu, 3 Dec 2020 00:49:47 +0000 (16:49 -0800)]
[MLIR] Fix parseFunctionLikeOp() to fail parsing empty regions
- Change parseOptionalRegion to return an OptionalParseResult.
- Change parseFunctionLikeOp() to fail parsing if the function body was parsed but was
empty.
- See https://llvm.discourse.group/t/funcop-parsing-bug/2164
Differential Revision: https://reviews.llvm.org/D91886
Rahul Joshi [Fri, 4 Dec 2020 00:18:11 +0000 (16:18 -0800)]
[MLIR] Generate inferReturnTypes declaration using InferTypeOpInterface trait.
- Instead of hardcoding the parameters and return types of 'inferReturnTypes', use the
InferTypeOpInterface trait to generate the method declaration.
- Fix InferTypeOfInterface to use fully qualified type for inferReturnTypes results.
Differential Revision: https://reviews.llvm.org/D92585
Arthur Eubanks [Fri, 4 Dec 2020 16:30:34 +0000 (08:30 -0800)]
[NewPM] Make pass adaptors less templatey
Currently PassBuilder.cpp is by far the file that takes longest to
compile. This is due to tons of templates being instantiated per pass.
Follow PassManager by using wrappers around passes to avoid making
the adaptors templated on the pass type. This allows us to move various
adaptors' run methods into .cpp files.
This reduces the compile time of PassBuilder.cpp on my machine from 66
to 39 seconds. It also reduces the size of opt from 685M to 676M.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D92616
Jon Chesterfield [Fri, 4 Dec 2020 16:29:09 +0000 (16:29 +0000)]
[libomptarget][amdgpu] Fix latent race in load binary
Erik Pilkington [Fri, 4 Dec 2020 16:10:40 +0000 (11:10 -0500)]
Fix a test failing on windows
Alexey Bataev [Fri, 4 Dec 2020 14:17:08 +0000 (06:17 -0800)]
[OPENMP]Fix PR48387: disable warning messages caused by internal conversions.
Compiler needs to convert some of the loop iteration
variables/conditions to different types for better codegen and it may
lead to spurious warning messages about implicit signed/unsigned
conversions.
Differential Revision: https://reviews.llvm.org/D92655
Simon Pilgrim [Fri, 4 Dec 2020 15:18:32 +0000 (15:18 +0000)]
[PowerPC] Regenerate p10-vector-rotate.ll
Reorder check-prefixes to stop update_llc_test_checks.py complaining
Nico Weber [Fri, 4 Dec 2020 15:18:44 +0000 (10:18 -0500)]
fix typos to cycle bots
LLVM GN Syncbot [Fri, 4 Dec 2020 15:06:48 +0000 (15:06 +0000)]
[gn build] Port
c8ec685ca55
Erik Pilkington [Thu, 3 Dec 2020 15:01:53 +0000 (10:01 -0500)]
[Sema] Fold VLAs to constant arrays in a few more contexts
552c6c2 removed support for promoting VLAs to constant arrays when the bounds
isn't an ICE, since this can result in miscompiling a conforming program that
assumes that the array is a VLA. Promoting VLAs for fields is still supported,
since clang doesn't support VLAs in fields, so no conforming program could have
a field VLA.
This change is really disruptive, so this commit carves out two more cases
where we promote VLAs which can't miscompile a conforming program:
- When the VLA appears in an ivar -- this seems like a corollary to the field thing
- When the VLA has an initializer -- VLAs can't have an initializer
Differential revision: https://reviews.llvm.org/D90871
Jinsong Ji [Fri, 4 Dec 2020 14:07:52 +0000 (14:07 +0000)]
[llvm-exegesis][PowerPC] Add more register classes
This PR adds more register class support in PowerPC,
mark OperandType for imm and memory operands.
Also added more unit tests for SnippetGenerator.
Reviewed By: #powerpc, steven.zhang
Differential Revision: https://reviews.llvm.org/D88044
Nicolas Vasilache [Fri, 4 Dec 2020 14:22:00 +0000 (14:22 +0000)]
[mlir][Linalg] NFC - Expose tiling canonicalization patterns through a populate method
Thomas Preud'homme [Mon, 30 Nov 2020 17:02:12 +0000 (17:02 +0000)]
[AST][NFC] Silence GCC warning about broken strict aliasing rules
The deserialize() method would trigger the following warning on GCC <7:
warning: dereferencing type-punned pointer will break
strict-aliasing rules [-Wstrict-aliasing]
ParamIdx P(*reinterpret_cast<ParamIdx *>(&S));
^
&S was previously reinterpret_casted from a ParamIdx into a SerialType,
it is therefore safe to cast back into a ParamIdx. Similar to what was
done in D50608, we replace it with two static_cast via void * which
silences the warning and presumably makes GCC understand that no
strict-aliasing violation is happening.
No functional change intended.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D92384
Hansang Bae [Thu, 3 Dec 2020 23:52:07 +0000 (17:52 -0600)]
[OpenMP] Add __kmpc_omp_target_task_alloc to dllexport
This patch enables use of the entry on Windows.
Differential Revision: https://reviews.llvm.org/D92618
Nicolas Vasilache [Fri, 4 Dec 2020 13:51:30 +0000 (13:51 +0000)]
[mlir][Linalg] Properly use distribution options.
Let tiling to scf.for actually use the distribution method.
For now only Cyclic is supported.
Differential Revision: https://reviews.llvm.org/D92653
Nico Weber [Thu, 3 Dec 2020 21:40:04 +0000 (16:40 -0500)]
[mac/lld] Add support for the LC_LINKER_OPTION load command in o files
clang puts `-framework CoreFoundation` in this load command for files
that use @available / __builtin_available. Without support for this,
binaries that don't explicitly link to CoreFoundation fail to link.
Differential Revision: https://reviews.llvm.org/D92624
Yaxun (Sam) Liu [Fri, 4 Dec 2020 02:56:35 +0000 (21:56 -0500)]
[HIP] Fix bug in driver about wavefront size
The static variable causes it only initialized once and take
the same value for different GPU archs, whereas they
may be different for different GPU archs, e.g. when
there are both gfx900 and gfx1010.
Removing static fixes that.
Differential Revision: https://reviews.llvm.org/D92628
Christian Sigg [Thu, 3 Dec 2020 11:34:26 +0000 (12:34 +0100)]
Remove typeConverter from ConvertToLLVMPattern and use the existing one in ConversionPattern.
ftynse
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D92564
Georgii Rymar [Fri, 4 Dec 2020 13:09:25 +0000 (16:09 +0300)]
[llvm-profgen] - Fix compilation issue after ELFFile<ELFT> interface update.
`D92560` changed `ELFObjectFile::getELFFile` to return reference.
Georgii Rymar [Thu, 3 Dec 2020 09:57:00 +0000 (12:57 +0300)]
[lib/Object, tools] - Make ELFObjectFile::getELFFile return reference.
We always have an object, so we don't have to return a pointer.
Differential revision: https://reviews.llvm.org/D92560
Kazushi (Jam) Marukawa [Fri, 4 Dec 2020 11:12:10 +0000 (20:12 +0900)]
[VE] Add vfadd, vfsub, vfmul, and vfdiv intrinsic instructions
Add vfadd, vfsub, vfmul, and vfdiv intrinsic instructions and
regression tests.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D92649
Simon Pilgrim [Fri, 4 Dec 2020 12:13:19 +0000 (12:13 +0000)]
[X86] LowerRotate - enable custom lowering of ROTL/ROTR vXi16 on VBMI2 targets.
Cullen Rhodes [Mon, 30 Nov 2020 11:35:46 +0000 (11:35 +0000)]
[IR] Disallow scalable vectors in ShuffleVectorInst::isExtractSubvectorMask
It's not possible to express an extract subvector shuffle mask for
a scalable vector.
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D92312
Simon Pilgrim [Fri, 4 Dec 2020 11:29:09 +0000 (11:29 +0000)]
[X86] LowerRotate - VBMI2 targets can lower vXi16 rotates using funnel shifts.
Ideally we'd do this inside DAGCombine but until we can make the FSHL/FSHR opcodes legal for VBMI2 it won't help us.
Haojian Wu [Fri, 4 Dec 2020 11:23:26 +0000 (12:23 +0100)]
[clangd] Fix an assertion violation in rename.
NamedDecl::getName() asserts the name must be an identifier.
Differential Revision: https://reviews.llvm.org/D92642
Simon Pilgrim [Fri, 4 Dec 2020 11:06:21 +0000 (11:06 +0000)]
[X86] Let VBMI2 non-VLX targets still use funnel shifts instructions
Georgii Rymar [Thu, 3 Dec 2020 11:40:06 +0000 (14:40 +0300)]
[yaml2obj,obj2yaml] - Make Symbol::Section field optional.
This is similar to what we did earlier for fields of the Section class.
When a field is optional we can use the =<none> syntax in macros.
This was splitted from D92478.
Differential revision: https://reviews.llvm.org/D92565
Raphael Isemann [Fri, 4 Dec 2020 10:42:36 +0000 (11:42 +0100)]
[lldb] Remove LLDB session dir and just store test traces in the respective test build directory
Test runs log some of their output to files inside the LLDB session dir. This
session dir is shared between all tests, so all the tests have to make sure they
choose a unique file name inside that directory. We currently choose by default
`<test-class-name>-<test-method-name>` as the log file name. However, that means
that if not every test class in the test suite has a unique class name, then we
end up with a race condition as two tests will try to write to the same log
file.
I already tried in D83767 changing the format to use the test file basename
instead (which we already require to be unique for some other functionality),
but it seems the code for getting the basename didn't work on Windows.
This patch instead just changes that dotest stores the log files in the build
directory for the current test. We know that directory is unique for this test,
so no need to generate some unique file name now. Also removes all the
environment vars and parameters related to the now unused session dir.
The new log paths now look like this for a failure in 'TestCppOperators`:
```
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_dwarf/Failure.log
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_dsym/Failure.log
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_gmodules/Failure.log
```
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D92498
Georgii Rymar [Thu, 3 Dec 2020 12:07:28 +0000 (15:07 +0300)]
[llvm-readobj] - Report unique warnings in printProgramHeaders.
This converts `reportWarning` -> `reportUniqueWarning`
Differential revision: https://reviews.llvm.org/D92568
Raphael Isemann [Fri, 4 Dec 2020 09:26:03 +0000 (10:26 +0100)]
[lldb][NFC] Rename TypeSystemClang::GetScratch to ScratchTypeSystemClang::GetForTarget
Also add some documentation while I'm at it.
QingShan Zhang [Fri, 4 Dec 2020 10:22:13 +0000 (10:22 +0000)]
[PowerPC] Fix the regression caused by commit
9c588f53fc42
Add a TypeLegal check for MVT::i1 and add the test.
Simon Pilgrim [Thu, 3 Dec 2020 11:55:59 +0000 (11:55 +0000)]
[DAGCombiner] Use const APInt& for getConstantOperandAPInt results. NFCI.
Avoid unnecessary instantiation.
Noticed while removing unnecessary autos
Simon Pilgrim [Thu, 3 Dec 2020 11:53:34 +0000 (11:53 +0000)]
[X86] Remove unnecessary bitcast. NFC.
The X86ISD::SUBV_BROADCAST node is already VT
Simon Pilgrim [Thu, 3 Dec 2020 11:52:27 +0000 (11:52 +0000)]
[X86] Regenerate midpoint-int.ll tests
Replace X32 check prefixes with X86 - X32 is generally used for gnux triple tests
Martin Storsjö [Sat, 24 Oct 2020 21:48:12 +0000 (00:48 +0300)]
[libcxx] [test] Add a test for conversions between wchar_t, utf8, char16_t, char32_t and windows native narrow code pages
Differential Revision: https://reviews.llvm.org/D91133
Martin Storsjö [Mon, 26 Oct 2020 11:18:46 +0000 (13:18 +0200)]
[libcxx] Implement c++2a char8_t input/output of std::filesystem::path
This implements the std::filesystem parts of P0482 (which is already
marked as in progress), and applies the actions that are suggested
in P1423.
Differential Revision: https://reviews.llvm.org/D90222
Martin Storsjö [Thu, 3 Dec 2020 11:58:04 +0000 (13:58 +0200)]
[clang] [Headers] Use the corresponding _aligned_free or __mingw_aligned_free in _mm_free
Differential Revision: https://reviews.llvm.org/D92570
Evgeniy Brevnov [Fri, 25 Sep 2020 04:46:20 +0000 (11:46 +0700)]
[NFC][NARY-REASSOCIATE] Restructure code to aviod isPotentiallyReassociatable
Currently we have to duplicate the same checks in isPotentiallyReassociatable and tryReassociate. With simple pattern like add/mul this may be not a big deal. But the situation gets much worse when I try to add support for min/max. Min/Max may be represented by several instructions and can take different forms. In order reduce complexity for upcoming min/max support we need to restructure the code a bit to avoid mentioned code duplication.
Reviewed By: mkazantsev
Differential Revision: https://reviews.llvm.org/D88286
Evgeniy Brevnov [Fri, 25 Sep 2020 04:37:19 +0000 (11:37 +0700)]
[NARY-REASSOCIATE] Simplify traversal logic by post deleting dead instructions
Currently we delete optimized instructions as we go. That has several negative consequences. First it complicates traversal logic itself. Second if newly generated instruction has been deleted the traversal is repeated from scratch.
But real motivation for the change is upcoming change with support for min/max reassociation. Here we employ SCEV expander to generate code. As a result newly generated instructions may be inserted not right before original instruction (because SCEV may do hoisting) and there is no way to know 'next' instruction.
Reviewed By: mkazantsev
Differential Revision: https://reviews.llvm.org/D88285
Raphael Isemann [Fri, 4 Dec 2020 08:17:51 +0000 (09:17 +0100)]
[lldb][NFC] Rename TypeSystemClangForExpressions to ScratchTypeSystemClang
We keep referring to the single object created by this class as
'scratch AST/Context/TypeSystem' so at this point we might as well rename the
class. It's also not involved at all in expression evaluation, so the
'ForExpressions' prefix is a bit misleading.
Haojian Wu [Fri, 4 Dec 2020 08:02:04 +0000 (09:02 +0100)]
[clang] Add a C++17 deduction guide testcase.
From https://bugs.llvm.org/show_bug.cgi?id=47219.
It was crashing before the commit
1e14588d0f68.
Differential Revision: https://reviews.llvm.org/D92573
Kazu Hirata [Fri, 4 Dec 2020 07:50:17 +0000 (23:50 -0800)]
[JumpThreading] Call eraseBlock when folding a conditional branch
This patch teaches the jump threading pass to call BPI->eraseBlock
when it folds a conditional branch.
Without this patch, BranchProbabilityInfo could end up with stale edge
probabilities for the basic block containing the conditional branch --
one edge probability with less than 1.0 and the other for a removed
edge.
Differential Revision: https://reviews.llvm.org/D92608
Hanhan Wang [Fri, 4 Dec 2020 07:10:20 +0000 (23:10 -0800)]
[mlir][Linalg] Handle fusion on tensors for projected permutation.
In the past, the reshape op can be folded only if the indexing map is
permutation in consumer's usage. We can relax to condition to be projected
permutation.
This patch still limits the fusion for scalar cases. Scalar case is a corner
case, because we need to decide where to put extra dims.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D92466
Kai Luo [Fri, 4 Dec 2020 06:42:30 +0000 (06:42 +0000)]
[PowerPC] Pre-commit neg abs test for vector. NFC.
Max Kazantsev [Fri, 4 Dec 2020 04:59:07 +0000 (11:59 +0700)]
Return "[IndVars] ICmpInst should not prevent IV widening"
This reverts commit
4bd35cdc3ae1874c6d070c5d410b3f591de54ee6.
The patch was reverted during the investigation. The investigation
shown that the patch did not cause any trouble, but just exposed
the existing problem that is addressed by the previous patch
"[IndVars] Quick fix LHS/RHS bug". Returning without changes.
Max Kazantsev [Fri, 4 Dec 2020 04:57:39 +0000 (11:57 +0700)]
[IndVars] Quick fix LHS/RHS bug
The code relies on fact that LHS is the NarrowDef but never
really checks it. Adding the conservative restrictive check,
will follow-up with handling of case where RHS is a NarrowDef.
Fangrui Song [Fri, 4 Dec 2020 05:24:38 +0000 (21:24 -0800)]
Fix -allow-deprecated-dag-overlap in test/CodeGen/dso-local-executable.c
David Blaikie [Fri, 4 Dec 2020 04:40:37 +0000 (20:40 -0800)]
PR48383: Disallow decltype(auto) in pseudodestructor calls
Mircea Trofin [Thu, 3 Dec 2020 05:32:28 +0000 (21:32 -0800)]
[tools] Update update_test_prefix.py to handle %s after prefixes
Sometimes the check-prefixes is followed by %s, and we want to keep a
white space before it.
Differential Revision: https://reviews.llvm.org/D92542
Qiu Chaofan [Fri, 4 Dec 2020 03:28:18 +0000 (11:28 +0800)]
[NFC] [Clang] Fix ppc64le vaarg OpenMP test in CodeGen
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D92544
Jianzhou Zhao [Wed, 2 Dec 2020 01:14:31 +0000 (01:14 +0000)]
[dfsan] Support passing non-i16 shadow values in TLS mode
This is a child diff of D92261.
It extended TLS arg/ret to work with aggregate types.
For a function
t foo(t1 a1, t2 a2, ... tn an)
Its arguments shadow are saved in TLS args like
a1_s, a2_s, ..., an_s
TLS ret simply includes r_s. By calculating the type size of each shadow
value, we can get their offset.
This is similar to what MSan does. See __msan_retval_tls and __msan_param_tls
from llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp.
Note that this change does not add test cases for overflowed TLS
arg/ret because this is hard to test w/o supporting aggregate shdow
types. We will be adding them after supporting that.
Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D92440
David Blaikie [Fri, 4 Dec 2020 02:23:13 +0000 (18:23 -0800)]
IntrusiveRefCntPtr: Ensure RefCount is initialized during ThreadSafeRefCountedBase copy construction
Post commit feedback on
2e83ccc2ee33 from Nathan James!
Arthur Eubanks [Fri, 4 Dec 2020 01:38:00 +0000 (17:38 -0800)]
Use isIgnored instead of checking pass name
In preparation for https://reviews.llvm.org/D92616 which will remove
angle brackets from pass manager/adaptor names.
Reviewed By: dexonsmith, thakis
Differential Revision: https://reviews.llvm.org/D92625
Nico Weber [Thu, 3 Dec 2020 14:35:25 +0000 (09:35 -0500)]
[mac/lld] Run tests with -fatal_warnings by default
This helps us catch cases where we add support for a flag but forget to
remove HelpHidden from Options.td.
More explicit alternative to D92455
Differential Revision: https://reviews.llvm.org/D92575
Sam Clegg [Thu, 3 Dec 2020 01:14:57 +0000 (17:14 -0800)]
[lld][WebAssembly] Set memory limits correctly for PIC + shared memory
Don't early return from layoutMemory in PIC mode before we have set the
memory limits.
This matters in particular with shared-memory + PIC because shared
memories require maximum size.
Secondly, when we need a maximum, but the user does not supply one,
default to MAX_INT rather than 0 (defaulting to zero is completely
useless and means that building with -shared didn't previously work at
all without --maximum-memory, because zero is never big enough).
This is part of an ongoing effort to enable dynamic linking with
threads in emscripten.
See https://github.com/emscripten-core/emscripten/issues/3494
Differential Revision: https://reviews.llvm.org/D92528
Duncan P. N. Exon Smith [Thu, 5 Nov 2020 23:23:19 +0000 (18:23 -0500)]
Support: Change InMemoryFileSystem::addFileNoOwn to take a MemoryBufferRef, NFC
Found this by chance when looking at the InMemoryFileSystem API, seems
like an easy cleanup.
Differential Revision: https://reviews.llvm.org/D90893
River Riddle [Fri, 4 Dec 2020 01:22:57 +0000 (17:22 -0800)]
[mlir][Attributes][NFC] Move all builtin Attribute classes to BuiltinAttributes.h
This mirrors the file structure of Types.
Differential Revision: https://reviews.llvm.org/D92499
River Riddle [Fri, 4 Dec 2020 01:22:29 +0000 (17:22 -0800)]
[mlir][Types][NFC] Move all of the builtin Type classes to BuiltinTypes.h
This is part of a larger refactoring the better congregates the builtin structures under the BuiltinDialect. This also removes the problematic "standard" naming that clashes with the "standard" dialect, which is not defined within IR/. A temporary forward is placed in StandardTypes.h to allow time for downstream users to replaced references.
Differential Revision: https://reviews.llvm.org/D92435
River Riddle [Fri, 4 Dec 2020 01:21:32 +0000 (17:21 -0800)]
[mlir][NFC] Remove Function.h and Module.h in favor of BuiltinOps.h
The definitions of ModuleOp and FuncOp are now within BuiltinOps.h, making the individual files obsolete.
Differential Revision: https://reviews.llvm.org/D92622
Xiang1 Zhang [Thu, 19 Nov 2020 07:16:06 +0000 (15:16 +0800)]
[X86] Unbind the ebx with GOT address in regcall calling convention
No register can be allocated for indirect call when it use regcall calling
convention and passed 5/5+ args.
For example:
call vreg (ag1, ag2, ag3, ag4, ag5, ...) --> 5 regs (EAX, ECX, EDX, ESI, EDI)
used for pass args, 1 reg (EBX )used for hold GOT point, so no regs can be
allocated to vreg.
The Intel386 architecture provides 8 general purpose 32-bit registers. RA
mostly use 6 of them (EAX, EBX, ECX, EDX, ESI, EDI). 5 of this regs can be
used to pass function arguments (EAX, ECX, EDX, ESI, EDI).
EBX used to hold the GOT pointer when making function calls via the PLT.
ESP and EBP usually be "reserved" in register allocation.
Reviewed By: LuoYuanke
Differential Revision: https://reviews.llvm.org/D91020
David Blaikie [Thu, 3 Dec 2020 23:28:40 +0000 (15:28 -0800)]
ADT: Support copying of IntrusiveRefCntPtr objects
This was partially supported but untested for RefCountedBase (the
implicit copy assignment would've been problematic - so delete that) and
unsupported (would not have compiled, because std::atomic is
non-copyable) for ThreadSafeRefCountedBase (implement similar support
to RefCountedBase)
Fix the test that had a copy ctor for the derived object but called
RefCountBase's default ctor from that copy ctor - which meant it wasn't
actually testing RefCountBase's copy semantics.
Aart Bik [Fri, 4 Dec 2020 00:18:58 +0000 (16:18 -0800)]
[mlir][vector][avx512] move avx512 lowering pass into general vector lowering
A separate AVX512 lowering pass does not compose well with the regular
vector lowering pass. As such, it is at risk of code duplication and
lowering inconsistencies. This change removes the separate AVX512 lowering
pass and makes it an "option" in the regular vector lowering pass
(viz. vector dialect "augmented" with AVX512 dialect).
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D92614
Sean Silva [Thu, 3 Dec 2020 18:38:37 +0000 (10:38 -0800)]
[SmallVector] Allow SmallVector<T>
This patch adds a capability to SmallVector to decide a number of
inlined elements automatically. The policy is:
- A minimum of 1 inlined elements, with more as long as
sizeof(SmallVector<T>) <= 64.
- If sizeof(T) is "too big", then trigger a static_assert: this dodges
the more pathological cases
This is expected to systematically improve SmallVector use in the
LLVM codebase, which has historically been plagued by semi-arbitrary /
cargo culted N parameters, often leading to bad outcomes due to
excessive sizeof(SmallVector<T, N>). This default also makes
programming more convenient by avoiding edit/rebuild cycles due to
forgetting to type the N parameter.
Differential Revision: https://reviews.llvm.org/D92522
Arthur Eubanks [Thu, 3 Dec 2020 18:59:10 +0000 (10:59 -0800)]
[NewPM] Support --print-before/after in NPM
This changes --print-before/after to be a list of strings rather than
legacy passes. (this also has the effect of not showing the entire list
of passes in --help-hidden after --print-before/after, which IMO is
great for making it less verbose).
Currently PrintIRInstrumentation passes the class name rather than pass
name to llvm::shouldPrintBeforePass(), meaning
llvm::shouldPrintBeforePass() never functions as intended in the NPM.
There is no easy way of converting class names to pass names outside of
within an instance of PassBuilder.
This adds a map of pass class names to their short names in
PassRegistry.def within PassInstrumentationCallbacks. It is populated
inside the constructor of PassBuilder, which takes a
PassInstrumentationCallbacks.
Add a pointer to PassInstrumentationCallbacks inside
PrintIRInstrumentation and use the newly created map.
This is a bit hacky, but I can't think of a better way since the short
id to class name only exists within PassRegistry.def. This also doesn't
handle passes not in PassRegistry.def but rather added via
PassBuilder::registerPipelineParsingCallback().
llvm/test/CodeGen/Generic/print-after.ll doesn't seem very useful now
with this change.
Reviewed By: ychen, jamieschmeiser
Differential Revision: https://reviews.llvm.org/D87216
River Riddle [Fri, 4 Dec 2020 00:31:21 +0000 (16:31 -0800)]
[mlir][IR] Add explicit default constructor to OwningModuleRef to appease MSVC
Wouter van Oortmerssen [Mon, 30 Nov 2020 22:00:34 +0000 (14:00 -0800)]
[WebAssembly] Fixed Writer::createInitMemoryFunction to work for wasm64
Differential Revision: https://reviews.llvm.org/D92348
George [Fri, 4 Dec 2020 00:01:32 +0000 (16:01 -0800)]
Use MlirStringRef in StandardAttributes.h
Duncan P. N. Exon Smith [Wed, 4 Nov 2020 23:31:40 +0000 (18:31 -0500)]
Frontend: Remove redundant call to CompilerInstance::setFileManager, NFC
`ASTUnit::Parse` sets up the `FileManager` earlier in the same function,
ensuring `ASTUnit::getFileManager()` matches `Clang->getFileManager()`.
Remove the later call to `setFileManager(getFileManager())` since it
does nothing.
Differential Revision: https://reviews.llvm.org/D90888
Craig Topper [Thu, 3 Dec 2020 23:58:59 +0000 (15:58 -0800)]
[RISCV] Rename FPCCToExtend->FPOpToExpand and FPOpToExtend->FPOpToExpand. NFC
These are used to call setOperationAction/setCondCodeAction with
the Expand action so it seems that Expand is a better name than
Extend.
Richard Smith [Thu, 3 Dec 2020 23:51:56 +0000 (15:51 -0800)]
P0857R0: Parse a requires-clause after an explicit
template-parameter-list in a lambda.
This implements one of the missing parts of P0857R0. Mark it as not done
on the cxx_status page given that it's still incomplete.
River Riddle [Thu, 3 Dec 2020 23:46:41 +0000 (15:46 -0800)]
[mlir][Parser] Don't hardcode the use of ModuleOp in the parser
This was important when ModuleOp was the only top level operation, but that isn't necessarily the case anymore. This is one of the last remaining aspects of the infrastructure that is hardcoded to ModuleOp.
Differential Revision: https://reviews.llvm.org/D92605
River Riddle [Thu, 3 Dec 2020 23:46:32 +0000 (15:46 -0800)]
[mlir][Pass] Remove the restriction that PassManager can only run on ModuleOp
This was a somewhat important restriction in the past when ModuleOp was distinctly the top-level container operation, as well as before the pass manager had support for running nested pass managers natively. With these two issues fading away, there isn't really a good reason to enforce that a ModuleOp is the thing running within a pass manager. As such, this revision removes the restriction and allows for users to pass in the name of the operation that the pass manager will be scheduled on.
The only remaining dependency on BuiltinOps from Pass after this revision is due to FunctionPass, which will be resolved in a followup revision.
Differential Revision: https://reviews.llvm.org/D92450
River Riddle [Thu, 3 Dec 2020 23:46:23 +0000 (15:46 -0800)]
[mlir][IR] Remove references to BuiltinOps from IR/
There isn't a good reason for anything within IR to specifically reference any of the builtin operations. The only place that had a good reason in the past was AsmPrinter, but the behavior there doesn't need to hardcode ModuleOp anymore.
Differential Revision: https://reviews.llvm.org/D92448
Thomas Raoux [Thu, 3 Dec 2020 04:45:26 +0000 (20:45 -0800)]
[mlir][linalg] Add vectorization for element-wise linalg ops
Add support for vectorization for linalg.generic representing element-wise ops.
Those are converted to transfer_read + vector ops + transfer_write.
Also re-organize the vectorization tests to be together.
Implementation derived from the work of @burmako, @agrue and
@fedelebron.
Differential Revision: https://reviews.llvm.org/D92540
Richard Smith [Thu, 3 Dec 2020 23:25:21 +0000 (15:25 -0800)]
PR45699: Fix crash if an unexpanded parameter pack appears in a
requires-clause.
Jonas Devlieghere [Thu, 3 Dec 2020 23:06:31 +0000 (15:06 -0800)]
[lldb] Use the cpu subtype enum values from llvm::MachO in ArchSpec (NFC)
Use the cpu subtype enum values from llvm::MachO in the ArchSpec MachO
table. As I'm already cluttering the history, restore the table's
formatting to its original glory.
Differential revision: https://reviews.llvm.org/D92601
Nico Weber [Thu, 3 Dec 2020 23:06:34 +0000 (18:06 -0500)]
try more to fix t.s on Windows after
7cb0a373d1
Philip Reames [Thu, 3 Dec 2020 22:58:30 +0000 (14:58 -0800)]
Use deref facts derived from minimum object size of allocations
This change should be fairly straight forward. If we've reached a call, check to see if we can tell the result is dereferenceable from information about the minimum object size returned by the call.
To control compile time impact, I'm only adding the call for base facts in the routine. getObjectSize can also do recursive reasoning, and we don't want that general capability here.
As a follow up patch (without separate review), I will plumb through the missing TLI parameter. That will have the effect of extending this to known libcalls - malloc, new, and the like - whereas currently this only covers calls with the explicit allocsize attribute.
Differential Revision: https://reviews.llvm.org/D90341
Aaron En Ye Shi [Wed, 25 Nov 2020 21:08:12 +0000 (21:08 +0000)]
[HIP] cmath demote long double args to double
Since there is no ROCm Device Library support for
long double, demote them to double, and use the fp64
math functions.
Differential Revision: https://reviews.llvm.org/D92130
Philip Reames [Thu, 3 Dec 2020 22:49:30 +0000 (14:49 -0800)]
[LoopVec] Support non-instructions as argument to uniform mem ops
The initial step of the uniform-after-vectorization (lane-0 demanded only) analysis was very awkwardly written. It would revisit use list of each pointer operand of a widened load/store. As a result, it was in the worst case O(N^2) where N was the number of instructions in a loop, and had restricted operand Value types to reduce the size of use lists.
This patch replaces the original algorithm with one which is at most O(2N) in the number of instructions in the loop. (The key observation is that each use of a potentially interesting pointer is visited at most twice, once on first scan, once in the use list of *it's* operand. Only instructions within the loop have their uses scanned.)
In the process, we remove a restriction which required the operand of the uniform mem op to itself be an instruction. This allows detection of uniform mem ops involving global addresses.
Differential Revision: https://reviews.llvm.org/D92056
Philip Reames [Thu, 3 Dec 2020 22:35:37 +0000 (14:35 -0800)]
[BasicAA] Move newline to dump from printer
Jonas Devlieghere [Thu, 3 Dec 2020 22:31:37 +0000 (14:31 -0800)]
[lldb] Refactor the Symbolicator initializer
We found out that we have clients relying on the old signature of the
Symbolicator initializer. Make the signature compatible again and
provide a factory method to initialize the class correctly based on
whether you have a target or want the symbolicator to create one for
you.
Differential revision: D92601
Fangrui Song [Thu, 3 Dec 2020 22:24:29 +0000 (14:24 -0800)]
Revert D90844 "[TableGen][SchedModels] Fix read/write variant substitution"
This reverts commit
112b3cb6ba49aacd821440d0913f15b32131480e.
D90844 made lib/Target/AArch64/AArch64GenSubtargetInfo.inc non-deterministic.