platform/upstream/llvm.git
3 years ago[dfsan] Add origin chain utils
Jianzhou Zhao [Fri, 5 Feb 2021 18:06:14 +0000 (18:06 +0000)]
[dfsan] Add origin chain utils

This is a part of https://reviews.llvm.org/D95835.

The design is based on MSan origin chains.

An 4-byte origin is a hash of an origin chain. An origin chain is a
pair of a stack hash id and a hash to its previous origin chain. 0 means
no previous origin chains exist. We limit the length of a chain to be
16. With origin_history_size = 0, the limit is removed.

The change does not have any test cases yet. The following change
will be adding test cases when the APIs are used.

Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D96160

3 years agoAMDGPU: Restrict soft clause bundling at half of the available regs
Matt Arsenault [Thu, 14 Jan 2021 15:30:55 +0000 (10:30 -0500)]
AMDGPU: Restrict soft clause bundling at half of the available regs

Fixes a testcase that was overcommitting large register tuples to a
bundle, which the register allocator could not possibly satisfy.  This
was producing a bundle which used nearly all of the available SGPRs
with a series of 16-dword loads (not all of which are freely available
to use).

This is a quick hack for some deeper issues with how the clause
bundler tracks register pressure.

Overall the pressure tracking used here doesn't make sense and is too
imprecise for what it needs to avoid the allocator failing. The
pressure estimate does not account for the alignment requirements of
large SGPR tuples, so this was really underestimating the pressure
impact. This also ignores the impact of the extended live range of the
use registers after the bundle is introduced. Additionally, it didn't
account for some wide tuples not being available due to reserved
registers.

This regresses a few cases. These end up introducing more
spilling. This is also a function of the global pressure being used in
the decision to bundle, not the local pressure impact of the bundle
itself.

3 years ago[flang] Improve "Error reading module file" error message
peter klausler [Thu, 11 Feb 2021 00:20:59 +0000 (16:20 -0800)]
[flang] Improve "Error reading module file" error message

Instead of using a message attachment with further details,
emit the details as part of a single message.

Differential Revision: https://reviews.llvm.org/D96465

3 years ago[lld][WebAssembly] Delay the merging of data section when dynamic linking
Sam Clegg [Wed, 10 Feb 2021 18:11:52 +0000 (10:11 -0800)]
[lld][WebAssembly] Delay the merging of data section when dynamic linking

