platform/upstream/llvm.git
4 years agoRevert "[WebAssembly] Split and recombine multivalue calls for ISel"
Thomas Lively [Mon, 3 Feb 2020 22:27:03 +0000 (14:27 -0800)]
Revert "[WebAssembly] Split and recombine multivalue calls for ISel"

Summary:
This reverts commit 28857d14a86b1e99a9d2795636a5faf17674f5a2. This
commit worked toward a solution that did not turn out to be feasible
because MachineInstrs cannot contain an arbitrary number of defs.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm

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

4 years ago[BPF] disable ReduceLoadWidth during SelectionDag phase
Yonghong Song [Tue, 4 Feb 2020 19:21:54 +0000 (11:21 -0800)]
[BPF] disable ReduceLoadWidth during SelectionDag phase

The compiler may transform the following code
  ctx = ctx + reloc_offset
  ... (*(u32 *)ctx) & 0x8000 ...
to
  ctx = ctx + reloc_offset
  ... (*(u8 *)(ctx + 1)) & 0x80 ...
where reloc_offset will be replaced with a constant during
AsmPrinter phase.

The above transformed code will be rejected the kernel verifier
as it does not allow
  *(type *)((ctx + non_zero_offset1) + non_zero_offset2)
style access pattern.

It is hard at SelectionDag phase to identify whether a load
is related to context or not. Sometime, interprocedure analysis
may be needed. So let us simply prevent such optimization
from happening.

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

4 years agoRecommit: DebugInfo: Check DW_OP_convert in loclists with Split DWARF
David Blaikie [Wed, 5 Feb 2020 02:34:34 +0000 (18:34 -0800)]
Recommit: DebugInfo: Check DW_OP_convert in loclists with Split DWARF

Originally committed in: 552a8fe12bd1822f48dda2e9e8728a179f82d356
            Reverted in: f75301d16d444d8cb6810d679290df744bc79ec7

Reverted because it was running llc directly (rather than %llc_dwarf)
which uses COFF files on Windows which LLVM doesn't support all DWARF
features in.

This functionality isn't fully working, but sets up the testing for a
follow-on patch that demonstrates and fixes the brokenness related to
DWO ID hashing this construct.

4 years ago[WebAssembly] Enable recently implemented SIMD operations
Thomas Lively [Fri, 31 Jan 2020 02:23:14 +0000 (18:23 -0800)]
[WebAssembly] Enable recently implemented SIMD operations

Summary:
Moves a batch of instructions from unimplemented-simd128 to simd128
because they have recently become available in V8.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[mlir][spirv] Add dialect-specific attribute for target environment
Lei Zhang [Sun, 2 Feb 2020 12:40:18 +0000 (07:40 -0500)]
[mlir][spirv] Add dialect-specific attribute for target environment

We were using normal dictionary attribute for target environment
specification. It becomes cumbersome with more and more fields.
This commit changes the modelling to a dialect-specific attribute,
where we can have control over its storage and assembly form.

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

4 years agoPR44786: Don't assert when profiling <=> expressions.
Richard Smith [Wed, 5 Feb 2020 02:28:36 +0000 (18:28 -0800)]
PR44786: Don't assert when profiling <=> expressions.

4 years agoDebugInfo: use a symbolic DIE reference in convert-loclist.ll
David Blaikie [Wed, 5 Feb 2020 02:23:22 +0000 (18:23 -0800)]
DebugInfo: use a symbolic DIE reference in convert-loclist.ll

4 years agoReapply: DebugInfo: Add missing test coverage for DW_OP_convert in loclists
David Blaikie [Wed, 5 Feb 2020 02:08:16 +0000 (18:08 -0800)]
Reapply: DebugInfo: Add missing test coverage for DW_OP_convert in loclists

Originally committed in: 5327b917e3bd0b3db352cb5a61eea7409f2d1972
      and follow on fix: 4f281f047457ce3f1870a93253476222314f420b

            Reverted in: 191a9a78b3f4bdf35a30d3480bd630d787a2fdf6
            and: f75301d16d444d8cb6810d679290df744bc79ec7

Reverted because it wasn't portable between the targets it was running
on. Using %llc_dwarf ensures the target triple is always elfine and thus
DWARF compatible.

4 years agoDebugInfo: Generalize test/DebugInfo/X86/convert-linked.ll to run with different...
David Blaikie [Wed, 5 Feb 2020 02:02:03 +0000 (18:02 -0800)]
DebugInfo: Generalize test/DebugInfo/X86/convert-linked.ll to run with different architectures

4 years agoDebugInfo: Generalize test/DebugInfo/X86/convert-inlined.ll
David Blaikie [Wed, 5 Feb 2020 01:50:55 +0000 (17:50 -0800)]
DebugInfo: Generalize test/DebugInfo/X86/convert-inlined.ll

This test was hardcoded to only run on x86-64-linux-gnu and was overly
constrained by CHECK-NEXTing every line for an exact match.

4 years agoFix warning on trailing `;`. NFC.
Michael Liao [Wed, 5 Feb 2020 01:47:36 +0000 (20:47 -0500)]
Fix warning on trailing `;`. NFC.

4 years ago[Remarks] Fix gcc build
Francis Visoiu Mistrih [Wed, 5 Feb 2020 01:42:47 +0000 (17:42 -0800)]
[Remarks] Fix gcc build

4 years agoFix warning on trailing `;`. NFC.
Michael Liao [Wed, 5 Feb 2020 01:42:05 +0000 (20:42 -0500)]
Fix warning on trailing `;`. NFC.

4 years agoDebugInfo: convert-debugloc.ll remove erroneous CHECK
David Blaikie [Wed, 5 Feb 2020 01:39:38 +0000 (17:39 -0800)]
DebugInfo: convert-debugloc.ll remove erroneous CHECK

