platform/upstream/llvm.git
3 years ago[ORC] Fix LLVM modulemap after removal of ORC RPC in 33dd98e9e49.
Lang Hames [Fri, 1 Oct 2021 18:36:11 +0000 (11:36 -0700)]
[ORC] Fix LLVM modulemap after removal of ORC RPC in 33dd98e9e49.

3 years ago[lldb] [Host] Sync TerminalState::Data to struct type
Michał Górny [Fri, 1 Oct 2021 18:33:29 +0000 (20:33 +0200)]
[lldb] [Host] Sync TerminalState::Data to struct type

3 years ago[InstCombine] fold (trunc (X>>C1)) << C to shift+mask directly
Sanjay Patel [Fri, 1 Oct 2021 17:30:44 +0000 (13:30 -0400)]
[InstCombine] fold (trunc (X>>C1)) << C to shift+mask directly

This is no-externally-visible-functional-difference-intended.
That is, the test diffs show identical instructions other than
name changes (those are included specifically to verify the logic).

The existing transforms created extra instructions and relied
on subsequent folds to get to the final result, but that could
conflict with other transforms like the proposed D110170 (and
caused that patch to be reverted twice so far because of infinite
combine loops).

3 years ago[gn build] Port 33dd98e9e499
LLVM GN Syncbot [Fri, 1 Oct 2021 18:18:21 +0000 (18:18 +0000)]
[gn build] Port 33dd98e9e499

3 years ago[ORC] Remove ORC RPC.
Lang Hames [Fri, 1 Oct 2021 17:07:03 +0000 (10:07 -0700)]
[ORC] Remove ORC RPC.

With the removal of OrcRPCExecutorProcessControl and OrcRPCTPCServer in
6aeed7b19c4 the ORC RPC library no longer has any in-tree users.

Clients needing serialization for ORC should move to Simple Packed
Serialization (usually by adopting SimpleRemoteEPC for remote JITing).

3 years ago[mlir][linalg] Include InitTensorOp in tiling canonicalization
Lei Zhang [Fri, 1 Oct 2021 18:12:54 +0000 (14:12 -0400)]
[mlir][linalg] Include InitTensorOp in tiling canonicalization

Tiling can create dim ops and those dim ops can take `InitTensorOp`
as input. Including it in the tiling canonicalization patterns
allows us to fold those dim ops away.

Also sorted the existing ops along the way.

Reviewed By: mravishankar

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

3 years ago[NFC][AttributeList] Replace index_begin/end with an iterator
Arthur Eubanks [Thu, 30 Sep 2021 20:57:55 +0000 (13:57 -0700)]
[NFC][AttributeList] Replace index_begin/end with an iterator

We expose the fact that we rely on unsigned wrapping to iterate through
all indexes. This can be confusing. Rather, keeping it as an
implementation detail through an iterator is less confusing and is less
code.

Reviewed By: rnk

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

3 years ago[MachineLoopInfo] Enable machine verification after this pass
Jay Foad [Wed, 29 Sep 2021 12:18:01 +0000 (13:18 +0100)]
[MachineLoopInfo] Enable machine verification after this pass

Enabling this does not show any problems in check-llvm in an
LLVM_ENABLE_EXPENSIVE_CHECKS build.

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

3 years ago[LiveVariables] Skip verification of kills inside bundles
Jay Foad [Wed, 29 Sep 2021 12:09:22 +0000 (13:09 +0100)]
[LiveVariables] Skip verification of kills inside bundles

LiveVariables does not examine the contents of bundles, so
MachineVerifier should not expect it to know about kill flags on
operands of instructions inside a bundle.

With this fix we can enable machine verification after running the
LiveVariables analysis. Doing this does not show any problems in
check-llvm in an LLVM_ENABLE_EXPENSIVE_CHECKS build.

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

3 years ago[UnreachableMachineBlockElim] Enable machine verification after this pass
Jay Foad [Wed, 29 Sep 2021 11:57:03 +0000 (12:57 +0100)]
[UnreachableMachineBlockElim] Enable machine verification after this pass

Enabling this does not show any problems in check-llvm in an
LLVM_ENABLE_EXPENSIVE_CHECKS build.

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

3 years ago[ProcessImplicitDefs] Enable machine verification after this pass
Jay Foad [Wed, 29 Sep 2021 11:44:32 +0000 (12:44 +0100)]
[ProcessImplicitDefs] Enable machine verification after this pass

Enabling this does not show any problems in check-llvm in an
LLVM_ENABLE_EXPENSIVE_CHECKS build.

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

3 years ago[DetectDeadLanes] Enable machine verification after this pass
Jay Foad [Wed, 29 Sep 2021 08:55:15 +0000 (09:55 +0100)]
[DetectDeadLanes] Enable machine verification after this pass

Machine verification after DetectDeadLanes has been disabled since the
pass was first added in D18427, but I guess this was just due to copy-
and-paste. Enabling it does not show any problems in check-llvm in an
LLVM_ENABLE_EXPENSIVE_CHECKS build.

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

3 years ago[libc++] Revert the part of my b82683b that affected <version>.
Arthur O'Dwyer [Fri, 1 Oct 2021 16:59:24 +0000 (12:59 -0400)]
[libc++] Revert the part of my b82683b that affected <version>.

This reverts part of commit b82683b2eb3601f6e8970861b94ad7b37393aa90.
I hadn't intended to remove the `// -*- C++ -*-` comment line
from `libcxx/include/version`, only from the generated tests.
Thanks to Raul Tambre for the catch.

3 years ago[ORC] Remove OrcRPCExecutorProcessControl ad OrcRPCTPCServer.
Lang Hames [Fri, 1 Oct 2021 16:34:16 +0000 (09:34 -0700)]
[ORC] Remove OrcRPCExecutorProcessControl ad OrcRPCTPCServer.

