platform/upstream/llvm.git
4 years ago[llvm-nm] Display STT_GNU_IFUNC as 'i'
Fangrui Song [Sun, 22 Dec 2019 05:53:22 +0000 (21:53 -0800)]
[llvm-nm] Display STT_GNU_IFUNC as 'i'

Reviewed By: grimar

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

4 years ago[compiler-rt] [netbsd] Correct the fallback definition of PT_LWPNEXT
Kamil Rytarowski [Wed, 25 Dec 2019 17:18:12 +0000 (18:18 +0100)]
[compiler-rt] [netbsd] Correct the fallback definition of PT_LWPNEXT

Fixes build on NetBSD 9.0.

4 years ago[AMDGPU][MC][DOC] Updated AMD GPU assembler syntax description.
Dmitry Preobrazhensky [Wed, 25 Dec 2019 14:51:53 +0000 (17:51 +0300)]
[AMDGPU][MC][DOC] Updated AMD GPU assembler syntax description.

Summary of changes:
- added description of GFX9 subtargets:
  - gfx900;
  - gfx902;
  - gfx904;
  - gfx906;
  - gfx908;
  - gfx909.

4 years ago[llvm-readobj] - Merge `gnu-symbols.test` to `symbols.test` and cleanup.
Georgii Rymar [Thu, 19 Dec 2019 11:01:23 +0000 (14:01 +0300)]
[llvm-readobj] - Merge `gnu-symbols.test` to `symbols.test` and cleanup.

This cleans up and merges `gnu-symbols.test` to `symbols.test`.
Initially `gnu-symbols.test` tested the following things:
1) How symbols are printed in GNU style.
   It does not make sense to have a separate file for such tests.
2) It tried to test proc-specific symbol indexes. The test was incomplete and
   also we already have `symbol-shndx.test` for that, so this part was removed.
3) It tested `--dyn-symbols` and `--symbols` correlation. All following
   cases were moved to `symbols.test`:
   a) That `--dyn-symbols` does not trigger showing regular symbols..
   b) That `--symbols` triggers `--dyn-symbols` implicitly.
   c) That `--dyn-symbols` and `--symbols` works fine together.

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

4 years ago[llvm-readobj/llvm-readelf][test] - Add testing for EI_OSABI and EI_ABIVERSION fields...
Georgii Rymar [Fri, 20 Dec 2019 11:40:32 +0000 (14:40 +0300)]
[llvm-readobj/llvm-readelf][test] - Add testing for EI_OSABI and EI_ABIVERSION fields of an ELF header.

We had no separate tests for these fields.

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

4 years agoAdd missing strict_fp_to_int
Liu, Chen3 [Wed, 25 Dec 2019 08:10:10 +0000 (16:10 +0800)]
Add missing strict_fp_to_int

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

4 years ago[MLIR][NFC] Insert const_cast to avoid warning
Hideto Ueno [Wed, 25 Dec 2019 05:50:56 +0000 (14:50 +0900)]
[MLIR][NFC] Insert const_cast to avoid warning

Reviewers: rriddle

Reviewed By: rriddle

Subscribers: mehdi_amini

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

4 years ago [Attributor] Reach optimistic fixpoint in AAValueSimplify when the value is constant...
Hideto Ueno [Wed, 25 Dec 2019 05:14:32 +0000 (14:14 +0900)]
 [Attributor] Reach optimistic fixpoint in AAValueSimplify when the value is constant or undef

Summary:
As discussed in D71799, we have found that it is more useful to reach an optimistic fixpoint in AAValueSimpify when the value is constant or undef.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: baziotis, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[X86FixupSetCC] Use MachineInstr::readRegister/definesRegister to check for EFLAGS...
Craig Topper [Wed, 25 Dec 2019 03:22:55 +0000 (19:22 -0800)]
[X86FixupSetCC] Use MachineInstr::readRegister/definesRegister to check for EFLAGS use/def instead of our own custom operand scan. NFCI

4 years ago[compiler-rt] [netbsd] Define _RTLD_SOURCE to fix build
Kamil Rytarowski [Wed, 25 Dec 2019 03:05:10 +0000 (04:05 +0100)]
[compiler-rt] [netbsd] Define _RTLD_SOURCE to fix build

The TLS base (LWP private pointer) functions are namespaced and
hidden i.e. inside the _RTLD_SOURCE namespace.

4 years ago[Attributor] UB Attribute now handles all instructions that access memory through...
Johannes Doerfert [Wed, 25 Dec 2019 01:25:08 +0000 (19:25 -0600)]
[Attributor] UB Attribute now handles all instructions that access memory through a pointer

Summary:
Follow-up on: https://reviews.llvm.org/D71435
We basically use `checkForAllInstructions` to loop through all the instructions in a function that access memory through a pointer: load, store, atomicrmw, atomiccmpxchg
Note that we can now use the `getPointerOperand()` that gets us the pointer operand for an instruction that belongs to the aforementioned set.

Question: This function returns `nullptr` if the instruction is `volatile`. Why?
Guess:  Because if it is volatile, we don't want to do any transformation to it.

Another subtle point is that I had to add AtomicRMW, AtomicCmpXchg to `initializeInformationCache()`. Following `checkAllInstructions()` path, that
seemed the most reasonable place to add it and correct the fact that these instructions were ignored (they were not in `OpcodeInstMap` etc.). Is that ok?

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert, sstefan1

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

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