4 years agoDebugInfo: Generalize convert-debugloc.ll to run for multiple target architectures
David Blaikie [Wed, 5 Feb 2020 01:33:20 +0000 (17:33 -0800)]
DebugInfo: Generalize convert-debugloc.ll to run for multiple target architectures

This test was overly constrained & hardcoded only to x86-linux-gnu -
generalize the test & remove the hardcoded target triple.

4 years ago[gn build] Port b8a847c0a3e
LLVM GN Syncbot [Wed, 5 Feb 2020 01:27:20 +0000 (01:27 +0000)]
[gn build] Port b8a847c0a3e

4 years ago[gn build] Port 7531a5039fd
LLVM GN Syncbot [Wed, 5 Feb 2020 01:27:19 +0000 (01:27 +0000)]
[gn build] Port 7531a5039fd

4 years ago[cuda][hip] Temporarily XFAIL on arm
Michael Liao [Wed, 5 Feb 2020 01:25:12 +0000 (20:25 -0500)]
[cuda][hip] Temporarily XFAIL on arm

4 years agoFix BroadcasterManager::RemoveListener to really remove the listener
Reid Kleckner [Tue, 4 Feb 2020 23:56:51 +0000 (15:56 -0800)]
Fix BroadcasterManager::RemoveListener to really remove the listener

This appears to be a real bug caught by -Wunused-value. std::find_if
doesn't modify the underlying collection, it just returns an iterator
pointing to the matching element.

Reviewed By: JDevlieghere

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

4 years ago[Remarks] Extend the RemarkStreamer to support other emitters
Francis Visoiu Mistrih [Mon, 28 Oct 2019 21:53:31 +0000 (14:53 -0700)]
[Remarks] Extend the RemarkStreamer to support other emitters

This extends the RemarkStreamer to allow for other emitters (e.g.
frontends, SIL, etc.) to emit remarks through a common interface.

See changes in llvm/docs/Remarks.rst for motivation and design choices.

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

4 years ago[NFCI] Update according to style.
Alina Sbirlea [Wed, 5 Feb 2020 00:29:04 +0000 (16:29 -0800)]
[NFCI] Update according to style.

clang-tidy + clang-format

4 years agoFix some more -Wrange-loop-analysis warnings in AArch64TargetParser
Reid Kleckner [Wed, 5 Feb 2020 00:57:49 +0000 (16:57 -0800)]
Fix some more -Wrange-loop-analysis warnings in AArch64TargetParser

4 years ago[lldb] Fix -Wdocumentation warnings
Jonas Devlieghere [Wed, 5 Feb 2020 00:44:30 +0000 (16:44 -0800)]
[lldb] Fix -Wdocumentation warnings

4 years agoFix after c25938d
Adrian McCarthy [Tue, 4 Feb 2020 23:02:28 +0000 (15:02 -0800)]
Fix after c25938d

My refactor caused some changes in error reporting that TestAddDsymCommand.py
was checking, so this restores some of the changes to preserve the old
behavior and to un-xfail the affected test.

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

4 years ago[Driver][Darwin] Improve tests for -nostdinc & friends
Louis Dionne [Tue, 4 Feb 2020 23:34:28 +0000 (18:34 -0500)]
[Driver][Darwin] Improve tests for -nostdinc & friends

The tests were slightly underspecifying the current behavior of Clang.

4 years ago[lldb/Reproducers] Add underscore to varaibles in LLDB_RECORD macros
Jonas Devlieghere [Wed, 5 Feb 2020 00:21:31 +0000 (16:21 -0800)]
[lldb/Reproducers] Add underscore to varaibles in LLDB_RECORD macros

Rename all variables used in the LLDB_RECORD macros to start with an
underscore to avoid conflicts with the arguments being recorded.

4 years ago[lldb/Reproducers] Change record logging to mirror replay logging
Jonas Devlieghere [Wed, 5 Feb 2020 00:10:10 +0000 (16:10 -0800)]
[lldb/Reproducers] Change record logging to mirror replay logging

Pretty printing the return value, although a good idea in theory, turned
out to be more confusing than anything else because they require
printing the log statement after the arguments and resulting value have
been serialized.

This changes the logging to behave more like how deserialization is
traced, although a bit more verbose because some of the serializers are
are calling each other.

4 years ago[X86] Add custom lowering for lrint/llrint to either cvtss2si/cvtsd2si or fist.
Craig Topper [Tue, 4 Feb 2020 23:25:16 +0000 (15:25 -0800)]
[X86] Add custom lowering for lrint/llrint to either cvtss2si/cvtsd2si or fist.

lrint/llrint are defined as rounding using the current rounding
mode. Numbers that can't be converted raise FE_INVALID and an
implementation defined value is returned. They may also write to
errno.

I believe this means we can use cvtss2si/cvtsd2si or fist to
convert as long as -fno-math-errno is passed on the command line.
Clang will leave them as libcalls if errno is enabled so they
won't become ISD::LRINT/LLRINT in SelectionDAG.

For 64-bit results on a 32-bit target we can't use cvtss2si/cvtsd2si
but we can use fist since it can write to a 64-bit memory location.
Though maybe we could consider using vcvtps2qq/vcvtpd2qq on avx512dq
targets?

gcc also does this optimization.

I think we might be able to do this with STRICT_LRINT/LLRINT as
well, but I've left that for future work.

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

4 years agoFix x86 32bits MLIR build (NFC)
Dimitry Andric [Tue, 4 Feb 2020 23:57:02 +0000 (23:57 +0000)]
Fix x86 32bits MLIR build (NFC)