All in-tree tools have moved to SimpleRemoteEPC.

3 years ago[Transforms] Migrate from getNumArgOperands to arg_size (NFC)
Kazu Hirata [Fri, 1 Oct 2021 16:57:40 +0000 (09:57 -0700)]
[Transforms] Migrate from getNumArgOperands to arg_size (NFC)

Note that getNumArgOperands is considered a legacy name.  See
llvm/include/llvm/IR/InstrTypes.h for details.

3 years ago[AIX]implement the --syms and using "symbol index and qualname" for --sym --symbol...
zhijian [Fri, 1 Oct 2021 16:37:51 +0000 (12:37 -0400)]
[AIX]implement the --syms and using "symbol index and qualname" for --sym --symbol--description for llvm-objdump for xcoff

Summary:

for xcoff :

implement the getSymbolFlag and getSymbolType() for option --syms.
llvm-objdump --sym , if the symbol is label, print the containing section for the symbol too.
when using llvm-objdump --sym --symbol--description, print the symbol index and qualname for symbol.
for example:
--symbol-description
00000000000000c0 l .text (csect: (idx: 2) .foov[PR]) (idx: 3) .foov

and without --symbol-description
00000000000000c0 l .text (csect: .foov) .foov

Reviewers: James Henderson,Esme Yi

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

3 years ago[NFC][Codegen][X86] Drop unused check prefixes in newly added tests
Roman Lebedev [Fri, 1 Oct 2021 16:34:57 +0000 (19:34 +0300)]
[NFC][Codegen][X86] Drop unused check prefixes in newly added tests

3 years ago[lldb] [Host] Fix flipped logic in TerminalState::Save()
Michał Górny [Fri, 1 Oct 2021 16:23:25 +0000 (18:23 +0200)]
[lldb] [Host] Fix flipped logic in TerminalState::Save()

3 years ago[libc++] [test] Remove filenames from copyright headers. NFCI.
Arthur O'Dwyer [Fri, 1 Oct 2021 16:13:03 +0000 (12:13 -0400)]
[libc++] [test] Remove filenames from copyright headers. NFCI.

Discussed in D110794.

3 years ago[TrivialDeadness] Update function comment
Anna Thomas [Fri, 1 Oct 2021 15:49:25 +0000 (11:49 -0400)]
[TrivialDeadness] Update function comment

isInstructionTriviallyDead also works for certain side-effecting
instructions.
Update incorrect comment (as suggested in D109917).

3 years ago[OpenMP][host runtime] Introduce kmp_cpuinfo_flags_t to replace integer flags
Peyton, Jonathan L [Mon, 20 Sep 2021 18:24:55 +0000 (13:24 -0500)]
[OpenMP][host runtime] Introduce kmp_cpuinfo_flags_t to replace integer flags

Store CPUID support flags as bits instead of using entire integers.

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

3 years ago[OpenMP][testing] increase threshold for omp_get_wtime test
Peyton, Jonathan L [Fri, 1 Oct 2021 16:06:58 +0000 (11:06 -0500)]
[OpenMP][testing] increase threshold for omp_get_wtime test

3 years ago[libc++] Remove "// -*- C++ -*-" comments from all .cpp files. NFCI.
Arthur O'Dwyer [Thu, 30 Sep 2021 19:43:38 +0000 (15:43 -0400)]
[libc++] Remove "// -*- C++ -*-" comments from all .cpp files. NFCI.

Even if these comments have a benefit in .h files (for editors that
care about language but can't be configured to treat .h as C++ code),
they certainly have no benefit for files with the .cpp extension.

Discussed in D110794.

3 years ago[libc++] [test] Remove "// -*- C++ -*-" comments from generated .cpp files.
Arthur O'Dwyer [Thu, 30 Sep 2021 19:40:45 +0000 (15:40 -0400)]
[libc++] [test] Remove "// -*- C++ -*-" comments from generated .cpp files.

Even if these comments have a benefit in .h files (for editors that
care about language but can't be configured to treat .h as C++ code),
they certainly have no benefit for files with the .cpp extension.

Discussed in D110794.

3 years ago[llvm-jitlink] Fix a FIXME.
Lang Hames [Fri, 1 Oct 2021 00:25:20 +0000 (17:25 -0700)]
[llvm-jitlink] Fix a FIXME.

ORC errors preserve the SymbolStringPool since 6fe2e9a9cc8, so we can stop
bailing out early.

3 years ago[NFC][X86][Codegen] Add test coverage for interleaved i8 load/store stride=3
Roman Lebedev [Fri, 1 Oct 2021 15:47:09 +0000 (18:47 +0300)]
[NFC][X86][Codegen] Add test coverage for interleaved i8 load/store stride=3

3 years ago[NFC][X86][LV] Improve costmodel test coverage for interleaved i8 load/store stride=3
Roman Lebedev [Fri, 1 Oct 2021 15:31:38 +0000 (18:31 +0300)]
[NFC][X86][LV] Improve costmodel test coverage for interleaved i8 load/store stride=3

3 years ago[analyzer] Fix deprecated plistlib functions
Manas [Fri, 1 Oct 2021 14:59:47 +0000 (16:59 +0200)]
[analyzer] Fix deprecated plistlib functions

It replaces the usage of readPlist,writePlist functions with load,dump
in plistlib package.

This fixes deprecation issues when analyzer reports are being generated
outside of docker.

Patch by Manas!

Reviewed By: steakhal

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

3 years ago[gn build] Port 47d6274d4c31
LLVM GN Syncbot [Fri, 1 Oct 2021 14:57:31 +0000 (14:57 +0000)]
[gn build] Port 47d6274d4c31

3 years ago[InstCombine] add tests for icmp of gep; NFC
Sanjay Patel [Fri, 1 Oct 2021 14:37:01 +0000 (10:37 -0400)]
[InstCombine] add tests for icmp of gep; NFC

3 years ago[libunwind] Fix cfi_register for float registers.
Daniel Kiss [Fri, 1 Oct 2021 14:49:37 +0000 (16:49 +0200)]
[libunwind] Fix cfi_register for float registers.

Fixes D110144.
registers.getFloatRegister is not const in ARM therefor can't be called here.

Reviewed By: mstorsjo, #libunwind

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

3 years ago[NFC][AMDGPU] Reduce includes dependencies, part 2
Daniil Fukalov [Tue, 7 Sep 2021 08:21:04 +0000 (11:21 +0300)]
[NFC][AMDGPU] Reduce includes dependencies, part 2

1. Splitted out some parts of R600 target to separate modules/headers.
2. Reduced some include lists in headers.
3. Minor forward declarations, redundant includes and flags in GCNSubtarget
   cleanup.

Reviewed By: foad

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

3 years ago[X86][Costmodel] Load/store i64/f64 Stride=2 VF=16 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:53:39 +0000 (16:53 +0300)]
[X86][Costmodel] Load/store i64/f64 Stride=2 VF=16 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/1WMTojvfW - for intels `Block RThroughput: =16.0`; for ryzens, `Block RThroughput: <=8.0`
So pick cost of `16`.

For store we have:
https://godbolt.org/z/1WMTojvfW - for intels `Block RThroughput: =16.0`; for ryzens, `Block RThroughput: <=16.0`
So pick cost of `16`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i64/f64 Stride=2 VF=8 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:53:38 +0000 (16:53 +0300)]
[X86][Costmodel] Load/store i64/f64 Stride=2 VF=8 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/PGYbYKPq8 - for intels `Block RThroughput: =8.0`; for ryzens, `Block RThroughput: <=4.0`
So pick cost of `8`.