4 years ago[Attributor] Function level undefined behavior attribute
Johannes Doerfert [Wed, 25 Dec 2019 00:48:50 +0000 (18:48 -0600)]
[Attributor] Function level undefined behavior attribute

_Eventually_, this attribute will be assigned to a function if it
contains undefined behavior. As a first small step, I tried to make it
loop through the load instructions in a function (eventually, the plan
is to check if a load instructions causes undefined behavior, because
e.g. dereferences a null pointer - Also eventually, this won't happen in
initialize() but in updateImpl()).

Patch By: Stefanos Baziotis (@baziotis)

Reviewed By: jdoerfert

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

4 years ago[MCJIT] Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"
Fangrui Song [Wed, 25 Dec 2019 01:10:32 +0000 (17:10 -0800)]
[MCJIT] Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"

4 years ago[WinEH] Delete addFnAttr("no-frame-pointer-elim") which seems no longer needed
Fangrui Song [Wed, 25 Dec 2019 00:30:37 +0000 (16:30 -0800)]
[WinEH] Delete addFnAttr("no-frame-pointer-elim") which seems no longer needed

It was added in rL238619.

Reviewed By: rnk

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

4 years ago[Thumb][test] Fix CodeGen/Thumb/PR17309.ll after llvmorg-10-init-16046-ga36ddf0aa9d
Fangrui Song [Wed, 25 Dec 2019 00:57:40 +0000 (16:57 -0800)]
[Thumb][test] Fix CodeGen/Thumb/PR17309.ll  after llvmorg-10-init-16046-ga36ddf0aa9d

All of

"no-frame-pointer-elim-non-leaf"
"no-frame-pointer-elim-non-leaf"="true"
"no-frame-pointer-elim-non-leaf"="false"

mean "frame-pointer"="non-leaf", which is quite counter-intuitive.
llvmorg-10-init-16046-ga36ddf0aa9d accidentally broke it.

This fixes the -DLLVM_ENABLE_EXPENSIVE_CHECKS=On test:

```
*** Bad machine code: Non-flag-setting Thumb1 mov is v6-only ***
- function:    pass_C
- basic block: %bb.0 entry (0x1fc9bf0)
- instruction: $r0 = tMOVr killed $r6, 14, $noreg
```

4 years ago[Support] Fix behavior of StringRef::count with overlapping occurrences, add tests
Johannes Doerfert [Tue, 24 Dec 2019 23:25:37 +0000 (17:25 -0600)]
[Support] Fix behavior of StringRef::count with overlapping occurrences, add tests

Summary:
Fix the behavior of StringRef::count(StringRef) to not count overlapping occurrences, as is stated in the documentation.
Fixes bug https://bugs.llvm.org/show_bug.cgi?id=44072

I added Krzysztof Parzyszek to review this change because a use of this function in HexagonInstrInfo::getInlineAsmLength might depend on the overlapping-behavior. I don't have enough domain knowledge to tell if this change could break anything there.

All other uses of this method in LLVM (besides the unit tests) only use single-character search strings. In those cases, search occurrences can not overlap anyway.

Patch by Benno (@Bensge)

Reviewed By: jdoerfert

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

4 years agoMigrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none...
Fangrui Song [Wed, 25 Dec 2019 00:11:33 +0000 (16:11 -0800)]
Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351

4 years agoMigrate function attribute "no-frame-pointer-elim-non-leaf" to "frame-pointer"="non...
Fangrui Song [Wed, 25 Dec 2019 00:02:47 +0000 (16:02 -0800)]
Migrate function attribute "no-frame-pointer-elim-non-leaf" to "frame-pointer"="non-leaf" as cleanups after D56351

4 years agoMigrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanu...
Fangrui Song [Tue, 24 Dec 2019 23:52:21 +0000 (15:52 -0800)]
Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351

4 years ago[OPENMP]Add extra checks and initialization for clause modifier.
Alexey Bataev [Tue, 24 Dec 2019 21:02:58 +0000 (16:02 -0500)]
[OPENMP]Add extra checks and initialization for clause modifier.

Added initialization of the extra modifier to silence sanitizer. Added
extra checks to avoid such trouble in future.

4 years agoAMDGPU/GlobalISel: Fix mapping and selection of llvm.amdgcn.div.fixup
Matt Arsenault [Fri, 20 Dec 2019 15:52:03 +0000 (21:22 +0530)]
AMDGPU/GlobalISel: Fix mapping and selection of llvm.amdgcn.div.fixup

4 years ago[lldb] Adapt for NetBSD-9.99.30 ptrace(2) API changes
Kamil Rytarowski [Tue, 24 Dec 2019 19:36:23 +0000 (20:36 +0100)]
[lldb] Adapt for NetBSD-9.99.30 ptrace(2) API changes

Switch from PT_LWPINFO to PT_LWPSTATUS/PT_LWPNEXT.

Keep compat support for < 9.99.30.

No functional change intended.

4 years ago[compiler-rt] Adapt for ptrace(2) changes in NetBSD-9.99.30
Kamil Rytarowski [Tue, 24 Dec 2019 19:34:58 +0000 (20:34 +0100)]
[compiler-rt] Adapt for ptrace(2) changes in NetBSD-9.99.30

Enable compat support for now legacy PT_LWPINFO.
Support PT_LWPSTATUS and PT_LWPNEXT.

4 years ago[compiler-rt] Adapt stop-the-world for ptrace changes in NetBSD-9.99.30
Kamil Rytarowski [Tue, 24 Dec 2019 19:33:54 +0000 (20:33 +0100)]
[compiler-rt] Adapt stop-the-world for ptrace changes in NetBSD-9.99.30