With dynamic linking we have the current limitation that there can be
only a single active data segment (since we use __memory_base as the
load address and we can't do arithmetic in constant expresions).

This change delays the merging of active segments until a little later
in the linking process which means that the grouping of data by section,
and the magic __start/__end symbols work as expected under dynamic
linking.

Differential Revision: https://reviews.llvm.org/D96453

3 years ago[clang][Arm] Fix handling of -Wa,-implicit-it=
Nick Desaulniers [Thu, 11 Feb 2021 17:00:11 +0000 (09:00 -0800)]
[clang][Arm] Fix handling of -Wa,-implicit-it=

Similiar to D95872, this flag can be set for the assembler directly.
Move validation code into a reusable helper function.

Link: https://bugs.llvm.org/show_bug.cgi?id=49023
Link: https://github.com/ClangBuiltLinux/linux/issues/1270
Reported-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D96285

3 years ago[tests] Precommit tests for D96440
Philip Reames [Thu, 11 Feb 2021 18:47:35 +0000 (10:47 -0800)]
[tests] Precommit tests for D96440

3 years ago[InstCombine] add tests for disguised mul ops; NFC
Sanjay Patel [Thu, 11 Feb 2021 15:35:17 +0000 (10:35 -0500)]
[InstCombine] add tests for disguised mul ops; NFC

3 years agoBPF: Add LLVMAnalysis in CMakefile LINK_COMPONENTS
Yonghong Song [Thu, 11 Feb 2021 18:00:32 +0000 (10:00 -0800)]
BPF: Add LLVMAnalysis in CMakefile LINK_COMPONENTS

buildbot reported a build error like below:
  BPFTargetMachine.cpp:(.text._ZN4llvm19TargetTransformInfo5ModelINS_10BPFTTIImplEED2Ev
    [_ZN4llvm19TargetTransformInfo5ModelINS_10BPFTTIImplEED2Ev]+0x14):
    undefined reference to `llvm::TargetTransformInfo::Concept::~Concept()'
  lib/Target/BPF/CMakeFiles/LLVMBPFCodeGen.dir/BPFTargetMachine.cpp.o:
    In function `llvm::TargetTransformInfo::Model<llvm::BPFTTIImpl>::~Model()':

Commit a260ae716030 ("BPF: Implement TTI.IntImmCost() properly")
added TargetTransformInfo to BPF, which requires LLVMAnalysis
dependence. In certain cmake configurations, lacking explicit
LLVMAnalysis dependency may cause compilation error.
Similar to other targets, this patch added LLVMAnalysis
in CMakefile LINK_COMPONENTS explicitly.

3 years agoRevert "[AssumptionCache] Avoid dangling llvm.assume calls in the cache"
Michael Kruse [Thu, 11 Feb 2021 18:03:20 +0000 (12:03 -0600)]
Revert "[AssumptionCache] Avoid dangling llvm.assume calls in the cache"

This reverts commit b7d870eae7fdadcf10d0f177faa7409c2e37d776 and the
subsequent fix "[Polly] Fix build after AssumptionCache change (D96168)"
(commit e6810cab09fcbc87b6e5e4d226de0810e2f2ea38).

It caused indeterminism in the output, such that e.g. the
polly-x86_64-linux buildbot failed accasionally.

3 years ago[libc++][format] Enable format_error on older compilers.
Mark de Wever [Thu, 11 Feb 2021 18:11:20 +0000 (19:11 +0100)]
[libc++][format] Enable format_error on older compilers.

It seems like modifying the header doesn't cause libc++ to be rebuild.
So the breakage of the previous commit didn't happen on my system.

This should fix the build of https://buildkite.com/mlir/mlir-core

3 years ago[flang] Fix typo in FlangConfig.cmake.in.
Leandro Vaz [Thu, 11 Feb 2021 18:08:42 +0000 (18:08 +0000)]
[flang] Fix typo in FlangConfig.cmake.in.

`find_package(Flang)` does not work as there is a missing `@` in the
FlangConfig.cmake.in file. This patch fixes the issue.

Reviewed By: thopre

Differential Revision: https://reviews.llvm.org/D96484

3 years ago[libc++][format] Improve Add basic_format_parse_context.
Mark de Wever [Thu, 11 Feb 2021 17:52:47 +0000 (18:52 +0100)]
[libc++][format] Improve Add basic_format_parse_context.

Add an additional guard to prevent building on older clang versions.

This should fix the build of https://buildkite.com/mlir/mlir-core

3 years ago[asan][test] Fix Linux/odr-violation.cpp on gcc
Fangrui Song [Thu, 11 Feb 2021 17:53:48 +0000 (09:53 -0800)]
[asan][test] Fix Linux/odr-violation.cpp on gcc

3 years ago[ARM] Single source vmovnt tests. NFC
David Green [Thu, 11 Feb 2021 17:50:11 +0000 (17:50 +0000)]
[ARM] Single source vmovnt tests. NFC

3 years ago[AMDGPU] Better selection of base offset when merging DS reads/writes
Jay Foad [Tue, 9 Feb 2021 18:11:10 +0000 (18:11 +0000)]
[AMDGPU] Better selection of base offset when merging DS reads/writes

When merging a pair of DS reads or writes needs to materialize the base
offset in a vgpr, choose a value that is aligned to as high a power of
two as possible. This maximises the chance that different pairs can use
the same base offset, in which case the base offset registers can be
commoned up by MachineCSE.

Differential Revision: https://reviews.llvm.org/D96421

3 years ago[TargetLowering][RISCV][AArch64][PowerPC] Enable BuildUDIV/BuildSDIV on illegal types...
Craig Topper [Thu, 11 Feb 2021 17:22:25 +0000 (09:22 -0800)]
[TargetLowering][RISCV][AArch64][PowerPC] Enable BuildUDIV/BuildSDIV on illegal types before type legalization if we can find a larger legal type that supports MUL.

If we wait until the type is legalized, we'll lose information
about the orginal type and need to use larger magic constants.
This gets especially bad on RISCV64 where i64 is the only legal
type.

I've limited this to simple scalar types so it only works for
i8/i16/i32 which are most likely to occur. For more odd types
we might want to do a small promotion to a type where MULH is legal
instead.

Unfortunately, this does prevent some urem/srem+seteq matching since
that still require legal types.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D96210

3 years ago[ELF] Resolve defined symbols before undefined symbols
Fangrui Song [Thu, 11 Feb 2021 17:41:46 +0000 (09:41 -0800)]
[ELF] Resolve defined symbols before undefined symbols

When parsing an object file, LLD interleaves undefined symbol resolution (which
may recursively fetch other lazy objects) with defined symbol resolution.

This may lead to surprising results, e.g. if an object file defines currently
undefined symbols and references another lazy symbol, we may interleave defined
symbols with the lazy fetch, potentially leading to the defined symbols
resolving to different files.

As an example, if both `a.a(a.o)` and `a.a(b.o)` define `foo` (not in COMDAT
group, or in different COMDAT groups) and `__profd_foo` (in COMDAT group
`__profd_foo`).  LLD may resolve `foo` to `a.a(a.o)` and `__profd_foo` to
`b.a(b.o)`, i.e. different files.

```
parse ArchiveFile a.a
  entry fetches a.a(a.o)
  parse ObjectFile a.o
    define entry
    define foo
    reference b
    b fetches a.a(b.o)
    parse ObjectFile b.o
      define prevailing __profd_foo
    define (ignored) non-prevailing __profd_foo
```

Assuming a set of interconnected symbols are defined all or none in several lazy
objects. Arguably making them resolve to the same file is preferable than making
them resolve to different files (some are lazy objects).

The main argument favoring the new behavior is the stability. The relative order
between a defined symbol and an undefined symbol does not change the symbol
resolution behavior.  Only the relative order between two undefined symbols can
affect fetching behaviors.

---

The real world case is reduced from a Fuchsia PGO usage: `a.a(a.o)` has a
constructor within COMDAT group C5 while `a.a(b.o)` has a constructor within
COMDAT group C2. Because they use different group signatures, they are not
de-duplicated. It is not entirely whether Clang behavior is entirely conforming.

LLD selects the PGO counter section (`__profd_*`) from `a.a(b.o)` and the
constructor section from `a.a(a.o)`. The `__profd_*` is a SHF_LINK_ORDER section
linking to its own non-prevailing constructor section, so LLD errors
`sh_link points to discarded section`. This patch fixes the error.

Differential Revision: https://reviews.llvm.org/D95985

3 years ago[gn build] port ed98676fa483
Nico Weber [Thu, 11 Feb 2021 17:41:29 +0000 (12:41 -0500)]
[gn build] port ed98676fa483

3 years agoSupport multi-configuration generators correctly in several config files
Stella Stamenova [Thu, 11 Feb 2021 17:32:20 +0000 (09:32 -0800)]
Support multi-configuration generators correctly in several config files

Multi-configuration generators (such as Visual Studio and Xcode) allow the specification of a build flavor at build time instead of config time, so the lit configuration files need to support that - and they do for the most part. There are several places that had one of two issues (or both!):

1) Paths had %(build_mode)s set up, but then not configured, resulting in values that would not work correctly e.g. D:/llvm-build/%(build_mode)s/bin/dsymutil.exe
2) Paths did not have %(build_mode)s set up, but instead contained $(Configuration) (which is the value for Visual Studio at configuration time, for Xcode they would have had the equivalent) e.g. "D:/llvm-build/$(Configuration)/lib".

This seems to indicate that we still have a lot of fragility in the configurations, but also that a number of these paths are never used (at least on Windows) since the errors appear to have been there a while.

This patch fixes the configurations and it has been tested with Ninja and Visual Studio to generate the correct paths. We should consider removing some of these settings altogether.

Reviewed By: JDevlieghere, mehdi_amini

Differential Revision: https://reviews.llvm.org/D96427

3 years ago[sanitizer] Fix suffix-log-path_test.c on arm-linux-gnu
Adhemerval Zanella [Thu, 11 Feb 2021 17:24:14 +0000 (14:24 -0300)]
[sanitizer] Fix suffix-log-path_test.c on arm-linux-gnu

The recent suffix-log-path_test.c checks for a full stacktrace and
since on some arm-linux-gnu configuration the slow unwinder is used
on default (when the compiler emits thumb code as default), it
requires -funwind-tables on tests.

It also seems to fix the issues disable by d025df3c1de.

Reviewed By: ostannard

Differential Revision: https://reviews.llvm.org/D96337

3 years ago[LV] Add tests showing suboptimal vectorization for narrow types.
Florian Hahn [Thu, 11 Feb 2021 16:42:35 +0000 (16:42 +0000)]
[LV] Add tests showing suboptimal vectorization for narrow types.

This patch adds additional test cases showing missing/sub-optimal
vectorization for loops which contain small and wider memory ops on
AArch64.