For store we have:
https://godbolt.org/z/PGYbYKPq8 - for intels `Block RThroughput: =8.0`; for ryzens, `Block RThroughput: <=8.0`
So pick cost of `8`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i64/f64 Stride=2 VF=4 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:53:32 +0000 (16:53 +0300)]
[X86][Costmodel] Load/store i64/f64 Stride=2 VF=4 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/j5co1qWEW - for intels `Block RThroughput: =4.0`; for ryzens, `Block RThroughput: <=2.0`
So pick cost of `4`.

For store we have:
https://godbolt.org/z/j5co1qWEW - for intels `Block RThroughput: =4.0`; for ryzens, `Block RThroughput: <=4.0`
So pick cost of `4`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i64/f64 Stride=2 VF=2 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:53:28 +0000 (16:53 +0300)]
[X86][Costmodel] Load/store i64/f64 Stride=2 VF=2 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/8a1cfGeMn - for intels `Block RThroughput: =2.0`; for ryzens, `Block RThroughput: =1.0`
So pick cost of `2`.

For store we have:
https://godbolt.org/z/jMdcM47bx - for intels `Block RThroughput: =2.0`; for ryzens, `Block RThroughput: <=2.0`
So pick cost of `2`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i32/f32 Stride=2 VF=32 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:52:51 +0000 (16:52 +0300)]
[X86][Costmodel] Load/store i32/f32 Stride=2 VF=32 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

Here for `store` pattern we are starting to have spilling,
so accurate modelling may be problematic,
although if i drop the spilling, the measurements don't change.

For load we have:
https://godbolt.org/z/1oTTnncbx - for intels `Block RThroughput: =16.0`; for ryzens, `Block RThroughput: <=8.0`
So pick cost of `16`.

For store we have:
https://godbolt.org/z/1oTTnncbx - for intels `Block RThroughput: =16.0`; for ryzens, `Block RThroughput: =8.0`
So pick cost of `16`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i32/f32 Stride=2 VF=16 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:52:51 +0000 (16:52 +0300)]
[X86][Costmodel] Load/store i32/f32 Stride=2 VF=16 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/M9eev3xe8 - for intels `Block RThroughput: =8.0`; for ryzens, `Block RThroughput: <=4.0`
So pick cost of `8`.

For store we have:
https://godbolt.org/z/M9eev3xe8 - for intels `Block RThroughput: =8.0`; for ryzens, `Block RThroughput: =4.0`
So pick cost of `8`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i32/f32 Stride=2 VF=8 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:52:46 +0000 (16:52 +0300)]
[X86][Costmodel] Load/store i32/f32 Stride=2 VF=8 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/n8aMKeo4E - for intels `Block RThroughput: =4.0`; for ryzens, `Block RThroughput: <=2.0`
So pick cost of `4`.

For store we have:
https://godbolt.org/z/n8aMKeo4E - for intels `Block RThroughput: =4.0`; for ryzens, `Block RThroughput: =2.0`
So pick cost of `4`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i32/f32 Stride=2 VF=4 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:52:41 +0000 (16:52 +0300)]
[X86][Costmodel] Load/store i32/f32 Stride=2 VF=4 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/EM5Ean7bd - for intels `Block RThroughput: =2.0`; for ryzens, `Block RThroughput: =1.0`
So pick cost of `2`.

For store we have:
https://godbolt.org/z/EM5Ean7bd - for intels `Block RThroughput: =2.0`; for ryzens, `Block RThroughput: <=2.0`
So pick cost of `2`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[X86][Costmodel] Load/store i32/f32 Stride=2 VF=2 interleaving costs
Roman Lebedev [Fri, 1 Oct 2021 13:52:36 +0000 (16:52 +0300)]
[X86][Costmodel] Load/store i32/f32 Stride=2 VF=2 interleaving costs