Handle PT_LWPNEXT for newer kernels and keep PT_LWPINFO for older ones.

4 years ago[X86] Use 128-bit vector instructions for f32/f64->i64 conversions on 32-bit targets...
Craig Topper [Tue, 24 Dec 2019 19:08:06 +0000 (11:08 -0800)]
[X86] Use 128-bit vector instructions for f32/f64->i64 conversions on 32-bit targets with avx512dq and avx512vl instructions.

On 32-bit targets we can't use the scalar instruction so we
insert the scalar into a vector and use packed conversions.
Previously we used either v4f32->v4i64 or v4f64->v4i64 to avoid
some complexity creating target specific ISD opcodes for
v4f32->v2i64. But this causes extra vzeroupper instructions and
possibly frequency throttling on Intel CPUs.

This patch changes this to create a 128-bit vector and uses a
target specific ISD opcode if needed.

4 years ago[mlir] Fix -Wunneeded-internal-declaration
Fangrui Song [Tue, 24 Dec 2019 18:29:49 +0000 (10:29 -0800)]
[mlir] Fix -Wunneeded-internal-declaration

4 years agotest: ensure that we dead-strip in the linker
Saleem Abdulrasool [Tue, 24 Dec 2019 18:18:13 +0000 (10:18 -0800)]
test: ensure that we dead-strip in the linker

`/OPT:REF` is needed for link to dead strip functions, `/Gy` by itself
is not sufficient.

4 years ago[X86] Add STRICT versions of CVTTP2SI, CVTTP2UI, CMPM, and CMPP.
Craig Topper [Tue, 24 Dec 2019 18:07:04 +0000 (10:07 -0800)]
[X86] Add STRICT versions of CVTTP2SI, CVTTP2UI, CMPM, and CMPP.

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

4 years ago[OPENMP][DOCS]Update status of OpenMP 5.0 features, NFC.
Alexey Bataev [Tue, 24 Dec 2019 17:39:59 +0000 (12:39 -0500)]
[OPENMP][DOCS]Update status of OpenMP 5.0 features, NFC.

4 years ago[OPENMP50]Basic support for conditional lastprivate.
Alexey Bataev [Fri, 20 Dec 2019 16:04:57 +0000 (11:04 -0500)]
[OPENMP50]Basic support for conditional lastprivate.

Added parsing/sema checks for conditional lastprivates.

4 years agoGlobalISel: Update syntax in debug printing
Matt Arsenault [Sat, 21 Dec 2019 20:20:46 +0000 (15:20 -0500)]
GlobalISel: Update syntax in debug printing

Physical register names now start with $, not %

4 years agoGlobalISel: Define equivalent node for G_INTRINSIC_ROUND
Matt Arsenault [Tue, 24 Dec 2019 00:57:28 +0000 (19:57 -0500)]
GlobalISel: Define equivalent node for G_INTRINSIC_ROUND

4 years agoGlobalISel: Fix naming variables "brank" instead of "bank"
Matt Arsenault [Sun, 22 Dec 2019 18:46:40 +0000 (13:46 -0500)]
GlobalISel: Fix naming variables "brank" instead of "bank"

4 years ago[lldb][NFC] Move ClangASTContext::m_scratch_ast_source_up to the appropriate class
Raphael Isemann [Tue, 24 Dec 2019 08:31:45 +0000 (09:31 +0100)]
[lldb][NFC] Move ClangASTContext::m_scratch_ast_source_up to the appropriate class

m_scratch_ast_source_up is only used by ClangASTContextForExpressions so it
should also be declared only in that class. Also make all other members of
ClangASTContext private and move the initialization code for ClangASTContextForExpressions
into the constructor.

4 years agoFix readability-const-return-type identifying the wrong `const` token
Ilya Mirsky [Tue, 24 Dec 2019 15:10:01 +0000 (10:10 -0500)]
Fix readability-const-return-type identifying the wrong `const` token

Replace tidy::utils::lexer::getConstQualifyingToken with a corrected and also
generalized to other qualifiers variant - getQualifyingToken.

Fixes PR44326

4 years agoFix false positive in magic number checker.
Florin Iucha [Tue, 24 Dec 2019 15:03:00 +0000 (10:03 -0500)]
Fix false positive in magic number checker.

cppcoreguidelines-avoid-magic-numbers should not warn about enum class.
Fixes PR40640.

4 years agoAMDGPU/GlobalISel: Legalize some 16-bit round instructions
Matt Arsenault [Tue, 24 Dec 2019 00:42:53 +0000 (19:42 -0500)]
AMDGPU/GlobalISel: Legalize some 16-bit round instructions

4 years agoGlobalISel: Define equivalent node for G_INTRINSIC_TRUNC
Matt Arsenault [Tue, 24 Dec 2019 00:30:53 +0000 (19:30 -0500)]
GlobalISel: Define equivalent node for G_INTRINSIC_TRUNC

4 years agoAMDGPU/GlobalISel: Lower llvm.amdgcn.else
Matt Arsenault [Fri, 20 Dec 2019 18:35:18 +0000 (00:05 +0530)]
AMDGPU/GlobalISel: Lower llvm.amdgcn.else

4 years ago[NFC] Remove some dead code from CGBuiltin.cpp.
Kevin P. Neal [Tue, 24 Dec 2019 14:38:34 +0000 (09:38 -0500)]
[NFC] Remove some dead code from CGBuiltin.cpp.