This is fixing a build error:

error: non-constant-expression cannot be narrowed from type 'unsigned int' to 'Region::iterator::difference_type' (aka 'int') in initializer list

Fix pr44767

4 years agoFix -Wunused-result warnings in LLDB
Reid Kleckner [Tue, 4 Feb 2020 23:50:44 +0000 (15:50 -0800)]
Fix -Wunused-result warnings in LLDB

These try_lock usages intentionally ignore the result, as commented.

Similar to 4d23764dddc23e74ad165086d7f471a3e0e52bf8, which was reviewed
previously.

4 years ago[compiler-rt] fix OpenBSD and Solaris build with sigaltstack interception
Evgenii Stepanov [Tue, 4 Feb 2020 23:50:44 +0000 (15:50 -0800)]
[compiler-rt] fix OpenBSD and Solaris build with sigaltstack interception

Summary:
`sigaltstack` interception is implemented D73816. This updated OpenBSD and Solaris bits to fix the build errors.

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: fedor.sergeev, krytarowski, emaste, eugenis, dberris, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Patch by Igor Sugak.

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

4 years ago[Support] Fix warnings in ARMTargetParser.cpp
Reid Kleckner [Tue, 4 Feb 2020 23:48:22 +0000 (15:48 -0800)]
[Support] Fix warnings in ARMTargetParser.cpp

4 years ago[lldb] Rename Type::ResolveClangType to Type::ResolveCompilerType
Alex Langford [Tue, 4 Feb 2020 23:40:43 +0000 (15:40 -0800)]
[lldb] Rename Type::ResolveClangType to Type::ResolveCompilerType

This is not specific to clang types. It operates on CompilerTypes in
general.

4 years ago[lldb] Delete commented-out code
Alex Langford [Tue, 4 Feb 2020 22:59:20 +0000 (14:59 -0800)]
[lldb] Delete commented-out code

4 years agoAvoid many std::tie/tuple instantiations in ASTImporter
Reid Kleckner [Tue, 4 Feb 2020 23:22:15 +0000 (15:22 -0800)]
Avoid many std::tie/tuple instantiations in ASTImporter

To factor the error checking, use importChecked instead of importSeq.
This avoids repeating the names of all of the imported child nodes once,
and allows errors to be checked with a single conditional as it is with
importSeq.

After:
  peak memory: 601.63MB
  real: 0m19.172s
  obj size: 8,352kb

Before:
  peak memory: 954.11MB
  real: 0m26.188s
  obj size: 10,000kb

The speed is not as impressive as I hoped, but the memory use reduction
is impressive, and seems worth it.

Reviewed By: martong, shafik

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

4 years ago[X86] Give KSET0* and KSET1* pseudos the same scheduler resource usage as KXOR/KXNOR.
Craig Topper [Tue, 4 Feb 2020 20:37:19 +0000 (12:37 -0800)]
[X86] Give KSET0* and KSET1* pseudos the same scheduler resource usage as KXOR/KXNOR.

These aren't recognized as idioms by the CPU so they still use
execution resources. We just use the pseudo to force the input
register to k0.

4 years ago[SEH] Remove CATCHPAD SDNode and X86::EH_RESTORE MachineInstr
Reid Kleckner [Thu, 30 Jan 2020 23:15:57 +0000 (15:15 -0800)]
[SEH] Remove CATCHPAD SDNode and X86::EH_RESTORE MachineInstr

The CATCHPAD node mostly existed to be selected into the EH_RESTORE
instruction, which sets the frame back up when 32-bit Windows exceptions
return to the parent function. However, creating this MachineInstr early
increases the risk that other passes will come along and insert
instructions that use the stack before ESP and EBP are restored. That
happened in PR44697.

Instead of representing these in the instruction stream early, delay it
until PEI. Mark the blocks where this needs to happen as EHPads, but not
funclet entry blocks. Passes after PEI have to be careful not to hoist
instructions that can use stack across frame setup instructions, so this
should be relatively reliable.

Fixes PR44697

Reviewed By: hans

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

4 years ago[Concepts] Add missing CXXThisScope to function template constraint substitution
Saar Raz [Tue, 4 Feb 2020 22:51:40 +0000 (00:51 +0200)]
[Concepts] Add missing CXXThisScope to function template constraint substitution

We did not have a CXXThisScope around constraint checking of functions and
function template specializations, causing a crash when checking a constraint
that had a 'this' (bug 44689).

Recommit after fixing test.

4 years ago[lldb/Reproducers] Add missing SBFile methods to the registry
Jonas Devlieghere [Tue, 4 Feb 2020 23:09:53 +0000 (15:09 -0800)]
[lldb/Reproducers] Add missing SBFile methods to the registry

SBFile::Read and SBFile::Write were missing from the registry.

4 years agoRevert "[Concepts] Add missing CXXThisScope to function template constraint substitution"
Saar Raz [Tue, 4 Feb 2020 22:58:02 +0000 (00:58 +0200)]
Revert "[Concepts] Add missing CXXThisScope to function template constraint substitution"

This reverts commit 0c67cfdb114b4c2f5c7ec374cf12118c7fa9d768 which has a broken test.

4 years ago[Concepts] Add missing CXXThisScope to function template constraint substitution
Saar Raz [Tue, 4 Feb 2020 22:51:40 +0000 (00:51 +0200)]
[Concepts] Add missing CXXThisScope to function template constraint substitution

We did not have a CXXThisScope around constraint checking of functions and
function template specializations, causing a crash when checking a constraint
that had a 'this' (bug 44689)