The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3

For load we have:
https://godbolt.org/z/4rY96hnGT - for intels `Block RThroughput: =2.0`; for ryzens, `Block RThroughput: =1.0`
So pick cost of `2`.

For store we have:
https://godbolt.org/z/vbo37Y3r9 - for intels `Block RThroughput: =1.0`; for ryzens, `Block RThroughput: =0.5`
So pick cost of `1`.

I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.

Reviewed By: RKSimon

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

3 years ago[gn build] Port fb99424a6f65
LLVM GN Syncbot [Fri, 1 Oct 2021 14:29:37 +0000 (14:29 +0000)]
[gn build] Port fb99424a6f65

3 years ago[SystemZ][z/OS] Introduce initial support for GOFF asm parser
Anirudh Prasad [Fri, 1 Oct 2021 14:29:02 +0000 (10:29 -0400)]
[SystemZ][z/OS] Introduce initial support for GOFF asm parser

- Introduce a skeleton outline for the GOFFAsmParser
- Before instantiating AsmParser/HLASMAsmParser, target specific asm parsers are attempted to be initialized first before proceeding. If it doesn't exist for a particular file type, we report a fatal error.
- This patch allows to properly instantiate the HLASMAsmParser on z/OS, and ensures we can write lit tests and unit tests which will involve the instantiation of asm parsers, without an assert / fatal error.

Reviewed By: uweigand, Kai

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

3 years ago[fir] Remove obsolete fir.negf and fir.modf ops
Eric Schweitz [Fri, 1 Oct 2021 14:10:24 +0000 (16:10 +0200)]
[fir] Remove obsolete fir.negf and fir.modf ops

fir.negf op is replaced by mlir.negf and
fir.modf is just deleted.

Reviewed By: kiranchandramohan

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

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Valentin Clement <clementval@gmail.com>
3 years ago[libomptarget][amdgpu] Refactor memory pool collection
Jon Chesterfield [Fri, 1 Oct 2021 13:38:36 +0000 (14:38 +0100)]
[libomptarget][amdgpu] Refactor memory pool collection

3 years ago[mlir][linalg] Retire PoolingMaxOp/PoolingMinOp/PoolingSumOp.
Tobias Gysi [Fri, 1 Oct 2021 13:29:35 +0000 (13:29 +0000)]
[mlir][linalg] Retire PoolingMaxOp/PoolingMinOp/PoolingSumOp.

The pooling ops are among the last remaining hard coded Linalg operations that have no region attached. They got obsolete due to the OpDSL pooling operations. Removing them allows us to delete specialized code and tests that are not needed for the OpDSL counterparts that rely on the standard code paths.

Reviewed By: nicolasvasilache

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

3 years ago[lldb] Simplify TestCompletion.py
Pavel Labath [Fri, 1 Oct 2021 13:47:22 +0000 (15:47 +0200)]
[lldb] Simplify TestCompletion.py

3 years ago[RISCV][NFC] Reformat a line of frame lowering code
Fraser Cormack [Fri, 1 Oct 2021 13:23:54 +0000 (14:23 +0100)]
[RISCV][NFC] Reformat a line of frame lowering code

3 years ago[clang] Try to unbreak crash-report.cpp on PS4 bot after 8dfbe9b0a
Nico Weber [Fri, 1 Oct 2021 13:31:10 +0000 (09:31 -0400)]
[clang] Try to unbreak crash-report.cpp on PS4 bot after 8dfbe9b0a

Looks like exceptions are off-by-default with the PS4 triple.
Since adding -fexceptions defeats the purpose of the test change
in 8dfbe9b0a, pass an explicit triple instead.

3 years ago[PowerPC] Optimal sequence for doubleword vec_all_{eq|ne} on Power7
Nemanja Ivanovic [Fri, 1 Oct 2021 13:05:15 +0000 (08:05 -0500)]
[PowerPC] Optimal sequence for doubleword vec_all_{eq|ne} on Power7

These builtins produce inefficient code for CPU's prior to Power8
due to vcmpequd being unavailable. The predicate forms can actually
leverage the available vcmpequw along with xxlxor to produce a better
sequence.

3 years ago[lldb] [test] Delay pty/tty imports to fix Windows builds
Michał Górny [Fri, 1 Oct 2021 13:24:49 +0000 (15:24 +0200)]
[lldb] [test] Delay pty/tty imports to fix Windows builds

Delay pty/tty module imports until they are actually used, in order
to prevent their import failures on Windows.

3 years agoFix ambiguous overload build failure
Marcelo Juchem [Fri, 1 Oct 2021 07:42:23 +0000 (08:42 +0100)]
Fix ambiguous overload build failure

LLVM (llvmorg-14-init) under Debian sid using latest gcc (Debian
10.3.0-9) 10.3.0 fails due to ambiguous overload on operators == and !=:

/root/src/llvm/src/llvm/tools/obj2yaml/elf2yaml.cpp:212:22:
error: ambiguous overload for 'operator!='
(operand types are 'llvm::ELFYAML::ELF_SHF' and 'int')

/root/src/llvm/src/llvm/tools/obj2yaml/elf2yaml.cpp:204:32:
error: ambiguous overload for 'operator!='
(operand types are 'const llvm::yaml::Hex64' and 'int')

/root/src/llvm/src/llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp:629:35:
error: ambiguous overload for 'operator=='
(operand types are 'const uint64_t' {aka 'const long unsigned int'} and
'llvm::Register')

Reviewed by: StephenTozer, jmorse, Higuoxing

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