3 years ago[flang] Remove `LINK_WITH_FIR` cmake switch
Sourabh Singh Tomar [Wed, 10 Feb 2021 12:53:10 +0000 (18:23 +0530)]
[flang] Remove `LINK_WITH_FIR` cmake switch

Most components required for this are already there.

Build and Testing clean.
ninja check-flang

Reviewed By: clementval, tskeith

Differential Revision: https://reviews.llvm.org/D96411

3 years ago[RISCV] Add support loads, stores, and splats of vXi1 fixed vectors.
Craig Topper [Thu, 11 Feb 2021 17:13:15 +0000 (09:13 -0800)]
[RISCV] Add support loads, stores, and splats of vXi1 fixed vectors.

This refines how we determine which masks types are legal and adds
support for loads, stores, and all ones/zeros splats.

I left a fixme in store handling where I think we need to zero
extra bits if the type isn't a multiple of a byte. If I remember
right from X86 there was some case we could have a store of a
1, 2, or 4 bit mask and have a scalar zextload that then expected the
bits to be 0. Its tricky to zero the bits with RVV. We need to do
something like round VL up, zero a register, lower the VL back down,
then do a tail undisturbed move into the zero register. Another
option might be to generate a mask of 1/2/4 bits set with a VL of 8
and use that to mask off the bits.

Reviewed By: frasercrmck

Differential Revision: https://reviews.llvm.org/D96468