4 years ago[OpenMP] Add Flush directive to OpenMPIRBuilder
Kiran Chandramohan [Tue, 4 Feb 2020 21:43:40 +0000 (21:43 +0000)]
[OpenMP] Add Flush directive to OpenMPIRBuilder

Add support for Flush in the OMPIRBuilder. This patch also adds changes
to clang to use the OMPIRBuilder when '-fopenmp-enable-irbuilder'
commandline option is used.

Reviewed By: jdoerfert

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

4 years ago[lldb] Remove unused references to ClangExpressionDeclMap
Alex Langford [Tue, 4 Feb 2020 22:40:51 +0000 (14:40 -0800)]
[lldb] Remove unused references to ClangExpressionDeclMap

4 years ago[compiler-rt] [netbsd] Fix build after "implement sigaltstack interception"
Kamil Rytarowski [Tue, 4 Feb 2020 22:30:05 +0000 (23:30 +0100)]
[compiler-rt] [netbsd] Fix build after "implement sigaltstack interception"

Fallout after: https://reviews.llvm.org/D73816

4 years ago[lldb] Remove clang classes from lldb-forward.h
Alex Langford [Mon, 3 Feb 2020 23:55:18 +0000 (15:55 -0800)]
[lldb] Remove clang classes from lldb-forward.h

Summary:
lldb-forward.h is convenient in many ways, but having clang-based
class forward declarations in there makes it easy to proliferate uses of clang
outside of plugins. Removing them makes you much more conscious of when
you're using something from clang and marks where we're using things
from clang in non-plugins.

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

4 years ago[cmake] Fix clang builds with BUILD_SHARED=ON and CLANG_LINK_CLANG_DYLIB=ON
Tom Stellard [Tue, 4 Feb 2020 21:06:54 +0000 (13:06 -0800)]
[cmake] Fix clang builds with BUILD_SHARED=ON and CLANG_LINK_CLANG_DYLIB=ON

Summary:
We were linking all the clang objects and shared libraries into
libclang-cpp.so, which was causing the command line options to be
registered twice.

Reviewers: beanz, mgorny

Reviewed By: beanz, mgorny

Subscribers: merge_guards_bot, mgorny, cfe-commits

Tags: #clang

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

4 years ago[lldb/Unittest] Fix the modules build by including TypeSystemClang.h
Jonas Devlieghere [Tue, 4 Feb 2020 22:05:15 +0000 (14:05 -0800)]
[lldb/Unittest] Fix the modules build by including TypeSystemClang.h

This should fix the modules build on the GreenDragon bot.

4 years agoRe-land "[lldb] [testsuite] generalize `DWARFASTParserClangTests` based on `DWARFExpr...
Jonas Devlieghere [Tue, 4 Feb 2020 21:59:29 +0000 (13:59 -0800)]
Re-land "[lldb] [testsuite] generalize `DWARFASTParserClangTests` based on `DWARFExpressionTest`'s YAML"

4 years ago[libomptarget] Implement wavefront functions for amdgcn
Jon Chesterfield [Tue, 4 Feb 2020 21:55:26 +0000 (21:55 +0000)]
[libomptarget] Implement wavefront functions for amdgcn

Summary: [libomptarget] Implement wavefront functions for amdgcn

Reviewers: jdoerfert, ABataev, grokos, arsenm

Reviewed By: arsenm

Subscribers: saiislam, wdng, arsenm, jvesely, openmp-commits

Tags: #openmp

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

4 years ago[compiler-rt] Fix sanitizer_common build for FreeBSD
Dimitry Andric [Tue, 4 Feb 2020 21:50:05 +0000 (22:50 +0100)]
[compiler-rt] Fix sanitizer_common build for FreeBSD

This was broken by 28c91219c7e2, which added `struct_stack_t_sz` only to
sanitizer_platform_limits_posix.{cpp,h}.

