platform/upstream/llvm.git
20 months ago[gn build] port 7059a6c32cfa
Nico Weber [Fri, 18 Nov 2022 11:48:07 +0000 (06:48 -0500)]
[gn build] port 7059a6c32cfa

20 months ago[AArch64][SME]: Use SVE mov instruction for FPR128 registers in streaming-compatible...
Hassnaa Hamdi [Thu, 17 Nov 2022 15:27:45 +0000 (15:27 +0000)]
[AArch64][SME]: Use SVE mov instruction for FPR128 registers in streaming-compatible mode.

1- in streaming mode, use SVE OR/mov instruction instead of NEON OR,
   during copying phyReg -AArch64InstrInfo::copyPhysReg-.
2- add testing file:
   register-mov.ll

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

20 months ago[AMDGPU][GFX11][NFC] Refactor VOPD operands handling (part 2)
Dmitry Preobrazhensky [Fri, 18 Nov 2022 11:12:22 +0000 (14:12 +0300)]
[AMDGPU][GFX11][NFC] Refactor VOPD operands handling (part 2)

Rename interface functions and operands to make code clearer.

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

20 months ago[AMDGPU] Fix PreRARematStage::sinkTriviallyRematInsts region boundary update after...
Valery Pykhtin [Thu, 17 Nov 2022 19:19:04 +0000 (20:19 +0100)]
[AMDGPU] Fix PreRARematStage::sinkTriviallyRematInsts region boundary update after sinking.

First boundary of a region wasn't updated when a sinked instruction was added first into the region.

Reviewed By: vangthao

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

20 months ago[mlir] GreedyPatternRewriter: Reprocess modified ops
Matthias Springer [Fri, 18 Nov 2022 10:18:19 +0000 (11:18 +0100)]
[mlir] GreedyPatternRewriter: Reprocess modified ops

Ops that were modifed in-place (`finalizeRootUpdate` was called) should be reprocessed by the GreedyPatternRewriter. This is currently not happening with `GreedyRewriteConfig::maxIterations = 1`.

Note: If your project goes into an infinite loop because of this change, you likely have one or multiple faulty patterns that modify the same operations in-place (`updateRootInplace`) indefinitely.

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

20 months ago[DAG] Allow folding AND of anyext masked_load with >1 user to zext version
Benjamin Maxwell [Fri, 18 Nov 2022 10:14:55 +0000 (10:14 +0000)]
[DAG] Allow folding AND of anyext masked_load with >1 user to zext version

This now allows folding an AND of a anyext masked_load to a
zext_masked_load even if the masked load has multiple users.  Doing is
eliminates some redundant ANDs/MOVs for certain AArch64 SVE code.

I'm not sure if there's any cases where doing this could negatively the
other users of the masked_load.  Looking at other optimizations of
masked loads, most don't apply if the load is used more than once, so it
doesn't look like this would interfere.

Reviewed By: c-rhodes

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

20 months ago[Driver] exclude recently added tests from Windows
Matt Jacobson [Fri, 18 Nov 2022 10:19:53 +0000 (05:19 -0500)]
[Driver] exclude recently added tests from Windows