3 years ago[fir][NFC] Remove explicit num of inlined element for SmallVectors
Valentin Clement [Fri, 1 Oct 2021 12:41:25 +0000 (14:41 +0200)]
[fir][NFC] Remove explicit num of inlined element for SmallVectors

Remove explicit number of inlined elements for SmallVector.

This patch is part of the upstreaming effort from fir-dev branch.

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Reviewed By: awarzynski

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

3 years ago[fir] Add fir.char_convert op
Eric Schweitz [Fri, 1 Oct 2021 12:39:03 +0000 (14:39 +0200)]
[fir] Add fir.char_convert op

Add the fir-char_convert op.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: kiranchandramohan

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

Co-authored-by: Valentin Clement <clementval@gmail.com>
3 years ago[lldb] Add a gdb_remote_client test for connecting to pty
Michał Górny [Thu, 30 Sep 2021 20:30:30 +0000 (22:30 +0200)]
[lldb] Add a gdb_remote_client test for connecting to pty

Add a minimal mock server utilizing a pty, and add a client test
connecting to that server.

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

3 years ago[MLIR][GPU] Add GPU launch op support for dynamic shared memory
Uday Bondhugula [Tue, 14 Sep 2021 08:43:21 +0000 (14:13 +0530)]
[MLIR][GPU] Add GPU launch op support for dynamic shared memory

Add support for dynamic shared memory for GPU launch ops: add an
optional operand to gpu.launch and gpu.launch_func ops to specify the
amount of "dynamic" shared memory to use. Update lowerings to connect
this operand to the GPU runtime.

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

3 years ago[libFuzzer] Fix two typos
Hans Wennborg [Fri, 1 Oct 2021 08:59:43 +0000 (10:59 +0200)]
[libFuzzer] Fix two typos

3 years ago[mlir] Enable loop peeling for "reduction" dimensions of tiled_loop.
Alexander Belyaev [Fri, 1 Oct 2021 11:02:42 +0000 (13:02 +0200)]
[mlir] Enable loop peeling for "reduction" dimensions of tiled_loop.

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

3 years ago[RISCV][NFC] Add closing parentheses to frame layout comments
Fraser Cormack [Fri, 1 Oct 2021 10:57:55 +0000 (11:57 +0100)]
[RISCV][NFC] Add closing parentheses to frame layout comments

3 years ago[lldb] [Host] Refactor TerminalState
Michał Górny [Wed, 29 Sep 2021 15:51:51 +0000 (17:51 +0200)]
[lldb] [Host] Refactor TerminalState

Refactor TerminalState to make the code simpler.  Move 'struct termios'
to a PImpl-style subclass.  Add an RAII interface to automatically store
and restore the state.

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

3 years ago[clangd] Handle members of anon structs in SelectionTree
Kadir Cetinkaya [Thu, 30 Sep 2021 13:25:42 +0000 (15:25 +0200)]
[clangd] Handle members of anon structs in SelectionTree

References to fields inside anon structs contain an implicit children
for the container, which has the same SourceLocation with the field.
This was resulting in SelectionTree always picking the anon-struct rather than
the field as the selection.

This patch prevents that by claiming the range for the field early.

https://github.com/clangd/clangd/issues/877.

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

3 years ago[BasicAA] Add test showing 32 bit overflow issue for GEPs.
Florian Hahn [Fri, 1 Oct 2021 10:25:16 +0000 (11:25 +0100)]
[BasicAA] Add test showing 32 bit overflow issue for GEPs.

This patch additional tests with i64 GEP indices for 32 bit pointers.
@mustalias_overflow_in_32_bit_add_mul_gep highlights a case where
BasicAA currently incorrectly determines noalias.

Modeled in Alive2 for 32 bit pointers: https://alive2.llvm.org/ce/z/HHjQgb
Modeled in Alive2 for 64 bit pointers: https://alive2.llvm.org/ce/z/DoWK2c

3 years ago[AArch64][SVE] Replace fmul, fadd and fsub LLVM IR instrinsics with LLVM IR binary ops
Matthew Devereau [Wed, 1 Sep 2021 15:41:42 +0000 (16:41 +0100)]
[AArch64][SVE] Replace fmul, fadd and fsub LLVM IR instrinsics with LLVM IR binary ops

Replacing fmul and fadd instrinsics with their binary ops results
more succinct AArch64 SVE output, e.g.:

4:   65428041  fmul z1.h, p0/m, z1.h, z2.h
8:   65408020  fadd z0.h, p0/m, z0.h, z1.h
->
4:   65620020   fmla    z0.h, p0/m, z1.h, z2.h

3 years ago[SLPVectorizer] Fix crash in isShuffle with scalable vectors
Kerry McLaughlin [Fri, 1 Oct 2021 08:43:27 +0000 (09:43 +0100)]
[SLPVectorizer] Fix crash in isShuffle with scalable vectors

D104809 changed `buildTree_rec` to check for extract element instructions
with scalable types. However, if the extract is extended or truncated,
these changes do not apply and we assert later on in isShuffle(), which
attempts to cast the type of the extract to FixedVectorType.

Reviewed By: ABataev

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

3 years ago[llvm-reduce] Skip updating calls where OldF isn't the called fn.
Florian Hahn [Fri, 1 Oct 2021 08:56:08 +0000 (09:56 +0100)]
[llvm-reduce] Skip updating calls where OldF isn't the called fn.

When replacing function calls, skip call instructions where the old
function is not the called function, but e.g. the old function is passed
as an argument.

This fixes a crash due to trying to construct invalid IR for the test
case.

Reviewed By: aeubanks

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

3 years agoRevert "[libcxx][test] Use python specified by build rather than system default python"
David Spickett [Fri, 1 Oct 2021 09:44:44 +0000 (09:44 +0000)]
Revert "[libcxx][test] Use python specified by build rather than system default python"