3 years ago[DAG] foldLogicOfSetCCs - Generalize and/or (setcc X, CMax, ne), (setcc X, CMin,...
Simon Pilgrim [Thu, 11 Feb 2021 16:32:00 +0000 (16:32 +0000)]
[DAG] foldLogicOfSetCCs - Generalize and/or (setcc X, CMax, ne), (setcc X, CMin, ne/eq) fold. NFCI.

Prep work to add support for non-uniform vectors - replace APInt values with using the SDValue ops directly.

3 years ago[libc++][format] Add basic_format_parse_context.
Mark de Wever [Tue, 2 Feb 2021 17:10:33 +0000 (18:10 +0100)]
[libc++][format] Add basic_format_parse_context.

Implements parts of:
- P0645 Text Formatting

Depends on D92214

Reland with changes:
The format header will only be compiled if the compiler used has support
for concepts. This should fix the issues with the initial version.

Differential Revision: https://reviews.llvm.org/D93166

3 years ago[gn build] Port 7e3b9aba609f
Nico Weber [Thu, 11 Feb 2021 16:54:51 +0000 (11:54 -0500)]
[gn build] Port 7e3b9aba609f

3 years agoRevert "[flang][fir][NFC] Move BoxType to TableGen type definition"
clementval [Thu, 11 Feb 2021 16:36:35 +0000 (11:36 -0500)]
Revert "[flang][fir][NFC] Move BoxType to TableGen type definition"

This reverts commit d96bb48f7874d636ffd0ee233e2d66fff0614b8f.

3 years agoBPF: Implement TTI.IntImmCost() properly
Yonghong Song [Wed, 10 Feb 2021 20:17:37 +0000 (12:17 -0800)]
BPF: Implement TTI.IntImmCost() properly

This patch implemented TTI.IntImmCost() properly.
Each BPF insn has 32bit immediate space, so for any immediate
which can be represented as 32bit signed int, the cost
is technically free. If an int cannot be presented as
a 32bit signed int, a ld_imm64 instruction is needed
and a TCC_Basic is returned.

This change is motivated when we observed that
several bpf selftests failed with latest llvm trunk, e.g.,
  #10/16 strobemeta.o:FAIL
  #10/17 strobemeta_nounroll1.o:FAIL
  #10/18 strobemeta_nounroll2.o:FAIL
  #10/19 strobemeta_subprogs.o:FAIL
  #96 snprintf_btf:FAIL

The reason of the failure is due to that
SpeculateAroundPHIsPass did aggressive transformation
which alters control flow for which currently verifer
cannot handle well. In llvm12, SpeculateAroundPHIsPass
is not called.

SpeculateAroundPHIsPass relied on TTI.getIntImmCost()
and TTI.getIntImmCostInst() for profitability
analysis. This patch implemented TTI.getIntImmCost()
properly for BPF backend which also prevented
transformation which caused the above test failures.

Differential Revision: https://reviews.llvm.org/D96448

3 years ago[Timer] On macOS count number of executed instructions
Alex Hoppen [Thu, 11 Feb 2021 16:25:27 +0000 (17:25 +0100)]
[Timer] On macOS count number of executed instructions

In addition to wall time etc. this should allow us to get less noisy
values for time measurements.

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D96049

3 years ago[flang][fir][NFC] Move BoxType to TableGen type definition
Valentin Clement [Thu, 11 Feb 2021 16:09:35 +0000 (11:09 -0500)]
[flang][fir][NFC] Move BoxType to TableGen type definition

This patch is a follow up of D96422 and move BoxType to TableGen.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96476

3 years ago[lldb] Fix that running a top level expression without a process fails with a cryptic...
Raphael Isemann [Thu, 11 Feb 2021 16:00:17 +0000 (17:00 +0100)]
[lldb] Fix that running a top level expression without a process fails with a cryptic error

Right now when running `expr --top-level -- void foo() {}`, LLDB just prints a cryptic
`error: Couldn't find $__lldb_expr() in the module` error. The reason for that is
that if we don't have a running process, we try to set our execution policy to always use the
IR interpreter (ExecutionPolicyNever) which works even without a process. However
that code didn't consider the special ExecutionPolicyTopLevel which we use for
top-level expressions. By changing the execution policy to ExecutionPolicyNever,
LLDB thinks we're actually trying to interpret a normal expression inside our
`$__lldb_expr` function and then fails when looking for it.

This just adds an exception for top-level expressions to that code and a bunch of tests.

Reviewed By: shafik

Differential Revision: https://reviews.llvm.org/D91723

3 years ago[mlir][LLVM] NFC - Refactor a lookupOrCreateFn to reuse common function creation.
Nicolas Vasilache [Thu, 11 Feb 2021 15:30:39 +0000 (15:30 +0000)]
[mlir][LLVM] NFC - Refactor a lookupOrCreateFn to reuse common function creation.

Differential revision: https://reviews.llvm.org/D96488

3 years ago[lldb] Don't emit a warning when using Objective-C getters in expressions
Raphael Isemann [Thu, 11 Feb 2021 15:17:44 +0000 (16:17 +0100)]
[lldb] Don't emit a warning when using Objective-C getters in expressions

Clang emits a warning when accessing an Objective-C getter but not using the result.
This gets triggered when just trying to print a getter value in the expression parser (where
Clang just sees a normal expression like `obj.getter` while parsing).

This patch just disables the warning in the expression parser (similar to what we do with
the C++ equivalent of just accessing a member variable but not doing anything with it).

Reviewed By: kastiglione

Differential Revision: https://reviews.llvm.org/D94307

3 years ago[ARM] Add CostKind to getMVEVectorCostFactor.
David Green [Thu, 11 Feb 2021 15:33:59 +0000 (15:33 +0000)]
[ARM] Add CostKind to getMVEVectorCostFactor.

This adds the CostKind to getMVEVectorCostFactor, so that it can
automatically account for CodeSize costs, where it returns a cost of 1
not the MVEFactor used for Throughput/Latency. This helps simplify the
caller code and allows us to get the codesize cost more correct in more
cases.

3 years agoStore the calculated constant expression value into the ConstantExpr object
Aaron Ballman [Thu, 11 Feb 2021 15:12:38 +0000 (10:12 -0500)]
Store the calculated constant expression value into the ConstantExpr object

With https://reviews.llvm.org/D63376, we began storing the APValue
directly into the ConstantExpr object so that we could reuse the
calculated value later. However, it missed a case when not in C++11
mode but the expression is known to be constant.

3 years ago[lldb] Log the actual expression result in UserExpression::Evaluate
Raphael Isemann [Thu, 11 Feb 2021 15:05:14 +0000 (16:05 +0100)]
[lldb] Log the actual expression result in UserExpression::Evaluate

This used to be a LLDB_LOGF call that used the printf %s syntax.
0ab109d43d9d8389fe686ee8df4a82634f246b55 changed it to LLDB_LOG but didn't
update this format string to use formatv's syntax so this just printed '%s'.

3 years agoImprove STRICT_FSETCC codegen in absence of no NaN
Thomas Preud'homme [Thu, 19 Nov 2020 23:38:42 +0000 (23:38 +0000)]
Improve STRICT_FSETCC codegen in absence of no NaN

As for SETCC, use a less expensive condition code when generating
STRICT_FSETCC if the node is known not to have Nan.

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D91972

3 years ago[lld][WebAssembly] Common superclass for input globals/events/tables
Andy Wingo [Thu, 11 Feb 2021 11:15:24 +0000 (12:15 +0100)]
[lld][WebAssembly] Common superclass for input globals/events/tables

This commit regroups commonalities among InputGlobal, InputEvent, and
InputTable into the new InputElement.  The subclasses are defined
inline in the new InputElement.h.  NFC.

Reviewed By: sbc100

Differential Revision: https://reviews.llvm.org/D94677

3 years ago[DebugInfo] Only perform TypeSize -> unsigned cast when necessary
Joe Ellis [Thu, 11 Feb 2021 09:53:54 +0000 (09:53 +0000)]
[DebugInfo] Only perform TypeSize -> unsigned cast when necessary

This commit moves a line in SelectionDAGBuilder::handleDebugValue to
avoid implicitly casting a TypeSize object to an unsigned earlier than
necessary. It was possible that we bail out of the loop before the value
is ever used, which means we could create a superfluous TypeSize
warning.

Reviewed By: DavidTruby

Differential Revision: https://reviews.llvm.org/D96423

3 years ago[mlir] make ModuleTranslation mapping fields private
Alex Zinenko [Wed, 10 Feb 2021 18:21:45 +0000 (19:21 +0100)]
[mlir] make ModuleTranslation mapping fields private

ModuleTranslation contains multiple fields that keep track of the mappings
between various MLIR and LLVM IR components. The original ModuleTranslation
extension model was based on inheritance, with these fields being protected and
thus accessible in the ModuleTranslation and derived classes. The
inheritance-based model doesn't scale to translation of more than one derived
dialect and will be progressively replaced with a more flexible one based on
dialect interfaces and a translation state that is separate from
ModuleTranslation. This change prepares the replacement by making the mappings
private and providing public methods to access them.

Depends On D96436

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96437

3 years ago[mlir] Make JitRunnerMain main take a DialectRegistry
Alex Zinenko [Wed, 10 Feb 2021 18:21:16 +0000 (19:21 +0100)]
[mlir] Make JitRunnerMain main take a DialectRegistry

Historically, JitRunner has been registering all available dialects with the
context and depending on them without the real need. Make it take a registry
that contains only the dialects that are expected in the input and stop linking
in all dialects.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96436

3 years ago[Attr] Apply GNU-style attributes to expression statements
Valeriy Savchenko [Mon, 21 Dec 2020 09:05:14 +0000 (12:05 +0300)]
[Attr] Apply GNU-style attributes to expression statements

Before this commit, expression statements could not be annotated
with statement attributes.  Whenever parser found attribute, it
unconditionally assumed that it was followed by a declaration.
This not only doesn't allow expression attributes to have attributes,
but also produces spurious error diagnostics.

In order to maintain all previously compiled code, we still assume
that GNU attributes are followed by declarations unless ALL of those
are statement attributes.  And even in this case we are not forcing
the parser to think that it should parse a statement, but rather
let it proceed as if no attributes were found.

Differential Revision: https://reviews.llvm.org/D93630

3 years ago[lldb/test] Automatically find debug servers to test
Pavel Labath [Thu, 4 Feb 2021 19:53:15 +0000 (20:53 +0100)]
[lldb/test] Automatically find debug servers to test

Our test configuration logic assumes that the tests can be run either
with debugserver or with lldb-server. This is not entirely correct,
since lldb server has two "personalities" (platform server and debug
server) and debugserver is only a replacement for the latter.

A consequence of this is that it's not possible to test the platform
behavior of lldb-server on macos, as it is not possible to get a hold of
the lldb-server binary.

One solution to that would be to duplicate the server configuration
logic to be able to specify both executables. However, that seems
excessively redundant.

A well-behaved lldb should be able to find the debug server on its own,
and testing lldb with a different (lldb-|debug)server does not seem very
useful (even in the out-of-tree debugserver setup, we copy the server
into the build tree to make it appear "real").

Therefore, this patch deletes the configuration altogether and changes
the low-level server retrieval functions to be able to both lldb-server
and debugserver paths. They do this by consulting the "support
executable" directory of the lldb under test.

Differential Revision: https://reviews.llvm.org/D96202

3 years ago[ARM] Copy-paste error in ARMv87a architecture definition.
Simon Tatham [Thu, 11 Feb 2021 13:35:55 +0000 (13:35 +0000)]
[ARM] Copy-paste error in ARMv87a architecture definition.

In the tablegen architecture definition, the Name field for the
ARMv87a record read "ARMv86a". All the other records contain their own
names.

Corrected it to "ARMv87a", and added the necessary value in
ARMArchEnum for that to refer to.

Reviewed By: pratlucas

Differential Revision: https://reviews.llvm.org/D96493

3 years ago[OpenCL] Fix missing const attributes for get_image_ builtins
Sven van Haastregt [Thu, 11 Feb 2021 13:05:26 +0000 (13:05 +0000)]
[OpenCL] Fix missing const attributes for get_image_ builtins

Various get_image builtin function declarations did not have the const
attribute.  Bring the const attributes of `-fdeclare-opencl-builtins`
more in sync with `opencl-c.h`.

3 years agoReturn "[Codegenprepare][X86] Use usub with overflow opt for IV increment"
Max Kazantsev [Thu, 11 Feb 2021 12:25:30 +0000 (19:25 +0700)]
Return "[Codegenprepare][X86] Use usub with overflow opt for IV increment"

The patch did not account for one corner case where cmp does not dominate
the loop latch. This patch adds this check, hopefully it's cheap because
the CFG does not change during the transform, so DT queries should be
executed quickly.

If you see compile time slowness from this, please revert.

Differential Revision: https://reviews.llvm.org/D96119

3 years ago[gn build] Port b4993cf54d7f
Nico Weber [Thu, 11 Feb 2021 12:20:21 +0000 (07:20 -0500)]
[gn build] Port b4993cf54d7f

3 years ago[Test] Add test that exposed failure on reverted patch in codegen
Max Kazantsev [Thu, 11 Feb 2021 12:08:55 +0000 (19:08 +0700)]
[Test] Add test that exposed failure on reverted patch in codegen

3 years agoCorrect swift_bridge duplicate attribute warning logic
Aaron Ballman [Thu, 11 Feb 2021 12:11:27 +0000 (07:11 -0500)]
Correct swift_bridge duplicate attribute warning logic

The swift_bridge attribute warns when the attribute is applied multiple
times to the same declaration. However, it warns about the arguments
being different to the attribute without ever checking if the arguments
actually are different. If the arguments are different, diagnose,
otherwise silently accept the code. Either way, drop the duplicated
attribute.

3 years ago[ARM] Change getScalarizationOverhead overload used in gather costs. NFC
David Green [Thu, 11 Feb 2021 11:58:55 +0000 (11:58 +0000)]
[ARM] Change getScalarizationOverhead overload used in gather costs. NFC

This changes which of the getScalarizationOverhead overloads is used in
the gather/scatter cost to use the base variant directly, not relying on
the version using heuristics on the number of args with no args
provided. It should still produce the same costs for scalarized
gathers/scatters.

3 years ago[test][Dexter] Fix test failure if space in python path
James Henderson [Wed, 10 Feb 2021 15:14:32 +0000 (15:14 +0000)]
[test][Dexter] Fix test failure if space in python path

The '%dexter_regression_test' substitution was missing quotes around the
python executable, unlike other substitutions of a similar nature in the
file. This changes fixes the issue.

Differential Revision: https://reviews.llvm.org/D96420

Reviewed by: jmorse, aganea

3 years ago[flang][driver] Move standard macro predefs to a dedicated method (nfc)
Andrzej Warzynski [Thu, 11 Feb 2021 11:37:24 +0000 (11:37 +0000)]
[flang][driver] Move standard macro predefs to a dedicated method (nfc)

This patch just addresses one of the outstanding TODOs. More
specifically, it moves all the outstanding standard macro predefinitions
from `SetDefaultFortranOpts` to `setDefaultPredefinitions`. This
dedicated method for standard macro predefs was introduced in:
  * https://reviews.llvm.org/D96032

3 years ago[AMDGPU] Move kill lowering to WQM pass and add live mask tracking
Carl Ritson [Wed, 10 Feb 2021 03:56:45 +0000 (12:56 +0900)]
[AMDGPU] Move kill lowering to WQM pass and add live mask tracking

Move implementation of kill intrinsics to WQM pass. Add live lane
tracking by updating a stored exec mask when lanes are killed.
Use live lane tracking to enable early termination of shader
at any point in control flow.

Reviewed By: piotr

Differential Revision: https://reviews.llvm.org/D94746

3 years agoNFC: Migrate CodeMetrics to work on InstructionCost
Sander de Smalen [Thu, 11 Feb 2021 10:25:14 +0000 (10:25 +0000)]
NFC: Migrate CodeMetrics to work on InstructionCost

This patch migrates cost values and arithmetic to work on InstructionCost.
When the interfaces to TargetTransformInfo are changed, any InstructionCost
state will propagate naturally.

See this patch for the introduction of the type: https://reviews.llvm.org/D91174
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D96030

3 years agoRevert "[Codegenprepare][X86] Use usub with overflow opt for IV increment"
Max Kazantsev [Thu, 11 Feb 2021 10:51:40 +0000 (17:51 +0700)]
Revert "[Codegenprepare][X86] Use usub with overflow opt for IV increment"

This reverts commit 3d15b7e7dfc3e2cefc47791d1e8d95909e937842.

We've found an internal failure, need to analyze.

3 years ago[ARM] Remove dead mov's in preheader of tail predicated loops
David Green [Thu, 11 Feb 2021 10:48:20 +0000 (10:48 +0000)]
[ARM] Remove dead mov's in preheader of tail predicated loops

With t2DoLoopDec we can be left with some extra MOV's in the preheaders
of tail predicated loops. This removes them, in the same way we remove
other dead variables.

Differential Revision: https://reviews.llvm.org/D91857

3 years ago[clang][index] report references from unreslovedLookupExpr.
Haojian Wu [Fri, 29 Jan 2021 13:09:14 +0000 (14:09 +0100)]
[clang][index] report references from unreslovedLookupExpr.

Fix https://github.com/clangd/clangd/issues/675

Differential Revision: https://reviews.llvm.org/D96262

3 years ago[CodeComplete] Member completion: heuristically resolve some dependent base exprs
Sam McCall [Tue, 9 Feb 2021 23:11:35 +0000 (00:11 +0100)]
[CodeComplete] Member completion: heuristically resolve some dependent base exprs

Today, inside a template, you can get completion for:

Foo<T> t;
t.^

t has dependent type Foo<T>, and we use the primary template to find its members.
However we also want this to work:

t.foo.bar().^

The type of t.foo.bar() is DependentTy, so we attempt to resolve using similar
heuristics (e.g. primary template).

Differential Revision: https://reviews.llvm.org/D96376

3 years ago[DebugInfo] Prevent inlining in NRVO-string test cases
Raphael Isemann [Thu, 11 Feb 2021 09:31:15 +0000 (10:31 +0100)]
[DebugInfo] Prevent inlining in NRVO-string test cases

Since the new pass manager has been enabled by default these tests had their
-O1 variations failing due to the tested functions being inlined. This just
adds no_inline to the respective code similar to what we did in other
tests (e.g. aa56b30014d96700b2fc945be11866789f341d38 ).

3 years ago[OpenCL] Add cl_khr_subgroup_extended_types to TableGen BIFs
Sven van Haastregt [Thu, 11 Feb 2021 09:32:42 +0000 (09:32 +0000)]
[OpenCL] Add cl_khr_subgroup_extended_types to TableGen BIFs

Add the builtin functions brought by the
cl_khr_subgroup_extended_types extension to
`-fdeclare-opencl-builtins`.

Differential Revision: https://reviews.llvm.org/D96279

3 years ago[TTI] Change TargetTransformInfo::getMinimumVF to return ElementCount
Sander de Smalen [Thu, 11 Feb 2021 08:50:08 +0000 (08:50 +0000)]
[TTI] Change TargetTransformInfo::getMinimumVF to return ElementCount

This will be needed in the loop-vectorizer where the minimum VF
requested may be a scalable VF. getMinimumVF now takes an additional
operand 'IsScalableVF' that indicates whether a scalable VF is required.

Reviewed By: kparzysz, rampitec

Differential Revision: https://reviews.llvm.org/D96020

3 years ago[mlir][gpu] Allow all dialects in SCF to GPU conversion.
Stephan Herhut [Thu, 11 Feb 2021 08:41:47 +0000 (09:41 +0100)]
[mlir][gpu] Allow all dialects in SCF to GPU conversion.

With the standard dialect being split up, the set of dialects that are
used when converting to GPU is growing. This change modifies the
SCFToGpu pass to allow all operations inside launch bodies.

Differential Revision: https://reviews.llvm.org/D96480

3 years agoExpand masked mem intrinsics correctly wrt big-endian
Markus Lavin [Thu, 11 Feb 2021 08:59:52 +0000 (08:59 +0000)]
Expand masked mem intrinsics correctly wrt big-endian

Need to take endianness into account when doing vector to scalar casts
such as %bc = bitcast <8 x i1> %v to i8
Companion commit for https://reviews.llvm.org/D94867
Upload in response to
https://lists.llvm.org/pipermail/llvm-dev/2021-January/147862.html
Attempting to document the actual memory layout rules for vectors in
https://reviews.llvm.org/D94964

Differential Revision: https://reviews.llvm.org/D94765

3 years ago[ARM] Make a BE predicate bitcast consistent with the rest of llvm
David Green [Mon, 8 Feb 2021 11:37:17 +0000 (11:37 +0000)]
[ARM] Make a BE predicate bitcast consistent with the rest of llvm

We were storing predicate registers, such as a <8 x i1>, in the opposite
order to how the rest of llvm expects. This actually turns out to be
correct for the one place that usually uses it - the
ScalarizeMaskedMemIntrin pass, but only because the pass was incorrect
itself. This fixes the order so that bits are stored in the opposite
order and bitcasts work as expected. This allows the Scalarization pass
to be fixed, as in https://reviews.llvm.org/D94765.

Differential Revision: https://reviews.llvm.org/D94867

3 years ago[Syntax] Remove a strict valid source location assertion for TypeLoc.
Haojian Wu [Mon, 8 Feb 2021 14:04:48 +0000 (15:04 +0100)]
[Syntax] Remove a strict valid source location assertion for TypeLoc.

The EndLoc of a type loc can be invalid for broken code.

Also extend the existing test to support error code with `error-ok`
annotation.

Differential Revision: https://reviews.llvm.org/D96261

3 years ago[Syntax] NFC, Simplify a test with annotations
Haojian Wu [Mon, 8 Feb 2021 13:44:02 +0000 (14:44 +0100)]
[Syntax] NFC, Simplify a test with annotations

3 years ago[LoopVectorize] NFC: Change selectVectorizationFactor to work on ElementCount.
Sander de Smalen [Thu, 11 Feb 2021 08:37:55 +0000 (08:37 +0000)]
[LoopVectorize] NFC: Change selectVectorizationFactor to work on ElementCount.

This patch is NFC and changes occurrences of `unsigned Width`
and `unsigned i` to work on type ElementCount instead.

This patch is a preparatory patch with the ultimate goal of making
`computeMaxVF()` return both a max fixed VF and a max scalable VF,
so that `selectVectorizationFactor()` can pick the most cost-effective
vectorization factor.

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D96019

3 years ago[clang-check] Add tokens-dump in clang-check.
Haojian Wu [Thu, 11 Feb 2021 08:25:17 +0000 (09:25 +0100)]
[clang-check] Add tokens-dump in clang-check.

It is useful for syntax-tree developement.

Reviewed By: kbobyrev

Differential Revision: https://reviews.llvm.org/D96017

3 years ago[AArch64][SVE] Asm: Fix supported immediates for DUP/CPY
Sander de Smalen [Thu, 11 Feb 2021 08:14:15 +0000 (08:14 +0000)]
[AArch64][SVE] Asm: Fix supported immediates for DUP/CPY

This patch fixes an issue in the implementation of DUP/CPY where certain
immediates were not accepted. Immediates should be interpreted as a two's
complement encoding of a value that fits the number of bits of the element
type.

          mov z0.b, p0/z, #127
     <=>  mov z0.b, p0/z, #-129
     <=>  mov z0.b, p0/z, #0xffffffffffffff7f

This behaviour is in line with the GNU assembler.

Reviewed By: c-rhodes

Differential Revision: https://reviews.llvm.org/D94776

3 years ago[mlir][Linalg] Add conv ops with TF definition.
Hanhan Wang [Thu, 11 Feb 2021 06:58:58 +0000 (22:58 -0800)]
[mlir][Linalg] Add conv ops with TF definition.

The dimension order of a filter in tensorflow is
[filter_height, filter_width, in_channels, out_channels], which is different
from current definition. The current definition follows TOSA spec. Add TF
version conv ops to .tc, so we do not have to insert a transpose op around a
conv op.

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D96038

3 years ago[NFC] Don't pass redundant arguments
Arthur Eubanks [Thu, 11 Feb 2021 06:06:49 +0000 (22:06 -0800)]
[NFC] Don't pass redundant arguments

Some parameters were already part of the Config passed in.

3 years agoNFC; fix typo in comment
Sanjoy Das [Thu, 11 Feb 2021 05:34:29 +0000 (21:34 -0800)]
NFC; fix typo in comment

This should have gone in with a76761cf0deeb223ca1c0b0e5ee68cfcd436e0c4.

3 years agoNFC comment-only cleanups
Sanjoy Das [Thu, 11 Feb 2021 05:18:37 +0000 (21:18 -0800)]
NFC comment-only cleanups

 - Remove leftover comment from de2568aab819f
 - Fix a typo in a comment

3 years ago[Codegenprepare][X86] Use usub with overflow opt for IV increment
Max Kazantsev [Thu, 11 Feb 2021 04:57:23 +0000 (11:57 +0700)]
[Codegenprepare][X86] Use usub with overflow opt for IV increment

Function `replaceMathCmpWithIntrinsic` artificially limits the scope
of the optimization, setting a requirement of two instructions be in
the same block, due to two reasons:
- usage of DT for more general check is costly in terms of compile time;
- risk of creating a new value that lives through multiple blocks.

Because of this, two semantically equivalent tests may be or not be the
subject of this opt depending on where the binary operation is located.
See `test/CodeGen/X86/usub_inc_iv.ll` for motivation

There is one important particular case where this limitation is  too strict:
it is when the binary operation is the increment of the induction variable.
As result, the application of this opt becomes fragile and highly reliant on
where other passes decide to place IV increment. In most cases, they place
it in the end of the latch block, killing the opt opportunity (when in fact it
does not matter where to insert the actual instruction).

This patch handles this particular case separately.
- The detector does not use dom tree and has constant cost;
- The value of IV or IV.next lives through all loop in any case, so this should not
  create a new unexpected long-living value.

As result, the transform becomes more robust. It also seems to lead to
better code generation in some cases (see `test/CodeGen/X86/lsr-loop-exit-cond.ll`).

Differential Revision: https://reviews.llvm.org/D96119
Reviewed By: spatel, reames

3 years ago[Test] Add negative tests where usub optimization should not apply
Max Kazantsev [Thu, 11 Feb 2021 04:41:31 +0000 (11:41 +0700)]
[Test] Add negative tests where usub optimization should not apply

3 years ago[clang][cli] Fix gcc warning (NFC)
Yang Fan [Thu, 11 Feb 2021 03:03:46 +0000 (11:03 +0800)]
[clang][cli] Fix gcc warning (NFC)

GCC warning:
```
/llvm-project/clang/lib/Frontend/TestModuleFileExtension.cpp:131:20: warning: ‘llvm::raw_ostream& clang::operator<<(llvm::raw_ostream&, const clang::TestModuleFileExtension&)’ has not been declared within ‘clang’
  131 | llvm::raw_ostream &clang::operator<<(llvm::raw_ostream &OS,
      |                    ^~~~~
In file included from /llvm-project/clang/lib/Frontend/TestModuleFileExtension.cpp:8:
/llvm-project/clang/lib/Frontend/TestModuleFileExtension.h:75:3: note: only here as a ‘friend’
   75 |   operator<<(llvm::raw_ostream &OS, const TestModuleFileExtension &Extension);
      |   ^~~~~~~~
```

3 years ago[AMDGPU] Refactor MIMG tables to better handle hardware variants
Carl Ritson [Thu, 11 Feb 2021 02:18:44 +0000 (11:18 +0900)]
[AMDGPU] Refactor MIMG tables to better handle hardware variants

Add mimgopc object to represent the opcode allowing different
opcodes for different hardware variants.
This enables image_atomic_fcmpswap, image_atomic_fmin, and
image_atomic_fmax on GFX10

Reviewed By: foad, rampitec

Differential Revision: https://reviews.llvm.org/D96309

3 years ago[Polly] Hide Simplify implementation from header. NFC.
Michael Kruse [Thu, 11 Feb 2021 03:59:25 +0000 (21:59 -0600)]
[Polly] Hide Simplify implementation from header. NFC.

Move SimplifiyVisitor from Simplify.h to Simplify.cpp. It is not
relevant for applying the pass in either the NewPM or the legacyPM.
Rename it to SimplifyImpl to account for that.

This is possible due its state not being necessary to be preserved
between runs and thefore SimplifyImpl not needed to be held in the
pass object. Instead, SimplifyImpl is only instatiated for the
current Scop. In the NewPM as a function-local variable, and in the
legacy PM inside a llvm::Optional object because the state must be
preserved between the printScop (invoked by opt -analyze) and the most
recent runOnScop calls.

3 years ago[AsmPrinter] Use range-based for loops (NFC)
Kazu Hirata [Thu, 11 Feb 2021 04:01:21 +0000 (20:01 -0800)]
[AsmPrinter] Use range-based for loops (NFC)

3 years ago[TableGen] Use ListSeparator (NFC)
Kazu Hirata [Thu, 11 Feb 2021 04:01:20 +0000 (20:01 -0800)]
[TableGen] Use ListSeparator (NFC)

3 years ago[GCOV] Drop unnecessary const from return types (NFC)
Kazu Hirata [Thu, 11 Feb 2021 04:01:18 +0000 (20:01 -0800)]
[GCOV] Drop unnecessary const from return types (NFC)

Identified with readability-const-return-type.

3 years ago[X86] Simplify patterns for avx512 vpcmp. NFC
Craig Topper [Thu, 11 Feb 2021 02:57:13 +0000 (18:57 -0800)]
[X86] Simplify patterns for avx512 vpcmp. NFC

This removes the commuted PatFrags that only existed to carry
an SDNodeXForm in its OperandTransform field. We know all the places
that need to use the commuted SDNodeXForm and there is one transform
shared by signed and unsigned compares. So just hardcode the
the SDNodeXForm where it is needed and use the non commuted PatFrag
in the pattern.

I think when I wrote this I thought the SDNodeXForm name had to
match what is in the PatFrag that is being used. But that's not
true. The OperandTransform is only used when the PatFrag is used
in an instruction pattern and not a separate Pat pattern. All
the commuted cases are Pat patterns.

3 years ago[Polly] Avoid "using namespace llvm" in public headers. NFC.
Michael Kruse [Thu, 11 Feb 2021 02:07:58 +0000 (20:07 -0600)]
[Polly] Avoid "using namespace llvm" in public headers. NFC.

"using namespace" pollutes the namespace of every file that includes
such a header and universally considered a bad thing. Even the variant

    namespace polly {
      using namespace llvm;
    }

(previously used by LoopGenerators.h) imports more symbols than the file
is in control of. The header may include a fixed set of files from LLVM,
but the header itself may by be included together with other headers
from LLVM. For instance, LLVM's MemorySSA.h and Polly's ScopInfo.h both
declare a class 'MemoryAccess' which may conflict.

Instead of prefixing everything in Polly's header files, this patch adds
'using' statements to import only the symbols that are actually
referenced in Polly. This approach is also used by MLIR to import
commonly used symbols into the mlir namespace.

This patch also puts the symbols declared in IslNodeBuilder.h into the
Polly namespace to also be able to use the imported symbols.

3 years ago[flang][fir] Fix Werror build failure after D96422
Valentin Clement [Thu, 11 Feb 2021 02:42:50 +0000 (21:42 -0500)]
[flang][fir] Fix Werror build failure after D96422

3 years ago[analyzer] Update static analyzer to be support sarif-html
Daniel Hwang [Thu, 11 Feb 2021 02:24:37 +0000 (18:24 -0800)]
[analyzer] Update static analyzer to be support sarif-html

Updates static analyzer to be able to generate both sarif and html
output in a single run similar to plist-html.

Differential Revision: https://reviews.llvm.org/D96389

3 years ago[RISCV] More whitespace and comment typo fixes in RISCVInstrInfoC.td
Jessica Clarke [Thu, 11 Feb 2021 02:23:09 +0000 (02:23 +0000)]
[RISCV] More whitespace and comment typo fixes in RISCVInstrInfoC.td

3 years ago[RISCV] Fix whitespace in RISCVInstrInfoC.td
Jessica Clarke [Thu, 11 Feb 2021 02:23:09 +0000 (02:23 +0000)]
[RISCV] Fix whitespace in RISCVInstrInfoC.td

3 years ago[mlir][sparse] reduce tensor dimensions in sparse test
Aart Bik [Thu, 11 Feb 2021 01:56:17 +0000 (17:56 -0800)]
[mlir][sparse] reduce tensor dimensions in sparse test

Rationale:
BuiltinTypes.cpp observed overflow when computing size of
tensor<100x200x300x400x500x600x700x800xf32>.

Reviewed By: stellaraccident

Differential Revision: https://reviews.llvm.org/D96475

3 years ago[RISCV] Use OperandTransform field of ImmLeaf to slightly simplify a couple bitmanip...
Craig Topper [Thu, 11 Feb 2021 01:34:05 +0000 (17:34 -0800)]
[RISCV] Use OperandTransform field of ImmLeaf to slightly simplify a couple bitmanip patterns. NFC

This binds the SDNodeXForm to the ImmLeaf so we only need to mention
the ImmLeaf in both the input and output pattern.

3 years agoEnable `Pass::initialize()` to fail by returning a LogicalResult
Mehdi Amini [Thu, 11 Feb 2021 01:36:40 +0000 (01:36 +0000)]
Enable `Pass::initialize()` to fail by returning a LogicalResult

Differential Revision: https://reviews.llvm.org/D96474

3 years ago[flang][fir][NFC] Move ShapeShiftType to TableGen type definition
Valentin Clement [Thu, 11 Feb 2021 01:32:16 +0000 (20:32 -0500)]
[flang][fir][NFC] Move ShapeShiftType to TableGen type definition

This patch is a follow up of D96422 and move the ShapeShiftType to
TableGen.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96442

3 years ago[flang] Cope with specific procedures with same name as generic
peter klausler [Thu, 11 Feb 2021 00:28:34 +0000 (16:28 -0800)]
[flang] Cope with specific procedures with same name as generic

When accessing a specific procedure of a USE-associated generic
interface, we need to allow for the case in which that specific
procedure has the same name as the generic when testing for
its availability in the current scope.

Differential Revision: https://reviews.llvm.org/D96467

3 years agoDiagnose unhandled cases in DW_OP_deref
Adrian Prantl [Wed, 10 Feb 2021 23:50:52 +0000 (15:50 -0800)]
Diagnose unhandled cases in DW_OP_deref

3 years ago[sanitizer] Move MSan's chained_origin_depot to sanitizer_common
Jianzhou Zhao [Tue, 9 Feb 2021 05:47:12 +0000 (05:47 +0000)]
[sanitizer] Move MSan's chained_origin_depot to sanitizer_common

https://reviews.llvm.org/D95835 implements origin tracking for DFSan.
It reuses the chained origin depot of MSan.

This change moves the utility to sanitizer_common to share between
MSan and DFSan.

Reviewed-by: eugenis, morehouse
Differential Revision: https://reviews.llvm.org/D96319

3 years ago[flang] Manage per-specification-part state better
peter klausler [Thu, 11 Feb 2021 00:25:11 +0000 (16:25 -0800)]
[flang] Manage per-specification-part state better

Some state in name resolution is stored in the DeclarationVisitor
instance and processed at the end of the specification part.
This state needs to accommodate nested specification parts, namely
the ones that can be nested in a subroutine or function interface
body.

Differential Revision: https://reviews.llvm.org/D96466

3 years ago[NFC][libunbind] Fix Sphinx error during CMake invocation
xgupta [Thu, 11 Feb 2021 01:19:13 +0000 (06:49 +0530)]
[NFC][libunbind] Fix Sphinx error during CMake invocation

An error has occurred when I build libunwind with -DLLVM_BUILD_DOCS=ON.

Reviewed By: #libunwind, compnerd

Differential Revision: https://reviews.llvm.org/D96107

3 years ago[Draft] [examples] Move llvm/examples/OCaml-Kaleidoscope/ to llvm-archive
xgupta [Mon, 8 Feb 2021 22:50:02 +0000 (04:20 +0530)]
[Draft] [examples] Move llvm/examples/OCaml-Kaleidoscope/ to llvm-archive

3 years agoFix CMake configuration for MLIR unittests
Mehdi Amini [Thu, 11 Feb 2021 01:17:24 +0000 (01:17 +0000)]
Fix CMake configuration for MLIR unittests

The CMake changes in 2aa1af9b1da to make it possible to build MLIR as a
standalone project unfortunately disabled all unit-tests from the
regular in-tree build.

3 years agoValueMapper: Rename RF_MoveDistinctMDs => RF_ReuseAndMutateDistinctMDs, NFC
Duncan P. N. Exon Smith [Wed, 10 Feb 2021 23:23:53 +0000 (15:23 -0800)]
ValueMapper: Rename RF_MoveDistinctMDs => RF_ReuseAndMutateDistinctMDs, NFC

Rename the `RF_MoveDistinctMDs` flag passed into `MapValue` and
`MapMetadata` to `RF_ReuseAndMutateDistinctMDs` in order to more
precisely describe its effect and clarify the header documentation.

Found this while helping to investigate PR48841, which pointed out an
unsound use of the flag in `CloneModule()`. For now I've just added a
FIXME there, but I'm hopeful that the new (more precise) name will
prevent other similar errors.

3 years ago[flang][fir][NFC] Move ShapeType to TableGen type definition
Valentin Clement [Thu, 11 Feb 2021 00:25:35 +0000 (19:25 -0500)]
[flang][fir][NFC] Move ShapeType to TableGen type definition

This is the first patch of a serie to move FIR types to TableGen format as suggested in D96172.
This patch is setting up the files for FIR types and move the ShapeType to TableGen.

As discussed with @schweitz, I'm taking over this task to help the FIR upstreaming effort.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96422