4 years agoRevert: [lldb] [testsuite] generalize `DWARFASTParserClangTests` based on `DWARFExpre...
Jan Kratochvil [Tue, 4 Feb 2020 21:48:27 +0000 (22:48 +0100)]
Revert: [lldb] [testsuite] generalize `DWARFASTParserClangTests` based on `DWARFExpressionTest`'s YAML

It is causing a failure on OSX, to be investigated more.

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

4 years ago[clang-tidy] Fix "expression is redundant [misc-redundant-expression]" warning. NFCI...
Simon Pilgrim [Tue, 4 Feb 2020 21:36:11 +0000 (21:36 +0000)]
[clang-tidy] Fix "expression is redundant [misc-redundant-expression]" warning. NFCI. (PR44768)

We only accept tok::TokenKind::comment enum values so no need to add other cases. Seems to be a cut+paste typo.

4 years agoAMDGPU: Fix isAlwaysUniform for simple asm SGPR results
Matt Arsenault [Tue, 4 Feb 2020 20:25:48 +0000 (15:25 -0500)]
AMDGPU: Fix isAlwaysUniform for simple asm SGPR results

We were handling the case where the result was a struct with an
extracted SGPR component, but not for the simple case.

4 years ago[lldb/Reproducers] Treat SB classes pass by value as const references
Jonas Devlieghere [Tue, 4 Feb 2020 21:18:12 +0000 (13:18 -0800)]
[lldb/Reproducers] Treat SB classes pass by value as const references

Unless trivially copyable, SB classes that are passed by value should be
treated as const references by the reproducer infrastructure and their
address should be serialized. This is already the case on the
serialization side, but not on the deserialization side. This fixes that
by removing the NotImplementedTag.

4 years ago[lldb/Reproducers] Instrument SBFile
Jonas Devlieghere [Tue, 4 Feb 2020 21:17:12 +0000 (13:17 -0800)]
[lldb/Reproducers] Instrument SBFile

Currently SBFile isn't really instrumented, which was causing trouble
when capturing and replaying the Python test suite. The class is
particularly tricky because one of its constructors takes a FileSP which
isn't instrumented. Until we have proper shadowing in place, we'll
simply always record a nullptr.

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

4 years agoFix "expression is redundant [misc-redundant-expression]" warning (PR44768)
Simon Pilgrim [Tue, 4 Feb 2020 21:23:50 +0000 (21:23 +0000)]
Fix "expression is redundant [misc-redundant-expression]" warning (PR44768)

Be more specific that getOperandConstraint should return -1 or a uint8_t value

4 years agoAMDGPU/GlobalISel: Select G_SEXT_INREG
Matt Arsenault [Sat, 25 Jan 2020 00:38:53 +0000 (19:38 -0500)]
AMDGPU/GlobalISel: Select G_SEXT_INREG

4 years agoAMDGPU/GlobalISel: Do a better job splitting 64-bit G_SEXT_INREG
Matt Arsenault [Sat, 25 Jan 2020 14:31:09 +0000 (09:31 -0500)]
AMDGPU/GlobalISel: Do a better job splitting 64-bit G_SEXT_INREG

We don't need to expand to full shifts for the > 32-bit case. This
just switches to a sext_inreg of the high half.

4 years agoAMDGPU/GlobalISel: Legalize G_SEXT_INREG
Matt Arsenault [Tue, 4 Feb 2020 21:06:34 +0000 (16:06 -0500)]
AMDGPU/GlobalISel: Legalize G_SEXT_INREG

Split the VALU 64-bit case in RegBankSelect.

4 years ago[AMDGPU] Fix infinite loop with fma combines
Austin Kerbow [Tue, 4 Feb 2020 01:08:26 +0000 (17:08 -0800)]
[AMDGPU] Fix infinite loop with fma combines

https://reviews.llvm.org/D72312 introduced an infinite loop which involves
DAGCombiner::visitFMA and AMDGPUTargetLowering::performFNegCombine.

fma( a, fneg(b), fneg(c) ) => fneg( fma (a, b, c) ) => fma( a, fneg(b), fneg(c) ) ...

This only breaks with types where 'isFNegFree' returns flase, e.g. v4f32.
Reproducing the issue also needs the attribute 'no-signed-zeros-fp-math',
and no source mods allowed on one of the users of the Op.

This fix makes changes to indicate that it is not free to negate a fma if it
has users with source mods.

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

4 years ago[sanitizer] Add missing declarations for sigaltstack syscall wrappers.
Evgenii Stepanov [Tue, 4 Feb 2020 20:21:06 +0000 (12:21 -0800)]
[sanitizer] Add missing declarations for sigaltstack syscall wrappers.

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

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

4 years agoAMDGPU/GlobalISel: Remove extension legality hacks
Matt Arsenault [Tue, 21 Jan 2020 21:47:27 +0000 (16:47 -0500)]
AMDGPU/GlobalISel: Remove extension legality hacks

The legalization has improved since this was added, and the tests
relying on this no longer need it.

4 years ago[hip] Properly populate macros based on host processor.
Michael Liao [Mon, 3 Feb 2020 20:35:18 +0000 (15:35 -0500)]
[hip] Properly populate macros based on host processor.

Summary:
- The device compilation needs to have a consistent source code compared
  to the corresponding host compilation. If macros based on the
  host-specific target processor is not properly populated, the device
  compilation may fail due to the inconsistent source after the
  preprocessor. So far, only the host triple is used to build the
  macros. If a detailed host CPU target or certain features are
  specified, macros derived from them won't be populated properly, e.g.
  `__SSE3__` won't be added unless `+sse3` feature is present. On
  Windows compilation compatible with MSVC, that missing macros result
  in that intrinsics are not included and cause device compilation
  failure on the host-side source.

- This patch addresses this issue by introducing two `cc1` options,
  i.e., `-aux-target-cpu` and `-aux-target-feature`. If a specific host
  CPU target or certain features are specified, the compiler driver will
  append them during the construction of the offline compilation
  actions. Then, the toolchain in `cc1` phase will populate macros
  accordingly.

- An internal option `--gpu-use-aux-triple-only` is added to fall back
  the original behavior to help diagnosing potential issues from the new
  behavior.

Reviewers: tra, yaxunl

Subscribers: cfe-commits

Tags: #clang

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

4 years agoPR44761: Fix fallback to later tiebreakers if two non-template functions
Richard Smith [Tue, 4 Feb 2020 20:20:34 +0000 (12:20 -0800)]
PR44761: Fix fallback to later tiebreakers if two non-template functions
are equally constrained.

4 years agoAdditional testcase for 0130b6cb5a8.
Richard Smith [Tue, 4 Feb 2020 19:43:15 +0000 (11:43 -0800)]
Additional testcase for 0130b6cb5a8.

4 years agoTry to fix windows build bot after 008e7bf92343b8bd6ebade5b3ddcfe4bb4e29f8d
Tyker [Tue, 4 Feb 2020 20:17:47 +0000 (21:17 +0100)]
Try to fix windows build bot after 008e7bf92343b8bd6ebade5b3ddcfe4bb4e29f8d

4 years agoRecommit "[X86] Use X86ISD::SUB instead of X86ISD::CMP in some places."
Craig Topper [Tue, 4 Feb 2020 19:25:24 +0000 (11:25 -0800)]
Recommit "[X86] Use X86ISD::SUB instead of X86ISD::CMP in some places."

This time with correct types for the data result from the SUB.

Original commit message:

Our normal lowering for ISD::SETCC uses X86ISD::SUB to enable
CSE unless the RHS is 0. optimizeCompareInstr called by the peephole
pass can turn subs with unused results into cmps to clean this up.

This commit makes other places that create X86ISD::CMP have the
same behavior.

4 years ago[mlir] Print types to the OpAsmPrinter instead of the raw_ostream.
River Riddle [Tue, 4 Feb 2020 20:17:14 +0000 (12:17 -0800)]
[mlir] Print types to the OpAsmPrinter instead of the raw_ostream.

This allows for reusing the internal state of the printer, which is more
efficient and also allows for using type aliases

4 years ago[InlineCost] Add flag to allow changing the default inline cost
Teresa Johnson [Tue, 4 Feb 2020 18:37:53 +0000 (10:37 -0800)]
[InlineCost] Add flag to allow changing the default inline cost

Summary:
It can be useful to tune the default inline threshold without overriding other inlining thresholds (e.g. in code compiled for size).

The existing `-inline-threshold` flag overrides other thresholds, so it is insufficient in codebases where there is a mix of code compiled for size and speed.

Patch by Michael Holman <michael.holman@microsoft.com>

Reviewers: eraman, tejohnson

Reviewed By: tejohnson

Subscribers: tejohnson, mtrofin, davidxl, hiraditya, haicheng, llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Custom lower G_FEXP
Matt Arsenault [Sat, 25 Jan 2020 01:53:26 +0000 (20:53 -0500)]
AMDGPU/GlobalISel: Custom lower G_FEXP

4 years agoAMDGPU/GlobalISel: Legalize s16 G_FEXP2
Matt Arsenault [Sat, 25 Jan 2020 02:21:03 +0000 (21:21 -0500)]
AMDGPU/GlobalISel: Legalize s16 G_FEXP2

4 years ago[libc] Fix typo in header generation docs.
Paula Toth [Tue, 4 Feb 2020 18:39:16 +0000 (10:39 -0800)]
[libc] Fix typo in header generation docs.

Reviewers: sivachandra, abrachet

Reviewed By: sivachandra, abrachet

Subscribers: libc-commits, MaskRay, tschuett

Tags: #libc-project, #llvm

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

4 years ago[C++20] Add consteval-specific semantic for functions
Tyker [Tue, 4 Feb 2020 18:23:33 +0000 (19:23 +0100)]
[C++20] Add consteval-specific semantic for functions

Summary:
Changes:
 - Calls to consteval function are now evaluated in constant context but IR is still generated for them.
 - Add diagnostic for taking address of a consteval function in non-constexpr context.
 - Add diagnostic for address of consteval function accessible at runtime.
 - Add tests

Reviewers: rsmith, aaron.ballman

Reviewed By: rsmith

Subscribers: mgrang, riccibruno, cfe-commits

Tags: #clang

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

4 years agolibclc/asin: Switch to amd builtins version of asin
Aaron Watry [Sun, 2 Feb 2020 01:54:45 +0000 (19:54 -0600)]
libclc/asin: Switch to amd builtins version of asin

Fixes a wimpy-mode CTS failure for asin(float).

Passes non-wimpy for both float/double on RX580.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Tested-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
4 years agoCodeGenPrepare: Reorder check for cold and shouldOptimizeForSize
Matt Arsenault [Fri, 31 Jan 2020 19:35:53 +0000 (14:35 -0500)]
CodeGenPrepare: Reorder check for cold and shouldOptimizeForSize

shouldOptimizeForSize is showing up in a profile, spending around 10%
of the pass time in one function. This should probably not be so slow,
but the much cheaper attribute check should be done first anyway.

4 years ago[mlir] [VectorOps] refined description of vector.contract
aartbik [Mon, 3 Feb 2020 21:27:41 +0000 (13:27 -0800)]
[mlir] [VectorOps] refined description of vector.contract

Summary:
A few details were missing in the description. These
changes makes the documented code "compile".

Reviewers: nicolasvasilache, andydavis1

Reviewed By: nicolasvasilache, andydavis1

Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits

Tags: #llvm

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

4 years ago[clang-format] Allow a comment to follow a C# attribute specifier
Jonathan Coe [Tue, 4 Feb 2020 18:26:47 +0000 (18:26 +0000)]
[clang-format] Allow a comment to follow a C# attribute specifier

Summary: Add comments to the list of tokens that can follow the ']' at the end of a C# attribute specifier to prevent comments after attribute specifiers from being formatted as continuations.

Reviewers: MyDeveloperDay, krasimir

Reviewed By: MyDeveloperDay

Tags: #clang-format

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

4 years agoAMDGPU: Split denormal mode tracking bits
Matt Arsenault [Tue, 3 Dec 2019 07:01:21 +0000 (12:31 +0530)]
AMDGPU: Split denormal mode tracking bits

Prepare to accurately track the future denormal-fp-math attribute
changes. The way to actually set these separately is not wired in yet.

This is just a mechanical change, and mostly still assumes the input
and output mode match. This should be refined for some cases. For
example, fcanonicalize lowering should use the flushing variant if
either input or output flushing is enabled

4 years ago[lldb/test] Skip TestBasicEntryValuesX86_64 due to llvm.org/PR44774
Vedant Kumar [Tue, 4 Feb 2020 18:43:44 +0000 (10:43 -0800)]
[lldb/test] Skip TestBasicEntryValuesX86_64 due to llvm.org/PR44774

4 years ago[lldb/StackFrameList] Convert assert to defensive check in SynthesizeTailCallFrames
Vedant Kumar [Tue, 4 Feb 2020 18:12:47 +0000 (10:12 -0800)]
[lldb/StackFrameList] Convert assert to defensive check in SynthesizeTailCallFrames

In order to synthesize tail call frames, the stack frame list must not
be empty (otherwise, there is no "previous" frame to infer a tail call
from).

This case is hard to hit. To trigger it, we must first fail to push
`unwind_frame_sp` because we either fail to get its SymbolContext, or
given its SymbolContext the GetParentOfInlineScope call fails. This
causes m_concrete_frames_fetched to be incremented while m_frames
remains empty. Then, the next frame in the stack may fail within
SynthesizeTailCallFrames. This crash arose during a kernel debugging
session.

rdar://59147051

4 years ago[mlir] Fix clang 5 warning for missing braces
Jacques Pienaar [Tue, 4 Feb 2020 18:34:42 +0000 (10:34 -0800)]
[mlir] Fix clang 5 warning for missing braces

4 years ago[test] yaml2obj -docnum => --docnum=
Fangrui Song [Tue, 4 Feb 2020 18:03:14 +0000 (10:03 -0800)]
[test] yaml2obj -docnum => --docnum=

Make usage more consistent, and make it possible to enable LongOptionsUseDoubleDash.

4 years agoAMDGPU: Cleanup SMRD buffer selection
Matt Arsenault [Thu, 30 Jan 2020 16:03:17 +0000 (11:03 -0500)]
AMDGPU: Cleanup SMRD buffer selection

The usage of the Imm out argument from SelectSMRDOffset is pretty
confusing. Stop trying to reject CI immediates in the case where the
offset field can be used. It's not an illegal way to encode the
immediate, so just prefer the better encoding pattern with
AddedComplexity.

We probably don't even really need the different opcodes for the
different offset types anymore, but that will be more work to cleanup.

The SMRD non-buffer load patterns could also use a cleanup to be done
separately.

4 years agoGlobalISel: Fold SmallVector resizes into constructors
Matt Arsenault [Tue, 4 Feb 2020 15:34:22 +0000 (10:34 -0500)]
GlobalISel: Fold SmallVector resizes into constructors

4 years ago[X86] Fix missing load latencies (PR36894)
Simon Pilgrim [Tue, 4 Feb 2020 18:01:38 +0000 (18:01 +0000)]
[X86] Fix missing load latencies (PR36894)

We weren't account for load latencies in the SSE42/AES/CLMUL schedule classes

4 years agoTry to fix buildbot failure
Matt Arsenault [Tue, 4 Feb 2020 18:06:55 +0000 (13:06 -0500)]
Try to fix buildbot failure

4 years ago[clang][NFC] Expand some `auto`s and add another test for matcher `isExpandedFromMacro`.
Yitzhak Mandelbaum [Tue, 4 Feb 2020 17:32:06 +0000 (12:32 -0500)]
[clang][NFC] Expand some `auto`s and add another test for matcher `isExpandedFromMacro`.

Summary: Spells out some `auto`s explicitly and adds another test for the matcher `isExpandedFromMacro`.

Reviewers: aaron.ballman

Subscribers: gribozavr, cfe-commits

Tags: #clang

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

4 years ago[BFI] Add a debug check for unknown block queries.
Hiroshi Yamauchi [Mon, 3 Feb 2020 20:22:03 +0000 (12:22 -0800)]
[BFI] Add a debug check for unknown block queries.

Summary:
Add a debug check for frequency queries for unknown blocks (typically blocks
that are created after BFI is computed but their frequencies are not
communicated to BFI.)

This is useful for detecting and debugging missed BFI updates.

This is debug build only and disabled behind a flag.

Reviewers: davidxl

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[InstCombine] add FIXME comment to shuffle transform; NFC
Sanjay Patel [Tue, 4 Feb 2020 17:59:23 +0000 (12:59 -0500)]
[InstCombine] add FIXME comment to shuffle transform; NFC

Existing tests:
rG5d04e008f708
rG2a191cf8500f
...should verify that the underlying analysis doesn't improve
too much without updating this user code.

4 years agoSeparately track input and output denormal mode
Matt Arsenault [Thu, 7 Nov 2019 01:10:52 +0000 (17:10 -0800)]
Separately track input and output denormal mode

AMDGPU and x86 at least both have separate controls for whether
denormal results are flushed on output, and for whether denormals are
implicitly treated as 0 as an input. The current DAGCombiner use only
really cares about the input treatment of denormals.

4 years ago[clang] fix lib/ASTMatchers for BUILD_SHARED_LIBS=ON
Stephen Neuendorffer [Tue, 4 Feb 2020 17:45:28 +0000 (09:45 -0800)]
[clang] fix lib/ASTMatchers for BUILD_SHARED_LIBS=ON

4 years ago[X86] -fpatchable-function-entry=N,0: place patch label after ENDBR{32,64}
Fangrui Song [Fri, 31 Jan 2020 02:16:09 +0000 (18:16 -0800)]
[X86] -fpatchable-function-entry=N,0: place patch label after ENDBR{32,64}

Similar to D73680 (AArch64 BTI).

A local linkage function whose address is not taken does not need ENDBR32/ENDBR64. Placing the patch label after ENDBR32/ENDBR64 has the advantage that code does not need to differentiate whether the function has an initial ENDBR.

Also, add 32-bit tests and test that .cfi_startproc is at the function
entry. The line information has a general implementation and is tested
by AArch64/patchable-function-entry-empty.mir

Reviewed By: nickdesaulniers

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

4 years ago[Driver] Change -fmax-tokens $arg to -fmax-tokens=$arg
Fangrui Song [Tue, 4 Feb 2020 01:07:41 +0000 (17:07 -0800)]
[Driver] Change -fmax-tokens $arg to -fmax-tokens=$arg

Reviewed By: hans

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

4 years ago[ARM] Correct missing newline after outputting .tlsdescseq directive.
David Spickett [Tue, 4 Feb 2020 16:52:41 +0000 (16:52 +0000)]
[ARM] Correct missing newline after outputting .tlsdescseq directive.

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

4 years agoscudo: Simplify getClassIdBySize() logic. NFCI.
Peter Collingbourne [Mon, 3 Feb 2020 23:35:35 +0000 (15:35 -0800)]
scudo: Simplify getClassIdBySize() logic. NFCI.

By subtracting 1 from Size at the beginning we can simplify the
subsequent calculations. This also saves 4 instructions on aarch64
and 9 instructions on x86_64, but seems to be perf neutral.

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

4 years ago[BPF] use base lvalue type for preserve_{struct,union}_access_index metadata
Yonghong Song [Sun, 2 Feb 2020 22:54:16 +0000 (14:54 -0800)]
[BPF] use base lvalue type for preserve_{struct,union}_access_index metadata

Linux commit
  https://github.com/torvalds/linux/commit/1cf5b23988ea0086a252a5c8b005b075f1e9b030#diff-289313b9fec99c6f0acfea19d9cfd949
uses "#pragma clang attribute push (__attribute__((preserve_access_index)),
      apply_to = record)"
to apply CO-RE relocations to all records including the following pattern:
  #pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record)
  typedef struct {
    int a;
  } __t;
  #pragma clang attribute pop
  int test(__t *arg) { return arg->a; }

The current approach to use struct type in the relocation record will
result in an anonymous struct, which make later type matching difficult
    in bpf loader. In fact, current BPF backend will fail the above program
with assertion:
  clang: ../lib/Target/BPF/BPFAbstractMemberAccess.cpp:796: ...
     Assertion `TypeName.size()' failed.