This reverts commit 9f641c96cb15c9752c976bff286bb57adf86acab.

The "python" command in gdb uses the python gdb is linked to,
not what "python" would give you if you used it directly in the shell.

3 years agoRevert "[libcxx] Run u16string tests for gdb pretty printers"
David Spickett [Fri, 1 Oct 2021 09:43:16 +0000 (09:43 +0000)]
Revert "[libcxx] Run u16string tests for gdb pretty printers"

This reverts commit e9564c3698edffc64439a8f957c7c28b19214613
due to a report of these tests failing.

3 years agoRevert "[LoopVectorize] Permit vectorisation of more select(cmp(), X, Y) reduction...
Krasimir Georgiev [Fri, 1 Oct 2021 09:37:40 +0000 (11:37 +0200)]
Revert "[LoopVectorize] Permit vectorisation of more select(cmp(), X, Y) reduction patterns"

It appears to cause stage2 clang build failures, e.g.,
https://lab.llvm.org/buildbot/#/builders/74/builds/7145.

This reverts commit 1fb37334bdb3cdb028977382fbd84cebde64ebb2.

3 years ago[clang][ASTImporter] Import ConstructorUsingShadowDecl correctly.
Balázs Kéri [Fri, 1 Oct 2021 09:04:54 +0000 (11:04 +0200)]
[clang][ASTImporter] Import ConstructorUsingShadowDecl correctly.

Fix import of ConstructorUsingShadowDecl and add tests.

Reviewed By: martong

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

3 years ago[flang][driver] Error if uuidgen is not installed
David Spickett [Wed, 29 Sep 2021 11:30:55 +0000 (12:30 +0100)]
[flang][driver] Error if uuidgen is not installed

Ubuntu Bionic installs it by default, Focal does not.

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

3 years ago[clang][ASTImporter] Import InheritedConstructor and ConstructorUsingShadowDecl.
Gabor Marton [Fri, 1 Oct 2021 07:24:41 +0000 (09:24 +0200)]
[clang][ASTImporter] Import InheritedConstructor and ConstructorUsingShadowDecl.

Reviewed By: martong

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

3 years ago[LoopVectorize] Permit vectorisation of more select(cmp(), X, Y) reduction patterns
David Sherwood [Wed, 4 Aug 2021 07:10:51 +0000 (08:10 +0100)]
[LoopVectorize] Permit vectorisation of more select(cmp(), X, Y) reduction patterns

This patch adds further support for vectorisation of loops that involve
selecting an integer value based on a previous comparison. Consider the
following C++ loop:

  int r = a;
  for (int i = 0; i < n; i++) {
    if (src[i] > 3) {
      r = b;
    }
    src[i] += 2;
  }

We should be able to vectorise this loop because all we are doing is
selecting between two states - 'a' and 'b' - both of which are loop
invariant. This just involves building a vector of values that contain
either 'a' or 'b', where the final reduced value will be 'b' if any lane
contains 'b'.

The IR generated by clang typically looks like this:

  %phi = phi i32 [ %a, %entry ], [ %phi.update, %for.body ]
  ...
  %pred = icmp ugt i32 %val, i32 3
  %phi.update = select i1 %pred, i32 %b, i32 %phi

We already detect min/max patterns, which also involve a select + cmp.
However, with the min/max patterns we are selecting loaded values (and
hence loop variant) in the loop. In addition we only support certain
cmp predicates. This patch adds a new pattern matching function
(isSelectCmpPattern) and new RecurKind enums - SelectICmp & SelectFCmp.
We only support selecting values that are integer and loop invariant,
however we can support any kind of compare - integer or float.

Tests have been added here:

  Transforms/LoopVectorize/AArch64/sve-select-cmp.ll
  Transforms/LoopVectorize/select-cmp-predicated.ll
  Transforms/LoopVectorize/select-cmp.ll

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

3 years ago[SelectionDAG] Handle promotion + widening in getCopyToPartsVector
Sander de Smalen [Thu, 16 Sep 2021 15:03:52 +0000 (16:03 +0100)]
[SelectionDAG] Handle promotion + widening in getCopyToPartsVector

Some vectors require both widening and promotion for their legalization.
This case is not yet handled in getCopyToPartsVector and falls back
on scalarizing by default. BBecause scalable vectors can't easily be
scalarised, we need to implement this in two separate stages:
1. Widen the vector.
2. Promote the vector.

As part of this patch, PromoteIntRes_CONCAT_VECTORS also needed to be
made scalable aware. Instead of falling back on scalarizing the vector
(fixed-width only), each sub-part of the CONCAT vector is promoted,
and the operation is performed on the type with the widest element type,
finally truncating the result to the promoted result type.

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

3 years ago[fir][NFC] Move fir.select_type builder to cpp file
Valentin Clement [Fri, 1 Oct 2021 07:19:17 +0000 (09:19 +0200)]
[fir][NFC] Move fir.select_type builder to cpp file

Move the big builder out of the td file to the cpp file.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: kiranchandramohan

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

3 years ago[fir][NFC] Update doc for pinned attr in fir.alloca
Valentin Clement [Fri, 1 Oct 2021 07:17:41 +0000 (09:17 +0200)]
[fir][NFC] Update doc for pinned attr in fir.alloca

Add descritpion for the attribute added in D110815.

Reviewed By: kiranchandramohan

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

3 years ago[flang] Revert 3 commits pushed by mistake along b7c07ce15ffe6da9dcd69d457a3eca987452edc7
Jean Perier [Fri, 1 Oct 2021 06:58:52 +0000 (08:58 +0200)]
[flang] Revert 3 commits pushed by mistake along b7c07ce15ffe6da9dcd69d457a3eca987452edc7