20 months ago[Assignment Tracking][15/*] Account for assignment tracking in simplifycfg
OCHyams [Fri, 18 Nov 2022 10:07:30 +0000 (10:07 +0000)]
[Assignment Tracking][15/*] Account for assignment tracking in simplifycfg

The Assignment Tracking debug-info feature is outlined in this RFC:

https://discourse.llvm.org/t/
rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir

Update simplifycfg:
sinkLastInstruction - preserve debug use-before-defs.

SpeculativelyExecuteBB - replace the value component of dbg.assign intrinsics
when stores are hoisted and merged using a select, and don't delete them.

Reviewed By: jmorse

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

20 months ago[mlir][SubElementInterfaces] Add a recursivelyReplaceElementsIn helper to AttrTypeRep...
River Riddle [Fri, 18 Nov 2022 04:51:38 +0000 (20:51 -0800)]
[mlir][SubElementInterfaces] Add a recursivelyReplaceElementsIn helper to AttrTypeReplacer

This somewhat improves the ergonomics when replacing recursively within
a set of IR.

20 months ago[mlir][AsmPrinter] Allow explicitly disabling debug info
River Riddle [Fri, 18 Nov 2022 04:44:27 +0000 (20:44 -0800)]
[mlir][AsmPrinter] Allow explicitly disabling debug info

This adds an `enable` flag to OpPrintingFlags::enableDebugInfo
that allows for overriding any command line flags for debug printing,
and matches the format that we use for other `enableBlah` API.

20 months ago[mlir] Fix ordering of intermixed attribute/type aliases
River Riddle [Thu, 17 Nov 2022 00:26:18 +0000 (16:26 -0800)]
[mlir] Fix ordering of intermixed attribute/type aliases

We properly order dependencies between attribute/type aliases,
but we currently always print attribute aliases separately from type
aliases. This creates problems if an attribute wants to use a type
alias during printing.

This commit refactors alias collection such that attribute/type aliases
are collected together and printed together.

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

20 months ago[Assignment Tracking][14/*] Account for assignment tracking in instcombine
OCHyams [Fri, 18 Nov 2022 09:22:29 +0000 (09:22 +0000)]
[Assignment Tracking][14/*] Account for assignment tracking in instcombine

The Assignment Tracking debug-info feature is outlined in this RFC:

https://discourse.llvm.org/t/
rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir

Most of the updates here are just to ensure DIAssignID attachments are
maintained and propagated correctly.

Reviewed By: jmorse

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

20 months ago[mlir][Bazel] Add DebugImporter sources to build target.
Adrian Kuegel [Fri, 18 Nov 2022 09:18:37 +0000 (10:18 +0100)]
[mlir][Bazel] Add DebugImporter sources to build target.

20 months ago[clang] Fix assert message
serge-sans-paille [Fri, 18 Nov 2022 09:10:21 +0000 (10:10 +0100)]
[clang] Fix assert message

20 months ago[flang] Lower ArrayRef to hlfir.designate
Jean Perier [Fri, 18 Nov 2022 09:08:56 +0000 (10:08 +0100)]
[flang] Lower ArrayRef to hlfir.designate

Also add support for fir.boxchar in HLFIRTools so that character
designator with none constant lengths can be processed/converted to
fir::ExtendedValue.

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

20 months agoRevert "Revert "[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit...
Alexander Shaposhnikov [Fri, 18 Nov 2022 08:45:05 +0000 (08:45 +0000)]
Revert "Revert "[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit-llvm""

This reverts commit 7f608a2497c7578b9f3ca98014176ab95cffe3c0
and removes the dependency of Object on IRPrinter.

20 months ago[NFC][asan] Simplify __sanitizer_annotate_contiguous_container
Vitaly Buka [Fri, 18 Nov 2022 08:54:21 +0000 (00:54 -0800)]
[NFC][asan] Simplify __sanitizer_annotate_contiguous_container

20 months ago[LoongArch] Implement assembler branches pseudo instructions
wanglei [Fri, 18 Nov 2022 08:33:49 +0000 (16:33 +0800)]
[LoongArch] Implement assembler branches pseudo instructions

These instructions always output the canonical mnemonic. The GNU tools
emit the canonical mnemonic for the branch pseudo instructions as well
(e.g. "bgt" will be recognised by the assembler but never printed by
objdump).

Reviewed By: xen0n

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

20 months ago[mlir][llvm] Import additional debug info from LLVMIR.
Tobias Gysi [Fri, 18 Nov 2022 08:44:26 +0000 (09:44 +0100)]
[mlir][llvm] Import additional debug info from LLVMIR.

Add a DebugImporter to convert LLVMIR debug metadata into
MLIR debug attributes. It is the counterpart to the
DebugTranslation class and supports the same attributes.
The revision only supports the translation of instruction,
function, and module debug information. The import of
intrinsics is left to a later revision.

Depends on D138206

Reviewed By: rriddle

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

20 months ago[mlir][llvm] Make some debug info attribute parameters optional.
Tobias Gysi [Fri, 18 Nov 2022 08:35:15 +0000 (09:35 +0100)]
[mlir][llvm] Make some debug info attribute parameters optional.

The revision makes specific debug information attribute parameters
optional since some of them can be omitted in LLVMIR. The additional
flexibility enables a later revision that will support importing
debug information from LLVMIR. A special case is the types parameter
of the SubroutineTypeAttr. For void functions, its first entry is
null in LLVMIR. This revision splits the type parameter in an optional
resultType parameter and an argumentTypes array to support this corner
case.

Reviewed By: rriddle

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

20 months ago[include-cleaner] Fix building with LLVM_LINK_LLVM_DYLIB=ON on mingw
Martin Storsjö [Fri, 18 Nov 2022 08:27:46 +0000 (10:27 +0200)]
[include-cleaner] Fix building with LLVM_LINK_LLVM_DYLIB=ON on mingw

Make sure to use clang_target_link_libraries, which skips linking
against libraries and links against libclang-cpp instead, if
LLVM_LINK_LLVM_DYLIB is enabled.

This fixes errors like these:

ld.lld: error: duplicate symbol: clang::PPCallbacks::~PPCallbacks()
>>> defined at libclangLex.a(PPCallbacks.cpp.obj)
>>> defined at libclang-cpp.dll

20 months agoRevert "[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit-llvm"
Mikhail Goncharov [Fri, 18 Nov 2022 08:25:45 +0000 (09:25 +0100)]
Revert "[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit-llvm"

This reverts commit 34ab474348e2623cc67abddb7bb662385297ac65.

as it has introduced circular dependency lib - analysis

20 months ago[llvm][Bazel] Remove dependency to avoid cycyle.
Adrian Kuegel [Fri, 18 Nov 2022 07:46:54 +0000 (08:46 +0100)]
[llvm][Bazel] Remove dependency to avoid cycyle.

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

20 months ago[flang] Add hlfir.designate definition
Jean Perier [Fri, 18 Nov 2022 07:38:11 +0000 (08:38 +0100)]
[flang] Add hlfir.designate definition

Add hlfir.designate operation definition. This is the HLFIR building
blocks to represent Fortran designator. An hlfir.designator is a
Fortran "part-ref" and an optional susbstring or part ref.
See the operation added description for more detail, and
https://github.com/llvm/llvm-project/blob/main/flang/docs/HighLevelFIR.md
for the rational of this operation.

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

20 months ago[Coroutines] Handle the writes to promise alloca prior to
Chuanqi Xu [Thu, 17 Nov 2022 07:01:32 +0000 (15:01 +0800)]
[Coroutines] Handle the writes to promise alloca prior to
llvm.coro.begin

Previously we've taken care of the writes to allocas prior to llvm.coro.begin.
However, since the promise alloca is special so that we never handled it
before. For the long time, since the programmers can't access the
promise_type due to the c++ language specification, we still failed to
recognize the problem until a recent report:
https://github.com/llvm/llvm-project/issues/57861

And we've tested many codes that the problem gone away after we handle
the writes to the promise alloca prior to @llvm.coro.begin()
prope until a recent report:
https://github.com/llvm/llvm-project/issues/57861

And we've tested many codes that the problem gone away after we handle
the writes to the promise alloca prior to @llvm.coro.begin() properly.

Closes https://github.com/llvm/llvm-project/issues/57861

20 months ago[mlir] [transform] Error for duplicated processor mapping
Guray Ozen [Fri, 18 Nov 2022 07:38:03 +0000 (08:38 +0100)]
[mlir] [transform] Error for duplicated processor mapping

In a nested loop nest, it is not feasible to map different loops to the same processing unit; for an example, check the code below. This modification includes a check in this circumstance.

```
scf.foreach_thread (%i, %j) in (%c32, %c32) {...}
{ mapping = [#gpu.thread<x>, #gpu.thread<x>] }

```

Note: It also deletes a test because it is not possible to reproduce this error.

Depends on D138020

Reviewed By: ftynse

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

20 months ago[NFC][OpenMP] Remove unused label
Vitaly Buka [Fri, 18 Nov 2022 07:30:54 +0000 (23:30 -0800)]
[NFC][OpenMP] Remove unused label

20 months ago[Driver] move FreeBSD header search path management to the driver
Matt Jacobson [Thu, 17 Nov 2022 04:42:15 +0000 (23:42 -0500)]
[Driver] move FreeBSD header search path management to the driver

This matches OpenBSD, and it supports Swift's use of clang for its C interop
functionality.  Recent changes to Swift use AddClangSystemIncludeArgs() to
inspect the cc1 args; this doesn't work for platforms where cc1 adds standard
include paths implicitly.  See:

<https://github.com/apple/swift/commit/cf3354222d9f480de74db390f53a6dcc749fde14>

Also clean up InitHeaderSearch, making it clearer which targets manage header
search paths in the driver.

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

20 months ago[NFC][OpenMP] Fix const cast warning
Vitaly Buka [Fri, 18 Nov 2022 07:17:15 +0000 (23:17 -0800)]
[NFC][OpenMP] Fix const cast warning

20 months ago[test][OpenMP] Expect more tsan reports
Vitaly Buka [Fri, 18 Nov 2022 07:16:31 +0000 (23:16 -0800)]
[test][OpenMP] Expect more tsan reports

20 months ago[NFC][OpenMP] Remove extra ";"
Vitaly Buka [Fri, 18 Nov 2022 07:05:17 +0000 (23:05 -0800)]
[NFC][OpenMP] Remove extra ";"

20 months ago[NFC][OpenMP] Fix warning about non-virtual dtor
Vitaly Buka [Fri, 18 Nov 2022 07:03:01 +0000 (23:03 -0800)]
[NFC][OpenMP] Fix warning about non-virtual dtor

20 months ago[NFC][asan] Rename variables in test
Vitaly Buka [Fri, 18 Nov 2022 06:34:30 +0000 (22:34 -0800)]
[NFC][asan] Rename variables in test

20 months ago[RegisterScavenger][RISCV] Don't search for FrameSetup instrs if we were searching...
luxufan [Fri, 18 Nov 2022 06:56:36 +0000 (14:56 +0800)]
[RegisterScavenger][RISCV] Don't search for FrameSetup instrs if we were searching from Non-FrameSetup instrs

Otherwise, the spill position may point to position where before
FrameSetup instructions. In which case, the spill instruction may store
to caller's frame since the stack pointer has not been adjustted.

Fixes https://github.com/llvm/llvm-project/issues/58286

Reviewed By: craig.topper

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

20 months ago[PowerPC] mark dead def for ctr be clobber.
Chen Zheng [Thu, 17 Nov 2022 05:18:04 +0000 (05:18 +0000)]
[PowerPC] mark dead def for ctr be clobber.

TLS pseudo ADDIStlsgdHA will have such def. This dead def should
also prevent PPC from generating CTR loops.

20 months ago[openmp] [test] Fix warnings about printf format mismatches on Windows
Martin Storsjö [Tue, 8 Nov 2022 09:45:41 +0000 (11:45 +0200)]
[openmp] [test] Fix warnings about printf format mismatches on Windows

This fixes warnings like this:

```
openmp/runtime/test/omp_testsuite.h:107:60: warning: format specifies type 'unsigned int' but the argument has type 'DWORD' (aka 'unsigned long') [-Wformat]
    fprintf(stderr, "CreateThread() failed: Error #%u.\n", GetLastError());
                                                   ~~      ^~~~~~~~~~~~~~
                                                   %lu
```

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

20 months ago[openmp] Only try to add the -mrtm flag on i386/x86_64
Martin Storsjö [Tue, 8 Nov 2022 13:31:40 +0000 (15:31 +0200)]
[openmp] Only try to add the -mrtm flag on i386/x86_64

Clang does accept the flag for any architecture, but prints a
warning:

    clang-16: warning: argument unused during compilation: '-mrtm' [-Wunused-command-line-argument]

This flag is documented as an x86 specific flag, so don't try to
add it for other architectures, to silence this warning.

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

20 months ago[RISCV] Make lowerVECTOR_SHUFFLEAsVSlidedown follow source until not EXTRACT_SUBVECTOR.
Han-Kuan Chen [Tue, 15 Nov 2022 11:34:44 +0000 (03:34 -0800)]
[RISCV] Make lowerVECTOR_SHUFFLEAsVSlidedown follow source until not EXTRACT_SUBVECTOR.

Current lowerVECTOR_SHUFFLEAsVSlidedown only seeks whether input are
EXTRACT_SUBVECTOR and their source are same. The commit will make the
function seek input and their source until they are not
EXTRACT_SUBVECTOR.

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

20 months ago[RISCV] Pre-commit test.
Han-Kuan Chen [Tue, 15 Nov 2022 12:02:41 +0000 (04:02 -0800)]
[RISCV] Pre-commit test.

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

20 months ago[asan] Simplify the test
Vitaly Buka [Fri, 18 Nov 2022 06:29:19 +0000 (22:29 -0800)]
[asan] Simplify the test

20 months agoApply clang-tidy fixes for llvm-else-after-return in SparseTensorCodegen.cpp (NFC)
Mehdi Amini [Thu, 17 Nov 2022 09:09:30 +0000 (09:09 +0000)]
Apply clang-tidy fixes for llvm-else-after-return in SparseTensorCodegen.cpp (NFC)

20 months agoApply clang-tidy fixes for bugprone-argument-comment in LinalgTransformOps.cpp (NFC)
Mehdi Amini [Thu, 17 Nov 2022 08:06:15 +0000 (08:06 +0000)]
Apply clang-tidy fixes for bugprone-argument-comment in LinalgTransformOps.cpp (NFC)

20 months agoMLIR: Add --fix-error to clang-tidy script
Mehdi Amini [Wed, 16 Nov 2022 21:29:28 +0000 (21:29 +0000)]
MLIR: Add --fix-error to clang-tidy script

20 months ago[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit-llvm
Alexander Shaposhnikov [Fri, 18 Nov 2022 04:26:08 +0000 (04:26 +0000)]
[opt][clang] Enable using -module-summary/-flto=thin with -S/-emit-llvm

Enable using -module-summary with -S
(similarly to what currently can be achieved with opt <input> -o - | llvm-dis).
This is a recommit of ef9e62469.

Test plan: ninja check-all

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

20 months ago[OpenMP] Initial parsing/sema for 'strict' modifier with 'grainsize' clause
Fazlay Rabbi [Fri, 18 Nov 2022 00:20:14 +0000 (16:20 -0800)]
[OpenMP] Initial parsing/sema for 'strict' modifier with 'grainsize' clause

This patch gives basic parsing and semantic analysis support for 'strict'
modifier with 'grainsize' clause of 'taskloop' construct introduced in
OpenMP 5.1 (section 2.12.2)

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

20 months ago[mlir][spirv] Support attribute in MapMemRefStorageClassPass
Lei Zhang [Fri, 18 Nov 2022 04:46:18 +0000 (23:46 -0500)]
[mlir][spirv] Support attribute in MapMemRefStorageClassPass

MemRef memory space actually can be an attribute. Update the
map function signature to accept an attribute. The default
mappings can still only covers numeric ones, but this allows
downstream callers to extend with custom memory spaces.

Reviewed By: kuhar

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

20 months agoAMDGPU/GlobalISel: Make strict fadd, fmul and fma legal
Matt Arsenault [Sun, 31 May 2020 17:23:20 +0000 (13:23 -0400)]
AMDGPU/GlobalISel: Make strict fadd, fmul and fma legal

20 months ago[clang][Parse][NFC] Remove unused CommaLocs parameters
Timm Bäder [Thu, 17 Nov 2022 14:49:30 +0000 (15:49 +0100)]
[clang][Parse][NFC] Remove unused CommaLocs parameters

20 months ago[clang][Parser][NFC] Simplify ParseParenExprOrCondition
Timm Bäder [Thu, 17 Nov 2022 11:12:11 +0000 (12:12 +0100)]
[clang][Parser][NFC] Simplify ParseParenExprOrCondition

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

20 months ago[NFC] Remove unused codes after 4a7be42d922af
Chuanqi Xu [Fri, 18 Nov 2022 03:49:33 +0000 (11:49 +0800)]
[NFC] Remove unused codes after 4a7be42d922af

There are still some unused codes remained after 4a7be42d922af. And this
patch tries to remove them.

20 months ago[C++20] [Modules] Don't emit macro definitions with named module
Chuanqi Xu [Fri, 18 Nov 2022 02:45:08 +0000 (10:45 +0800)]
[C++20] [Modules] Don't emit macro definitions with named module

It is meaningless to emit macro definitions for named modules. With some
small experiments, the size of the module for the named modules reduced
2%~4% after this patch.

20 months agoAMDGPU/GlobalISel: Fix not selecting modifiers for f16 fma on gfx9
Matt Arsenault [Fri, 18 Nov 2022 02:05:30 +0000 (18:05 -0800)]
AMDGPU/GlobalISel: Fix not selecting modifiers for f16 fma on gfx9

VOP3OpSel wasn't trying to match any modifiers. Just try to match the
basic case, like the DAG does.

20 months ago[VP] Add support for vp.inttoptr & vp.ptrtoint
YingChi Long [Tue, 1 Nov 2022 16:08:40 +0000 (00:08 +0800)]
[VP] Add support for vp.inttoptr & vp.ptrtoint

Add vp.inttoptr & vp.ptrtoint support by lowering them into
vp.zext / vp.truncate with in SelectionDAGBuilder.

Reviewed By: craig.topper

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

20 months ago[C++20] [Modules] Remove unmaintained Header Module
Chuanqi Xu [Fri, 18 Nov 2022 02:13:40 +0000 (10:13 +0800)]
[C++20] [Modules] Remove unmaintained Header Module

Currently there is a -emit-header-module mode, which can combine several
headers together as a module interface. However, this breaks our
assumption (for standard c++ modules) about module interface. The module
interface should come from a module interface unit. And if it is a
header, it should be a header unit. And currently we have no ideas to
combine several headers together.

So I think this mode is an experimental one and it is not maintained and
it is not used. So it will be better to remove them.

Reviewed By: Bigcheese, dblaikie, bruno

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

20 months ago[Clang] Fix behavior of -ffp-model option when overriden
Qiu Chaofan [Fri, 18 Nov 2022 02:28:24 +0000 (10:28 +0800)]
[Clang] Fix behavior of -ffp-model option when overriden

-ffp-model=strict -ffp-model=fast will still enable strict exception
handling behavior, therefore clang still emits constrained FP operations
in IR.

-ffp-model=fast -ffp-model=strict emits two warnings: one for strict
overriding fast, the other for strict overriding strict, which is
confusing.

Reviewed By: zahiraam

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

20 months ago[ODRHash] Detect duplicate `ObjCProtocolDecl` ODR mismatches during parsing.
Volodymyr Sapsai [Fri, 8 Jul 2022 20:10:31 +0000 (13:10 -0700)]
[ODRHash] Detect duplicate `ObjCProtocolDecl` ODR mismatches during parsing.

When during parsing we encountered a duplicate `ObjCProtocolDecl`, we
were always emitting an error. With this change we accept
* when a previous `ObjCProtocolDecl` is in a hidden [sub]module;
* parsed `ObjCProtocolDecl` is the same as the previous one.

And in case of mismatches we provide more detailed error messages.

rdar://93069080

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

20 months ago[IR] Split out IR printing passes into IRPrinter
Alexander Shaposhnikov [Fri, 18 Nov 2022 01:47:56 +0000 (01:47 +0000)]
[IR] Split out IR printing passes into IRPrinter

This diff splits out (from LLVMCore) IR printing passes into IRPrinter.
This structure is similar to what we already have for IRReader and
enables us to avoid circular dependencies between LLVMCore and Analysis
(this is a preparation for https://reviews.llvm.org/D137768).
The legacy interface is left unchanged, once the legacy pass manager
is removed (in the future) we will be able to clean it up further.
The bazel build configuration has been updated as well.

Test plan:
1/ Tested the following cmake configurations: static/dynamic linking * lld/gold * clang/gcc
2/ bazel build --config=generic_clang @llvm-project//...

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

20 months ago[SLP]Fix PR59053: trying to erase instruction with users.
Alexey Bataev [Fri, 18 Nov 2022 00:46:51 +0000 (16:46 -0800)]
[SLP]Fix PR59053: trying to erase instruction with users.

Need to count the reduced values, vectorized in the tree but not in the top node. Such scalars still must be extracted out of the vector node instead of the original scalar.

20 months ago[Sink] Process basic blocks with a single successor
Fangrui Song [Fri, 18 Nov 2022 01:23:12 +0000 (01:23 +0000)]
[Sink] Process basic blocks with a single successor

This condition seems unnecessary.

Reviewed By: arsenm

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

20 months ago[ODRHash] Hash `ObjCPropertyDecl` and diagnose discovered mismatches.
Volodymyr Sapsai [Wed, 6 Jul 2022 21:58:26 +0000 (14:58 -0700)]
[ODRHash] Hash `ObjCPropertyDecl` and diagnose discovered mismatches.

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

20 months agoRevert "[mlir][Vector] Re-define masking semantics in vector.transfer ops"
Diego Caballero [Fri, 18 Nov 2022 01:18:11 +0000 (01:18 +0000)]
Revert "[mlir][Vector] Re-define masking semantics in vector.transfer ops"

This reverts commit 6c59c5cd08c879c9d1cfa653711613244a7c39bf.

20 months ago[libc++][NFC] Add a missing include in pre-C++14 language modes.
Konstantin Varlamov [Fri, 18 Nov 2022 01:13:53 +0000 (17:13 -0800)]
[libc++][NFC] Add a missing include in pre-C++14 language modes.

20 months ago[mlir][Vector] Re-define masking semantics in vector.transfer ops
Diego Caballero [Wed, 16 Nov 2022 00:43:50 +0000 (00:43 +0000)]
[mlir][Vector] Re-define masking semantics in vector.transfer ops

Masking hasn't been widely used in vector transfer ops and the semantics
of the mask operand were a bit loose. This patch states that the mask
operand in a vector transfer op is applied to the read/write part of the
operation and, therefore, its shape should match the shape of the
elements read/written from/into the memref/tensor regardless of any
permutation/broadcasting also applied by the transfer operation.

Reviewers: nicolasvasilache

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

20 months ago[CMake] Remove a duplicate clangLex entry
Fangrui Song [Fri, 18 Nov 2022 00:58:04 +0000 (00:58 +0000)]
[CMake] Remove a duplicate clangLex entry

20 months ago[include-cleaner] Fix -DBUILD_SHARED_LIBS=on build
Fangrui Song [Fri, 18 Nov 2022 00:56:04 +0000 (00:56 +0000)]
[include-cleaner] Fix -DBUILD_SHARED_LIBS=on build

and apply an include-cleaner fix for the tool itself:)

addPPCallbacks requires the vtable of PPChainedCallbacks and needs a clangLex
dependency.

20 months ago[include-cleaner] Fix the build of include-cleaner with LLVM_BUILD_LLVM_DYLIB=ON
Alexander Shaposhnikov [Fri, 18 Nov 2022 00:53:56 +0000 (00:53 +0000)]
[include-cleaner] Fix the build of include-cleaner with LLVM_BUILD_LLVM_DYLIB=ON

20 months ago[libc++] Fix a missing include in pre-C++17 language modes.
Konstantin Varlamov [Fri, 18 Nov 2022 00:51:53 +0000 (16:51 -0800)]
[libc++] Fix a missing include in pre-C++17 language modes.

20 months ago[Linux] Revert 1e56821bac02a5d3c6249bbf3ef43b8b569d2551
Brad Smith [Fri, 18 Nov 2022 00:46:23 +0000 (19:46 -0500)]
[Linux] Revert 1e56821bac02a5d3c6249bbf3ef43b8b569d2551

The glibc issue mentioned in #47994 has been fixed upstream.

20 months agoUpdate lambda mangling test to C++17
David Blaikie [Fri, 18 Nov 2022 00:12:42 +0000 (00:12 +0000)]
Update lambda mangling test to C++17

add some side effects so some (I guess guaranteed?) constant folding
doesn't happen, keeping the test testing the things it was testing..

The test passes with 14, 17, and 20 - so let's just leave the version
off so it might be able to be updated/used in C++20 when the default
changes to C++20 in the future.

20 months ago[OPENMP5.1] Initial support for severity clause
Jennifer Yu [Wed, 16 Nov 2022 21:29:14 +0000 (13:29 -0800)]
[OPENMP5.1] Initial support for severity clause

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

20 months ago[OpenMP] kmp_affinity.h: add RISCV64 support
Yabin Cui [Fri, 18 Nov 2022 00:03:46 +0000 (00:03 +0000)]
[OpenMP] kmp_affinity.h: add RISCV64 support

In D135552 the #else is added, which causes build error when
building openmp on RISCV64. This patch fixed the error:
   "Unknown or unsupported architecture"

Reviewed By: pirama

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

20 months ago[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73
Krzysztof Parzyszek [Wed, 16 Nov 2022 16:57:01 +0000 (08:57 -0800)]
[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73

This includes instruction formats, definitions, encodings, scheduling
classes, and builtins/intrinsics.

New and improved version of 76536989ba, so much so that even clang
builds with it.

20 months ago[libc] add scanf entrypoints
Michael Jones [Wed, 19 Oct 2022 20:36:59 +0000 (13:36 -0700)]
[libc] add scanf entrypoints

This patch adds scanf, sscanf, and fscanf entrypoints. It also adds unit
tests for sscanf and a basic test to fscanf. The scanf function is
basically impossible to test in an automated fashion due to it recieving
user input.

Reviewed By: sivachandra, lntue

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

20 months agoFix declare target implementation to support enter.
Doru Bercea [Wed, 16 Nov 2022 23:23:48 +0000 (17:23 -0600)]
Fix declare target implementation to support enter.

20 months ago[Affine] Replace a magic -1 with ShapedType::kDynamicSize
Benjamin Kramer [Thu, 17 Nov 2022 23:26:08 +0000 (00:26 +0100)]
[Affine] Replace a magic -1 with ShapedType::kDynamicSize

20 months agoComment function
Adrian Prantl [Thu, 17 Nov 2022 23:24:35 +0000 (15:24 -0800)]
Comment function

20 months agoAMDGPU: Convert a test to opaque pointers
Matt Arsenault [Thu, 17 Nov 2022 23:07:23 +0000 (15:07 -0800)]
AMDGPU: Convert a test to opaque pointers

20 months agoRevert "[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73"
Fangrui Song [Thu, 17 Nov 2022 23:14:32 +0000 (23:14 +0000)]
Revert "[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73"

This reverts commit 766536989baf9431ff535670d01c4c19d7351fad.

The commit caused:

clang/include/clang/Basic/BuiltinsHexagonDep.def:1896:69: error: use of undeclared identifier 'HVXV73'
TARGET_BUILTIN(__builtin_HEXAGON_V6_vadd_sf_bf, "V32iV16iV16i", "", HVXV73)

when building `clang`.

20 months ago[clang-tidy] Fix misc-unused-using-decls for user-defined literals
v1nh1shungry [Thu, 17 Nov 2022 21:30:35 +0000 (21:30 +0000)]
[clang-tidy] Fix misc-unused-using-decls for user-defined literals

Current version complains unused using-declaration even if the target
user-defined literal is used.

Reviewed By: ymandel

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

20 months agoRevert D135411 "Add generic KCFI operand bundle lowering"
Fangrui Song [Thu, 17 Nov 2022 22:45:29 +0000 (22:45 +0000)]
Revert D135411 "Add generic KCFI operand bundle lowering"

This reverts commit eb2a57ebc7aaad551af30462097a9e06c96db925.

llvm/include/llvm/Transforms/Instrumentation/KCFI.h including
llvm/CodeGen is a layering violation. We should use an approach where
Instrumementation/ doesn't need to include CodeGen/.
Sorry for not spotting this in the review.

20 months ago[X86] Use correctly sized floating point literals in *zero_ps/pd.
Craig Topper [Thu, 17 Nov 2022 22:03:05 +0000 (14:03 -0800)]
[X86] Use correctly sized floating point literals in *zero_ps/pd.

This avoids depending on int->float or double->float conversion.
Improving codegen with #pragma STDC FENV_ACCESS ON.

Really we should improve constant folding somewhere, but this was
a cheap and easy improvement.

Fixes PR59052.

20 months agoSimplifying the SplitReduction logic that uses the control to get the
Murali Vijayaraghavan [Sat, 5 Nov 2022 03:50:40 +0000 (03:50 +0000)]
Simplifying the SplitReduction logic that uses the control to get the
dimension where the extra parallel dimension is inserted

Currently, the innerParallel and non innerParallel strategies use two
different ways to fix for where the extra loop is inserted and where the
extra dimension for the intermediate result is inserted - innerParallel
adds the extra (parallel) loop right after the pre-existing reduction
loop, whereas non innerParallel adds the reduction loop in the successor
to the index supplied by control, and the parallel loop in the index
supplied by the control. The semantics of the index supplied by the
control is supposed to only control where the extra tensor dimension is
inserted in the intermediate tensor. Conflating this index with where
the reduction (and parallel) loops are inserted leads to more complex
(and confusing) logic overall. This differential removes conflating the
two uses of the index, and keeps the reduction and parallel loops in the
same vicinity and uses the supplied index to only determine the position
of the extra tensor dimension. It also simplifies the code by merging
the two strategies in a lot more places.

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

20 months ago[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73
Krzysztof Parzyszek [Wed, 16 Nov 2022 16:57:01 +0000 (08:57 -0800)]
[Hexagon] Add instruction definitions for Hexagon v71, v71t, and v73

This includes instruction formats, definitions, encodings, scheduling
classes, and builtins/intrinsics.

20 months ago[Hexagon] Add ELF flags for Hexagon v71, v71t, and v73
Krzysztof Parzyszek [Thu, 17 Nov 2022 21:56:50 +0000 (13:56 -0800)]
[Hexagon] Add ELF flags for Hexagon v71, v71t, and v73

20 months agoAdd generic KCFI operand bundle lowering
Sami Tolvanen [Thu, 18 Aug 2022 23:53:09 +0000 (23:53 +0000)]
Add generic KCFI operand bundle lowering

The KCFI sanitizer emits "kcfi" operand bundles to indirect
call instructions, which the LLVM back-end lowers into an
architecture-specific type check with a known machine instruction
sequence. Currently, KCFI operand bundle lowering is supported only
on 64-bit X86 and AArch64 architectures.

As a lightweight forward-edge CFI implementation that doesn't
require LTO is also useful for non-Linux low-level targets on
other machine architectures, add a generic KCFI operand bundle
lowering pass that's only used when back-end lowering support is not
available and allows -fsanitize=kcfi to be enabled in Clang on all
architectures.

Reviewed By: nickdesaulniers, MaskRay

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

20 months ago[clang] Use InMemoryModuleCache for readASTFileControlBlock NFC
Ben Langmuir [Thu, 17 Nov 2022 00:07:34 +0000 (16:07 -0800)]
[clang] Use InMemoryModuleCache for readASTFileControlBlock NFC

When a pcm has already been loaded from disk, reuse it from the
InMemoryModuleCache in readASTFileControlBlock. This avoids potentially
reading it again.

As noted in the FIXME, ideally we would also add the module to the cache
if it will be used again later, but that could modify its build state
and we do not have enough context currenlty to know if it's correct.

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

20 months ago[UBSan] Implementation NonUniqueARMRTTIBit __type_name has higher bits set on arm64
usama hameed [Mon, 7 Nov 2022 01:36:57 +0000 (17:36 -0800)]
[UBSan] Implementation NonUniqueARMRTTIBit __type_name has higher bits set on arm64

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

20 months ago[NFC][SROA] Add more tests with non-speculatable `load`s of `select`s
Roman Lebedev [Thu, 17 Nov 2022 21:40:50 +0000 (00:40 +0300)]
[NFC][SROA] Add more tests with non-speculatable `load`s of `select`s

20 months ago[mlir][sparse] Make three integration tests run with the codegen path.
bixia1 [Thu, 17 Nov 2022 20:25:41 +0000 (12:25 -0800)]
[mlir][sparse] Make three integration tests run with the codegen path.

Reviewed By: aartbik

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

20 months ago[mlir][sparse] Fix a problem in the new operator rewriter.
bixia1 [Thu, 17 Nov 2022 18:19:57 +0000 (10:19 -0800)]
[mlir][sparse] Fix a problem in the new operator rewriter.

The getSparseTensorReaderNextX functions should return void.

Reviewed By: aartbik

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

20 months ago[Hexagon] Improve inserting/extracting to/from scalar predicates
Krzysztof Parzyszek [Wed, 16 Nov 2022 23:30:12 +0000 (15:30 -0800)]
[Hexagon] Improve inserting/extracting to/from scalar predicates

Fixes https://github.com/llvm/llvm-project/issues/59042.

20 months agoLangRef: Fix repeated word
Matt Arsenault [Fri, 11 Nov 2022 20:29:48 +0000 (12:29 -0800)]
LangRef: Fix repeated word

20 months ago[Hexagon] Fix lowering loads/stores of scalar vNi1
Krzysztof Parzyszek [Thu, 17 Nov 2022 19:54:51 +0000 (11:54 -0800)]
[Hexagon] Fix lowering loads/stores of scalar vNi1

Don't treat them as i1, all predicate bits need to be loaded or stored.

20 months ago[Hexagon] Use BUILD_PAIR instead of HexagonISD::COMBINE in lowering
Krzysztof Parzyszek [Thu, 17 Nov 2022 18:55:00 +0000 (10:55 -0800)]
[Hexagon] Use BUILD_PAIR instead of HexagonISD::COMBINE in lowering

20 months ago[openmp] [test] Unbreak tests that rely on hidden_helper_task on Windows
Martin Storsjö [Tue, 8 Nov 2022 09:37:15 +0000 (11:37 +0200)]
[openmp] [test] Unbreak tests that rely on hidden_helper_task on Windows

The hidden helper task is only enabled on Linux (kmp_runtime.cpp
initializes __kmp_enable_hidden_helper to TRUE for linux but to
FALSE for any other OS), and the __kmp_stg_parse_use_hidden_helper
function always makes it disabled on non-Linux OSes too.

Add a lit test feature for hidden helper tasks (only made available
on Linux) and mark two tests as requiring this feature.

Disable hidden helper tasks in the test that doesn't really involve
them, for consistent behaviour across platforms.

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

20 months agoRevert D119547 "[libc][bazel] Add tests to the bazel build"
Guillaume Chatelet [Thu, 17 Nov 2022 20:20:57 +0000 (20:20 +0000)]
Revert D119547 "[libc][bazel] Add tests to the bazel build"

The introducion of `constraint_setting` generated issues with downstream
integration.

This reverts commit 3c13d83ad59b5932328c0a99b0a0008e1da8b1d8.

20 months agoRefactor StaticAnalyzer to use `clang::SarifDocumentWriter`
Vaibhav Yenamandra [Thu, 17 Nov 2022 19:47:02 +0000 (14:47 -0500)]
Refactor StaticAnalyzer to use `clang::SarifDocumentWriter`

Refactor StaticAnalyzer to use clang::SarifDocumentWriter for
serializing sarif diagnostics.

Uses clang::SarifDocumentWriter to generate SARIF output in the
StaticAnalyzer.

Various bugfixes are also made to clang::SarifDocumentWriter.

Summary of changes:

clang/lib/Basic/Sarif.cpp:
  * Fix bug in adjustColumnPos introduced from prev move, it now uses
    FullSourceLoc::getDecomposedExpansionLoc which provides the correct
    location (in the presence of macros) instead of
    FullSourceLoc::getDecomposedLoc.
  * Fix createTextRegion so that it handles caret ranges correctly,
    this should bring it to parity with the previous implementation.

clang/test/Analysis/diagnostics/Inputs/expected-sarif:
  * Update the schema URL to the offical website
  * Add the emitted defaultConfiguration sections to all rules
  * Annotate results with the "level" property

clang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp:
  * Update SarifDiagnostics class to hold a clang::SarifDocumentWriter
    that it uses to convert diagnostics to SARIF.

20 months ago[CUDA] make use of deprecated texture API conditional on CUDA version.
Artem Belevich [Thu, 17 Nov 2022 19:35:34 +0000 (11:35 -0800)]
[CUDA] make use of deprecated texture API conditional on CUDA version.

20 months ago[mlir][sparse] fix crash on sparse_tensor.foreach operation on tensors with complex...
Peiming Liu [Thu, 17 Nov 2022 17:49:23 +0000 (17:49 +0000)]
[mlir][sparse] fix crash on sparse_tensor.foreach operation on tensors with complex<T> elements.

Reviewed By: aartbik, bixia

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

20 months ago[scudo] Extend basic test to cover zero size allocs.
Evgenii Stepanov [Thu, 3 Nov 2022 19:42:12 +0000 (12:42 -0700)]
[scudo] Extend basic test to cover zero size allocs.

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