The patch use the base lvalue type for the "base" value to annotate
preservee_{struct,union}_access_index intrinsics. In the above example,
the type will be "__t" which preserved the type name.

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

4 years ago[NFC][LangRef][FPEnv] Fix whitespace for denormal-fp-math/denormal-fp-math-f32
Cameron McInally [Tue, 4 Feb 2020 17:10:43 +0000 (11:10 -0600)]
[NFC][LangRef][FPEnv] Fix whitespace for denormal-fp-math/denormal-fp-math-f32

Fix incorrect spacing for `denormal-fp-math` and `denormal-fp-math-f32`. No
other changes.

4 years ago[MLIR] Fixes for shared library dependencies.
Stephen Neuendorffer [Wed, 1 Jan 2020 01:23:01 +0000 (17:23 -0800)]
[MLIR] Fixes for shared library dependencies.

Summary:

This patch is a step towards enabling BUILD_SHARED_LIBS=on, which
builds most libraries as DLLs instead of statically linked libraries.
The main effect of this is that incremental build times are greatly
reduced, since usually only one library need be relinked in response
to isolated code changes.

The bulk of this patch is fixing incorrect usage of cmake, where library
dependencies are listed under add_dependencies rather than under
target_link_libraries or under the LINK_LIBS tag.  Correct usage should be
like this:

add_dependencies(MLIRfoo MLIRfooIncGen)
target_link_libraries(MLIRfoo MLIRlib1 MLIRlib2)

A separate issue is that in cmake, dependencies between static libraries
are automatically included in dependencies.  In the above example, if MLIBlib1
depends on MLIRlib2, then it is sufficient to have only MLIRlib1 in the
target_link_libraries.  When compiling with shared libraries, it is necessary
to have both MLIRlib1 and MLIRlib2 specified if MLIRfoo uses symbols from both.

Reviewers: mravishankar, antiagainst, nicolasvasilache, vchuravy, inouehrs, mehdi_amini, jdoerfert

Reviewed By: nicolasvasilache, mehdi_amini

Subscribers: Joonsoo, merge_guards_bot, jholewinski, mgorny, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, csigg, arpith-jacob, mgester, lucyrfox, herhut, aartbik, liufengdb, llvm-commits

Tags: #llvm

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

4 years ago[BPF] handle typedef of struct/union for CO-RE relocations
Yonghong Song [Sun, 2 Feb 2020 05:00:00 +0000 (21:00 -0800)]
[BPF] handle typedef of struct/union for CO-RE relocations

Linux commit
  https://github.com/torvalds/linux/commit/1cf5b23988ea0086a252a5c8b005b075f1e9b030#diff-289313b9fec99c6f0acfea19d9cfd949