Revert "[flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol"
This reverts commit b0e35fde21ecb47799603e1acfc9ffa7b83dea13.

Revert "[flang] Add a wrapper for Fortran main program"
This reverts commit 2c1ce0755e09909c41db93845c4c3f42457cb9c8.

Revert "[flang][NFC] Fix header comments in some runtime headers"
This reverts commit a63f57674d511eb287edbabad9674c6298cf8b84.

3 years ago[flang] Improve runtime interface with C99 complex
Jean Perier [Fri, 1 Oct 2021 06:42:42 +0000 (08:42 +0200)]
[flang] Improve runtime interface with C99 complex

Follow up of https://reviews.llvm.org/D83397.

In folding, make pgmath usage conditional to C99 complex
support in C++. Disable warning in such case.

In lowering, use an empty class type to indicate C99 complex
type in runtime interface.

Add a unit test enforcing C99 complex can be processed
by FIR runtime interface builder.

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

3 years ago[flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol
Jean Perier [Thu, 30 Sep 2021 14:22:16 +0000 (07:22 -0700)]
[flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol

Helps debugging when working with symbol/expression issue. The dump
method is easy to call in the debugger.

3 years ago[flang] Add a wrapper for Fortran main program
Jean Perier [Thu, 30 Sep 2021 13:26:00 +0000 (06:26 -0700)]
[flang] Add a wrapper for Fortran main program

Add a C wrapper that calls the Fortran runtime initialization and
finalization routines as well as the compiled Fortran main program
_QQmain.

Place it in its own library to satisfy shared library builds since it
contains a C main function.

- https://github.com/flang-compiler/f18-llvm-project/commit/cc7ac498f916d32a9b197d3ace816f4de5d36aad#diff-fa35a5efa62731fd2845e5e982eca9a2e36439783e11a4e4a463753c2160ec10R53
- was created in flang/test/Examples/main.c in Eric's branch

3 years ago[flang][NFC] Fix header comments in some runtime headers
Jean Perier [Thu, 30 Sep 2021 12:04:47 +0000 (05:04 -0700)]
[flang][NFC] Fix header comments in some runtime headers

3 years ago[MemProf] Loosen matching of profile data to avoid bot flakes
Teresa Johnson [Fri, 1 Oct 2021 04:13:51 +0000 (21:13 -0700)]
[MemProf] Loosen matching of profile data to avoid bot flakes

Allow for the allocations to have migrated cpus, assuming they wouldn't
is causing some bot flakiness, e.g.:
https://lab.llvm.org/buildbot/#/builders/37/builds/7197

3 years agoExpose `DIBuilder::finalizeSubprogram()` through the LLVM C API
Koutheir Attouchi [Fri, 1 Oct 2021 03:57:53 +0000 (20:57 -0700)]
Expose `DIBuilder::finalizeSubprogram()` through the LLVM C API

The LLVM C API function is called `LLVMDIBuilderFinalizeSubprogram()`.

Reviewed By: CodaFi

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

3 years ago[PowerPC] Fix lharx and lbarx builtin signatures
Albion Fung [Thu, 30 Sep 2021 23:50:09 +0000 (18:50 -0500)]
[PowerPC] Fix lharx and lbarx builtin signatures

The signatures for the PowerPC builtins lharx and
lbarx are incorrect, and causes issues when used in a function
that requires the return of the builtin to be promoted.
This patch fixes these signatures.

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

3 years ago[NFC][asan] Remove redundant functions
Vitaly Buka [Fri, 1 Oct 2021 02:36:53 +0000 (19:36 -0700)]
[NFC][asan] Remove redundant functions

3 years ago[NFC][lsan] Expand use StackDepotReverseMap
Vitaly Buka [Fri, 1 Oct 2021 02:24:53 +0000 (19:24 -0700)]
[NFC][lsan] Expand use StackDepotReverseMap

Before StackDepotReverseMap was used only by ProcessPC.

3 years ago[NFC][sanitizer] Lazy init in StackDepotReverseMap
Vitaly Buka [Fri, 1 Oct 2021 02:10:20 +0000 (19:10 -0700)]
[NFC][sanitizer] Lazy init in StackDepotReverseMap

3 years ago[gn build] Port 3077bc90de8d
LLVM GN Syncbot [Fri, 1 Oct 2021 00:43:50 +0000 (00:43 +0000)]
[gn build] Port 3077bc90de8d

3 years ago[NFC] Restore magic and magicu to a globally visible location
Christopher Tetreault [Thu, 30 Sep 2021 17:34:56 +0000 (10:34 -0700)]
[NFC] Restore magic and magicu to a globally visible location

While these functions are only used in one location in upstream,
it has been reused in multiple downstreams. Restore this file to
a globally visibile location (outside of APInt.h) to eliminate
donwstream breakage and enable potential future reuse.

Additionally, this patch renames types and cleans up
clang-tidy issues.

3 years agoadd tsan shared library
ZijunZhao [Fri, 1 Oct 2021 00:19:35 +0000 (00:19 +0000)]
add tsan shared library

3 years ago[NFC][sanitizer] Add const into method
Vitaly Buka [Fri, 1 Oct 2021 00:15:07 +0000 (17:15 -0700)]
[NFC][sanitizer] Add const into method

3 years agoBPF: implement isLegalAddressingMode() properly
Yonghong Song [Mon, 27 Sep 2021 15:21:48 +0000 (08:21 -0700)]
BPF: implement isLegalAddressingMode() properly

Latest upstream llvm caused the kernel bpf selftest emitting the
following warnings:

  In file included from progs/profiler3.c:6:
  progs/profiler.inc.h:489:2: warning: loop not unrolled:
    the optimizer was unable to perform the requested transformation;
    the transformation might be disabled or specified as part of an unsupported
    transformation ordering [-Wpass-failed=transform-warning]
          for (int i = 0; i < MAX_PATH_DEPTH; i++) {
          ^

Further bisecting shows this SimplifyCFG patch ([1]) changed
the condition on how to fold branch to common dest. This caused
some unroll pragma is not honored in selftests/bpf.

The patch [1] test getUserCost() as the condition to
perform the certain basic block folding transformation.
For the above example, before the loop unroll pass, the control flow
looks like:
    cond_block:
       branch target: body_block, cleanup_block
    body_block:
       branch target: cleanup_block, end_block
    end_block:
       branch target: cleanup_block, end10_block
    end10_block:
       %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2
       %inc = add nuw nsw i32 %i.0, 1
       branch target: cond_block

In the above, %call2 is an unknown scalar.

Before patch [1], end10_block will be folded into end_block, forming
the code like
    cond_block:
       branch target: body_block, cleanup_block
    body_block:
       branch target: cleanup_block, end_block
    end_block:
       branch target: cleanup_block, cond_block
and the compiler is happy to perform unrolling.

With patch [1], getUserCost(), which calls getGEPCost(), which calls
isLegalAddressingMode() in TargetLoweringBase.cpp, considers IR
  %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2
is free, so the above basic block folding transformation is not performed
and unrolling does not happen.

For BPF target, the IR
  %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2
is not free and we don't have ld/st instruction address with 'r+r' mode.

This patch implemented a BPF hook for isLegalAddressingMode(), which is
identical to Mips isLegalAddressingMode() implementation where
the address pattern like 'r+r', 'r+r+i' or '2*r' are not allowed.
With testing kernel bpf selftests, all loop not unrolled warnings
are gone and all selftests run successfully.

  [1] https://reviews.llvm.org/D108837

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

3 years ago[test] Add tests covering a missing opt in SCEV's isSCEVExprNeverPoison
Philip Reames [Thu, 30 Sep 2021 23:14:55 +0000 (16:14 -0700)]
[test] Add tests covering a missing opt in SCEV's isSCEVExprNeverPoison

3 years ago[libcxx][test] Use python specified by build rather than system default python
Leonard Chan [Thu, 30 Sep 2021 22:34:30 +0000 (15:34 -0700)]
[libcxx][test] Use python specified by build rather than system default python

As of e9564c3698edffc64439a8f957c7c28b19214613, libcxx/gdb/gdb_pretty_printer_test.sh.cpp
fails locally for me because the REQUIRES check for host-has-gdb-with-python
uses python, which for me expands to python 2.7.18. This failure does not seem
to be caught on any upstream builders, potentially because they don't have gdb,
python, or a version of python that makes the test UNSUPPORTED (like python3).

This updates the check to use the python specified by the build (which should
be the python that runs this code), rather than just python.

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

3 years ago[SCEV] Modernize code style of isSCEVExprNeverPoison [NFC]
Philip Reames [Thu, 30 Sep 2021 22:13:00 +0000 (15:13 -0700)]
[SCEV] Modernize code style of isSCEVExprNeverPoison [NFC]

Use for-range and all_of to make code easier to read in advance of other changes.

3 years ago[MemProf] Record accesses for all words touched in mem intrinsic
Teresa Johnson [Thu, 30 Sep 2021 02:14:09 +0000 (19:14 -0700)]
[MemProf] Record accesses for all words touched in mem intrinsic

Previously for mem* intrinsics we only incremented the access count for
the first word in the range. However, after thinking it through I think
it makes more sense to record an access for every word in the range.
This better matches the behavior of inlined memory intrinsics, and also
allows better analysis of utilization at a future date.

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

3 years ago[MC] Fix buildbots with shared lib builds
Rafael Auler [Thu, 30 Sep 2021 21:35:38 +0000 (14:35 -0700)]
[MC] Fix buildbots with shared lib builds

In D109412 I forgot to add a dependency on libObject. Fix that.

Reviewed By: maksfb

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

3 years ago[GlobalISel] Extend CombinerHelper::matchConstantOp() to match constant splat vectors.
Amara Emerson [Thu, 30 Sep 2021 07:20:56 +0000 (00:20 -0700)]
[GlobalISel] Extend CombinerHelper::matchConstantOp() to match constant splat vectors.

This allows the "x op 0 -> x" fold to optimize vector constant RHSs.

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

3 years ago[flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol
Jean Perier [Thu, 30 Sep 2021 21:16:29 +0000 (23:16 +0200)]
[flang][NFC] Add debug dump method to evaluate::Expr and semantics::Symbol

Helps debugging when working with symbol/expression issue. The dump
method is easy to call in the debugger.

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Differential Revision: https://reviews.llvm.org/D110856

3 years ago[RISCV] Remove Zbproposedc extension
Craig Topper [Thu, 30 Sep 2021 19:00:31 +0000 (12:00 -0700)]
[RISCV] Remove Zbproposedc extension

This consists of 3 compressed instructions, c.not, c.neg, and c.zext.w.
I believe these have been picked up by the Zce effort using different
encodings. I don't think it makes sense to keep them in bitmanip. It
will eventually cause a conflict if/when Zce is implemented in llvm.

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

3 years ago[flang] Take into account SubprogramDetails in GetInterfaceSymbol
Jean Perier [Thu, 30 Sep 2021 21:06:22 +0000 (23:06 +0200)]
[flang] Take into account SubprogramDetails in GetInterfaceSymbol

When the ProcRef is Symbol is a SubprogramDetails, the interface is
the SubprogramDetails. Do not return nullptr.

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