4 years agoVariableName doc: fix the link to the mozilla doc
Sylvestre Ledru [Tue, 24 Dec 2019 12:38:59 +0000 (13:38 +0100)]
VariableName doc: fix the link to the mozilla doc

4 years agomlir README.md: Fix the syntax
Sylvestre Ledru [Tue, 24 Dec 2019 12:31:07 +0000 (13:31 +0100)]
mlir README.md: Fix the syntax

4 years ago[lldb][NFC] Remove ClangExternalASTSourceCommon
Raphael Isemann [Mon, 23 Dec 2019 19:42:25 +0000 (20:42 +0100)]
[lldb][NFC] Remove ClangExternalASTSourceCommon

ClangExternalASTSourceCommon's purpose is to store a map from
Decl*/Type* to ClangASTMetadata. Usually this data is accessed
via the ClangASTContext interface which then grabs the
current ExternalASTSource of its ASTContext, tries to cast it
to ClangExternalASTSourceCommon and then accesses the metadata
map. If the casting fails the setter does nothing and the getter
returns a nullptr as if there was no known metadata for a type/decl.

This system breaks as soon as any non-LLDB ExternalASTSource is added via
a multiplexer to our existing ExternalASTSource (in which case we suddenly
loose all out metadata as the casting always fails with an ExternalASTSource
that is not inheriting from ClangExternalASTSourceCommon).

This patch moves the metadata map to the ClangASTContext. This gets
rid of all the fragile casting, the requirement that every ExternalASTSource in
LLDB has to inherit from ClangExternalASTSourceCommon and simplifies
the metadata implementation to a simple map lookup. As ClangExternalASTSourceCommon
had no other purpose than storing metadata, this patch deletes this class
and replaces all uses with clang::ExternalASTSource.

No other code changes in this commit beside the AppleObjCDeclVendor which
was the only code that did not use the ClangASTContext interface but directly
accessed the ClangExternalASTSourceCommon.

4 years agodoc: Document that extra-arg/extra-arg-before can be used several times
Sylvestre Ledru [Tue, 24 Dec 2019 12:06:24 +0000 (13:06 +0100)]
doc: Document that extra-arg/extra-arg-before can be used several times

Hopefully, it will help other people

4 years agoclang-doc remove trailing whitespaces
Sylvestre Ledru [Tue, 24 Dec 2019 12:03:45 +0000 (13:03 +0100)]
clang-doc remove trailing whitespaces

4 years agoRevert "[Support] Extend TimeProfiler to support multiple threads"
Russell Gallop [Tue, 24 Dec 2019 11:31:48 +0000 (11:31 +0000)]
Revert "[Support] Extend TimeProfiler to support multiple threads"

and "[Support] Try to fix bot failure after 8ddcd1dc26"

This reverts commits f70f180148 and 8ddcd1dc26 as this was breaking the
MacOS build, which doesn't support thread_local.

4 years ago[clang] [ast] CXXRecordDecl::getVisibleConversionFunctions() could be const
Whisperity [Tue, 24 Dec 2019 10:09:24 +0000 (11:09 +0100)]
[clang] [ast] CXXRecordDecl::getVisibleConversionFunctions() could be const

The function and its called static helpers don't modify the received
CXXRecordDecl arguments at all as the method's result is put into an
output parameter. Thus they can be const which allows for neatly
grabbing the conversion methods in a context where we only have a const
ASTUnit at hand.

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

4 years ago[TypePromotion] Make TypeSize a class member
Sam Parker [Tue, 24 Dec 2019 09:44:41 +0000 (04:44 -0500)]
[TypePromotion] Make TypeSize a class member

Having TypeSize as a static class variable was causing problems
with multi-threading. Several static functions have now been
converted into methods of TypePromotion and a few other members
of TypePromotion and IRPromoter have been added or removed.

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