uses "#pragma clang attribute push (__attribute__((preserve_access_index)),
      apply_to = record)"
to apply CO-RE relocations to all records including the following pattern:
  #pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record)
  typedef struct {
    int a;
  } __t;
  #pragma clang attribute pop
  int test(__t *arg) { return arg->a; }

The current approach to use struct/union type in the relocation record will
result in an anonymous struct, which make later type matching difficult
in bpf loader. In fact, current BPF backend will fail the above program
with assertion:
  clang: ../lib/Target/BPF/BPFAbstractMemberAccess.cpp:796: ...
     Assertion `TypeName.size()' failed.

clang will change to use the type of the base of the member access
which will preserve the typedef modifier for the
preserve_{struct,union}_access_index intrinsics in the above example.
Here we adjust BPF backend to accept that the debuginfo
type metadata may be 'typedef' and handle them properly.

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

4 years ago[clang] Add matcher to identify macro expansions.
Yitzhak Mandelbaum [Mon, 3 Feb 2020 21:21:02 +0000 (16:21 -0500)]
[clang] Add matcher to identify macro expansions.

Summary:
This revision adds a matcher `isExpandedFromMacro` that determines whether a
statement is (transitively) expanded from a given macro.

Reviewers: gribozavr

Subscribers: cfe-commits

Tags: #clang

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