4 years agoDebugInfo: Correct the form of DW_AT_macro_info in .dwo files (sec_offset, rather...
David Blaikie [Tue, 24 Dec 2019 09:23:21 +0000 (01:23 -0800)]
DebugInfo: Correct the form of DW_AT_macro_info in .dwo files (sec_offset, rather than data4)

4 years agoDebugInfo: Add {} to address -Wdangling-else warning.
David Blaikie [Tue, 24 Dec 2019 09:14:15 +0000 (01:14 -0800)]
DebugInfo: Add {} to address -Wdangling-else warning.

4 years agoAdd the Apache2 with LLVM exceptions license to MLIR
Mehdi Amini [Tue, 24 Dec 2019 08:57:16 +0000 (00:57 -0800)]
Add the Apache2 with LLVM exceptions license to MLIR

It seems that every subproject has a license file instead of having a top-level one.

4 years ago[llvm-readobj] - Remove an excessive helper for printing dynamic tags.
Georgii Rymar [Mon, 23 Dec 2019 11:54:36 +0000 (14:54 +0300)]
[llvm-readobj] - Remove an excessive helper for printing dynamic tags.

This removes the `getTypeString` from readeobj source because it
almost duplicates the existent method: `ELFFile<ELFT>::getDynamicTagAsString`.

Side effect: now it prints "<unknown:>0xHEXVALUE" instead of "(unknown)" for unknown values.
llvm-readelf before this patch printed:

```
0x0000000012345678 (unknown) 0x8765432187654321
0x000000006abcdef0 (unknown) 0x9988776655443322
0x0000000076543210 (unknown) 0x5555666677778888
```

and now it prints:

```
0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321
0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322
0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888
```

GNU reaedlf prints different thing:

```
0x0000000012345678 (<unknown>: 12345678) 0x8765432187654321
0x000000006abcdef0 (Operating System specific: 6abcdef0) 0x9988776655443322
0x0000000076543210 (Processor Specific: 76543210) 0x5555666677778888
```

I am not sure we want to follow GNU here. Even if we do, it should be separate
patch probably. The new output looks better and closer to GNU anyways,
and the code is a bit simpler.

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

4 years agoRemove static MLIR doc ; they are already on the website
Mehdi Amini [Tue, 24 Dec 2019 08:53:10 +0000 (00:53 -0800)]
Remove static MLIR doc ; they are already on the website

4 years ago[docs] fix typo in Lexicon.rst
Alex Zinenko [Mon, 23 Dec 2019 17:20:25 +0000 (18:20 +0100)]
[docs] fix typo in Lexicon.rst

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

4 years agoAdd `mlir` to -DLLVM_ALL_PROJECTS CMake option
Mehdi Amini [Tue, 24 Dec 2019 07:23:51 +0000 (07:23 +0000)]
Add `mlir` to -DLLVM_ALL_PROJECTS CMake option

4 years ago[DebugInfo] Fix v4 macinfo for dwo files.
Sourabh Singh Tomar [Tue, 24 Dec 2019 06:08:38 +0000 (11:38 +0530)]
[DebugInfo] Fix v4 macinfo for dwo files.

Dwo files must contain have DW_AT_macro_info attribute, when macro information is emitted. Adjusted the test case
for the same.

4 years ago[SelectionDAG] Change SelectionDAGISel::{funcInfo,SDB} to use unique_ptr
Fangrui Song [Tue, 24 Dec 2019 06:20:29 +0000 (22:20 -0800)]
[SelectionDAG] Change SelectionDAGISel::{funcInfo,SDB} to use unique_ptr

CurDAG is referenced more than 2000 times and used in many gerated .cpp
files. Don't touch it for now.

4 years ago[SelectionDAG] Don't repeatedly add a node to the worklist in ComputeLiveOutVRegInfo...
Fangrui Song [Tue, 24 Dec 2019 05:42:41 +0000 (21:42 -0800)]
[SelectionDAG] Don't repeatedly add a node to the worklist in ComputeLiveOutVRegInfo. NFC

For sqlite3 amalgram, this decreases the number of Worklist.push_back calls (603084) by 10%.

4 years agotest: correct flags for Windows
Saleem Abdulrasool [Tue, 24 Dec 2019 04:20:20 +0000 (20:20 -0800)]
test: correct flags for Windows

Adjust the flags for the LLDB test on Windows.  This test was previously
not running, but after the fix to the python detection, we now run this.

4 years agoNFC: Rename printOptionValue to printValue to fix MSVC build.
River Riddle [Tue, 24 Dec 2019 03:34:25 +0000 (19:34 -0800)]
NFC: Rename printOptionValue to printValue to fix MSVC build.

MSVC has trouble resolving the static 'printOptionValue' from the method on llvm::cl::opt/list. This change renames the static method to avoid this conflict.

4 years agoDebugInfo: Support dumping any exprloc as an expression
David Blaikie [Sun, 22 Dec 2019 07:05:35 +0000 (23:05 -0800)]
DebugInfo: Support dumping any exprloc as an expression

Now that DWARFv5 provides a way to identify DWARF expressions based on
form, rather than only by attribute - use it to always provide pretty
printing for any exprloc attribute, not only the attributes known to
contain expressions.

4 years agoImport MLIR into the LLVM tree
Mehdi Amini [Tue, 24 Dec 2019 02:47:41 +0000 (02:47 +0000)]
Import MLIR into the LLVM tree

4 years ago[DWARF] Check that all fields of a Unit Header are read.
Igor Kudrin [Fri, 20 Dec 2019 10:36:52 +0000 (17:36 +0700)]
[DWARF] Check that all fields of a Unit Header are read.

Tests "dwarfdump-rnglists-dwarf64.s" and "dwarfdump-rnglists.s" were
malformed because they had missing required DWO ID fields in split
compilation unit headers. The patch fixes the tests and checks
the reading of a unit header more thoroughly.

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

4 years agoAdjust some MLIR paths and docs
Mehdi Amini [Tue, 24 Dec 2019 02:23:01 +0000 (02:23 +0000)]
Adjust some MLIR paths and docs

4 years agoRevert "[lldb] Don't process symlinks deep inside DWARFUnit"
Jonas Devlieghere [Tue, 24 Dec 2019 02:03:35 +0000 (18:03 -0800)]
Revert "[lldb] Don't process symlinks deep inside DWARFUnit"

This temporarily reverts commit 3cfb6677b2aa20f782d9bb0f7958e61f5a976c16
because it breaks TestCompDirSymLink.py on macOS.

4 years agoRemove pybind11-based bindings
Mehdi Amini [Tue, 24 Dec 2019 01:43:20 +0000 (17:43 -0800)]
Remove pybind11-based bindings

These bindings were added as an experiment, and never had a CMake configuration.
We will bring back python bindings after picking carefully our dependency and the kind
of layering we expect to expose for these bindings.

PiperOrigin-RevId: 286963717

4 years agoRefactor the way that pass options are specified.
River Riddle [Mon, 23 Dec 2019 23:54:55 +0000 (15:54 -0800)]
Refactor the way that pass options are specified.

This change refactors pass options to be more similar to how statistics are modeled. More specifically, the options are specified directly on the pass instead of in a separate options class. (Note that the behavior and specification for pass pipelines remains the same.) This brings about several benefits:
* The specification of options is much simpler
* The round-trip format of a pass can be generated automatically
* This gives a somewhat deeper integration with "configuring" a pass, which we could potentially expose to users in the future.

PiperOrigin-RevId: 286953824

4 years agoNFC: Replace ValuePtr with Value and remove it now that Value is value-typed.
River Riddle [Mon, 23 Dec 2019 22:45:01 +0000 (14:45 -0800)]
NFC: Replace ValuePtr with Value and remove it now that Value is value-typed.

ValuePtr was a temporary typedef during the transition to a value-typed Value.

PiperOrigin-RevId: 286945714

4 years ago[CFG] Fix an assertion failure with static initializers
Gabor Horvath [Mon, 23 Dec 2019 18:01:00 +0000 (10:01 -0800)]
[CFG] Fix an assertion failure with static initializers

The CFGBlock::getLastCondition was not prepared for static initializer
branches.

This patch also revamps CFG unit tests. Earlier the lifetime of the AST
was smaller than the CFG. So all the AST pointers within the CFG blocks
were dangling. This was OK, since none of the tests dereferenced those
pointers. This was, however, a timed bomb. There were patches in the
past that were reverted partially due to this problem.

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

4 years agoChange the `notifyRootUpdated` API to be transaction based.
River Riddle [Mon, 23 Dec 2019 21:05:38 +0000 (13:05 -0800)]
Change the `notifyRootUpdated` API to be transaction based.

This means that in-place, or root, updates need to use explicit calls to `startRootUpdate`, `finalizeRootUpdate`, and `cancelRootUpdate`. The major benefit of this change is that it enables in-place updates in DialectConversion, which simplifies the FuncOp pattern for example. The major downside to this is that the cases that *may* modify an operation in-place will need an explicit cancel on the failure branches(assuming that they started an update before attempting the transformation).

PiperOrigin-RevId: 286933674

4 years agoUpdate SPIR-V.md
Lei Zhang [Mon, 23 Dec 2019 21:04:34 +0000 (13:04 -0800)]
Update SPIR-V.md

This CL updates SPIR-V.md to reflect recent developments
in the SPIR-V dialect and its conversions.

Along the way, also updates the doc for define_inst.sh.

PiperOrigin-RevId: 286933546

4 years agoResubmit: ReImplement the Value classes as value-typed objects wrapping an internal...
River Riddle [Mon, 23 Dec 2019 20:36:20 +0000 (12:36 -0800)]
Resubmit: ReImplement the Value classes as value-typed objects wrapping an internal pointer storage.

This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results.

PiperOrigin-RevId: 286930047

4 years agoAutomated rollback of commit f603a50109107b447b835dac11f0eb541288393e
MLIR Team [Mon, 23 Dec 2019 19:49:50 +0000 (11:49 -0800)]
Automated rollback of commit f603a50109107b447b835dac11f0eb541288393e

PiperOrigin-RevId: 286924059

4 years agoReImplement the Value classes as value-typed objects wrapping an internal pointer...
River Riddle [Mon, 23 Dec 2019 19:18:53 +0000 (11:18 -0800)]
ReImplement the Value classes as value-typed objects wrapping an internal pointer storage.

This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results.

PiperOrigin-RevId: 286919966

4 years agoAdjust License.txt file to use the LLVM license
Mehdi Amini [Mon, 23 Dec 2019 17:35:36 +0000 (09:35 -0800)]
Adjust License.txt file to use the LLVM license

PiperOrigin-RevId: 286906740

4 years ago[InstCombine] add test for copysign; NFC
Sanjay Patel [Mon, 23 Dec 2019 22:54:31 +0000 (17:54 -0500)]
[InstCombine] add test for copysign; NFC

4 years ago[InstCombine] add tests for not(select ...); NFC
Sanjay Patel [Mon, 23 Dec 2019 22:14:02 +0000 (17:14 -0500)]
[InstCombine] add tests for not(select ...); NFC

4 years agoAdd implementations of POSIX mmap and munmap functions.
Siva Chandra Reddy [Thu, 5 Dec 2019 07:17:14 +0000 (23:17 -0800)]
Add implementations of POSIX mmap and munmap functions.

Summary:
A set of of linux x86_64 internal syscall helpers have also been added.

This change does not try to be perfect with respect to OS and machine
abstractions. A TODO note has been added at places where such abstractions
would help and make the arrangement scalable and cleaner. Addressing the
TODOs and building such abstractions is not in the scope of this change.
It is hoped that follow up changes cleaning up the problem areas and
addressing the TODOs will better illustrate the need for the changes.

This change also does not try to imitate mmap and munmap implementations
of other libcs. The idea here is to put in the bare minimum required to
obtain a working mmap and munmap, and then add the rest of the
functionality on an as needed basis.

Reviewers: abrachet, phosek, stanshebs, theraven

Subscribers: mgorny, MaskRay, jfb, libc-commits

Tags: #libc-project

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

4 years ago[lldb/CMake] Always set a value for find_package when finding optional dependencies
Alex Langford [Mon, 23 Dec 2019 21:37:56 +0000 (13:37 -0800)]
[lldb/CMake] Always set a value for find_package when finding optional dependencies

Because this is a macro, previous values of `find_package` persist
between calls. This means that if it is set to TRUE on any run, all
subsequent runs will have find_package set to TRUE regardles of whether
or not they should be.

4 years ago[Docs] Fix sphinx build errors.
Florian Hahn [Mon, 23 Dec 2019 20:52:39 +0000 (21:52 +0100)]
[Docs] Fix sphinx build errors.

4 years agoASTContext: fix declaration of ParsedTargetAttr [-Wmismatched-tags] after D68627
Fangrui Song [Mon, 23 Dec 2019 20:38:37 +0000 (12:38 -0800)]
ASTContext: fix declaration of ParsedTargetAttr [-Wmismatched-tags] after D68627

4 years ago[FPEnv][X86] More strict int <-> FP conversion fixes
Ulrich Weigand [Mon, 23 Dec 2019 20:11:45 +0000 (21:11 +0100)]
[FPEnv][X86] More strict int <-> FP conversion fixes

Fix several several additional problems with the int <-> FP conversion
logic both in common code and in the X86 target. In particular:

- The STRICT_FP_TO_UINT expansion emits a floating-point compare. This
  compare can raise exceptions and therefore needs to be a strict compare.
  I've made it signaling (even though quiet would also be correct) as
  signaling is the more usual default for an LT. This code exists both
  in common code and in the X86 target.

- The STRICT_UINT_TO_FP expansion algorithm was incorrect for strict mode:
  it emitted two STRICT_SINT_TO_FP nodes and then used a select to choose one
  of the results. This can cause spurious exceptions by the STRICT_SINT_TO_FP
  that ends up not chosen. I've fixed the algorithm to use only a single
  STRICT_SINT_TO_FP instead.

- The !isStrictFPEnabled logic in DoInstructionSelection would sometimes do
  the wrong thing because it calls getOperationAction using the result VT.
  But for some opcodes, incuding [SU]INT_TO_FP, getOperationAction needs to
  be called using the operand VT.

- Remove some (obsolete) code in X86DAGToDAGISel::Select that would mutate
  STRICT_FP_TO_[SU]INT to non-strict versions unnecessarily.

Reviewed by: craig.topper

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

4 years ago[msan] Check qsort input.
Evgenii Stepanov [Fri, 20 Dec 2019 20:07:04 +0000 (12:07 -0800)]
[msan] Check qsort input.

Summary:
Qsort interceptor suppresses all checks by unpoisoning the data in the
wrapper of a comparator function, and then unpoisoning the output array
as well.

This change adds an explicit run of the comparator on all elements of
the input array to catch any sanitizer bugs.

Reviewers: vitalybuka

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years ago[msan] Intercept qsort, qsort_r.
Evgenii Stepanov [Thu, 19 Dec 2019 21:38:59 +0000 (13:38 -0800)]
[msan] Intercept qsort, qsort_r.

Summary:
This fixes qsort-related false positives with glibc-2.27.
I'm not entirely sure why they did not show up with the earlier
versions; the code seems similar enough.

Reviewers: vitalybuka

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years ago[Sema][X86] Consider target attribute into the checks in validateOutputSize and valid...
Craig Topper [Mon, 23 Dec 2019 18:38:38 +0000 (10:38 -0800)]
[Sema][X86] Consider target attribute into the checks in validateOutputSize and validateInputSize.

The validateOutputSize and validateInputSize need to check whether
AVX or AVX512 are enabled. But this can be affected by the
target attribute so we need to factor that in.

This patch moves some of the code from CodeGen to create an
appropriate feature map that we can pass to the function.

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

4 years agoMC: Ensure test only reads from the Inputs directory
David Blaikie [Mon, 23 Dec 2019 19:08:26 +0000 (11:08 -0800)]
MC: Ensure test only reads from the Inputs directory

4 years agoFix LLVM tool --version build mode printing for MSVC
Reid Kleckner [Sun, 22 Dec 2019 21:25:24 +0000 (13:25 -0800)]
Fix LLVM tool --version build mode printing for MSVC

LLVM tools such as llc print "DEBUG build" or "Optimized build" when
passed --version. Before this change, this was implemented by checking
for the __OPTIMIZE__ GCC macro. MSVC does not define this macro. For
MSVC, control this behavior with _DEBUG instead. It doesn't have
precisely the same meaning, but in most configurations, it will do the
right thing.

Fixes PR17752

Reviewed by: MaskRay

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

4 years ago[lldb/Test] Disable TestSynchronous.test on Windows.
Jonas Devlieghere [Mon, 23 Dec 2019 17:48:37 +0000 (09:48 -0800)]
[lldb/Test] Disable TestSynchronous.test on Windows.

The test was being skipped on the Windwos bot because it requires Python
which was silently disabled because of a configuration issue. Now that
the test runs, this fails as expected.

4 years agoMove from a long list of checkers to tables
Sylvestre Ledru [Mon, 23 Dec 2019 17:43:01 +0000 (18:43 +0100)]
Move from a long list of checkers to tables

Summary:
Currently, the list isn't very useful.
This change adds two tables.

* The checkers
* The aliases

For each checkers, we provide extract info:

* the severity. Taken from codechecker - https://github.com/Ericsson/codechecker/blob/master/config/checker_severity_map.json
* if the checker has an autofix or not

I used the cvs format for the table because:
* it is easy
* the data could be reused by other tools (we could move
that into a separated / generated file at some point)

Reviewers: alexfh, jdoerfert, jfb, lebedev.ri, Eugene.Zelenko

Subscribers: dexonsmith, wuzish, nemanjai, kbarton, arphaman, lebedev.ri, whisperity, Eugene.Zelenko, JonasToth, JDevlieghere, xazax.hun, cfe-commits, #clang-tools-extra

Tags: #clang

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

4 years ago[ELF] Don't suggest an alternative spelling for a symbol in a discarded section
Fangrui Song [Fri, 20 Dec 2019 00:04:45 +0000 (16:04 -0800)]
[ELF] Don't suggest an alternative spelling for a symbol in a discarded section

For undef-not-suggest.test, we currently make redundant alternative
spelling suggestions:

```
ld.lld: error: relocation refers to a discarded section: .text.foo
>>> defined in a.o
>>> section group signature: foo
>>> prevailing definition is in a.o
>>> referenced by a.o:(.rodata+0x0)
>>> did you mean:
>>> defined in: a.o

ld.lld: error: relocation refers to a symbol in a discarded section: foo
>>> defined in a.o
>>> section group signature: foo
>>> prevailing definition is in a.o
>>> referenced by a.o:(.rodata+0x8)
>>> did you mean: for
>>> defined in: a.o
```

Reviewed By: grimar, ruiu

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

4 years ago[AMDGPU] Don't create MachinePointerInfos with an UndefValue pointer
Jay Foad [Mon, 23 Dec 2019 13:42:12 +0000 (13:42 +0000)]
[AMDGPU] Don't create MachinePointerInfos with an UndefValue pointer

Summary:
The only useful information the UndefValue conveys is the address space,
which MachinePointerInfo can represent directly without referring to an
IR value.

Reviewers: arsenm, rampitec

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, Petar.Avramovic, llvm-commits

Tags: #llvm

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

4 years ago[RISCV][NFC] Fix use of missing attribute groups in tests
Luís Marques [Mon, 23 Dec 2019 15:32:52 +0000 (15:32 +0000)]
[RISCV][NFC] Fix use of missing attribute groups in tests

4 years ago[PowerPC] NFC - fix the testcase bug of folding rlwinm
czhengsz [Mon, 23 Dec 2019 15:26:41 +0000 (10:26 -0500)]
[PowerPC] NFC - fix the testcase bug of folding rlwinm

4 years ago[DAGCombine] visitEXTRACT_SUBVECTOR - 'little to big' extract_subvector(bitcast(...
Sanjay Patel [Mon, 23 Dec 2019 14:46:49 +0000 (09:46 -0500)]
[DAGCombine] visitEXTRACT_SUBVECTOR - 'little to big' extract_subvector(bitcast()) support

This moves the X86 specific transform from rL364407
into DAGCombiner to generically handle 'little to big' cases
(for example: extract_subvector(v2i64 bitcast(v16i8))). This
allows us to remove both the x86 implementation and the aarch64
bitcast(extract_subvector(bitcast())) combine.

Earlier patches that dealt with regressions initially exposed
by this patch:
rG5e5e99c041e4
rG0b38af89e2c0

Patch by: @RKSimon (Simon Pilgrim)

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

4 years ago[OPENMP50]Codegen for nontemporal clause.
Alexey Bataev [Thu, 19 Dec 2019 15:01:10 +0000 (10:01 -0500)]
[OPENMP50]Codegen for nontemporal clause.

Summary:
Basic codegen for the declarations marked as nontemporal. Also, if the
base declaration in the member expression is marked as nontemporal,
lvalue for member decl access inherits nonteporal flag from the base
lvalue.

Reviewers: rjmccall, hfinkel, jdoerfert

Subscribers: guansong, arphaman, caomhin, kkwli0, cfe-commits

Tags: #clang

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

4 years ago[lldb] Remove DWARFUnit::AppendDIEsWithTag
Pavel Labath [Mon, 23 Dec 2019 14:45:26 +0000 (15:45 +0100)]
[lldb] Remove DWARFUnit::AppendDIEsWithTag

This function is not very useful, as it's forcing a materialization of
the returned DIEs, and calling it is not substantially simpler than just
iterating over the DIEs manually. Delete it, and rewrite the single
caller.

4 years ago[gn build] Port eca40066ebb
LLVM GN Syncbot [Mon, 23 Dec 2019 13:55:08 +0000 (13:55 +0000)]
[gn build] Port eca40066ebb

4 years ago[lldb/DWARF] Fix hostname-stripping logic
Pavel Labath [Mon, 23 Dec 2019 13:33:00 +0000 (14:33 +0100)]
[lldb/DWARF] Fix hostname-stripping logic

This bit of code is trying to strip everything up to the first colon
from all debug info paths, as dwarf2 recommends this syntax for storing
the compilation host name. However, this code was too eager, and it
ended up stripping the entire compilation directory, if it did not
contain a forward slash (or a "x:\").

Normally this does not matter, as all absolute paths will contain one of
these patterns, but this does not have to be the case in case the debug
info is produced by "clang -fdebug-compilation-dir", which can end up
producing a relative compilation directory with no slashes (this is one
of the techniques for producing "relocatable" debug info).

4 years ago[Matrix] Use fmuladd for matrix.multiply if allowed.
Florian Hahn [Mon, 23 Dec 2019 13:28:56 +0000 (14:28 +0100)]
[Matrix] Use fmuladd  for matrix.multiply if allowed.

If the matrix.multiply calls have the contract fast math flag, we can
use fmuladd. This als adds a command line option to force fmuladd
generation. We can retire this option once there is a clang-level
option.

Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor

Reviewed By: anemet

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

4 years ago[NFC] Move OptionUtils from Basic to Driver
Yaxun (Sam) Liu [Sun, 22 Dec 2019 05:34:14 +0000 (00:34 -0500)]
[NFC] Move OptionUtils from Basic to Driver

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