platform/upstream/llvm.git
4 years ago[asan] Dedup MemToShadowSize
Vitaly Buka [Fri, 17 Jul 2020 09:38:18 +0000 (02:38 -0700)]
[asan] Dedup MemToShadowSize

Added D83247 and D84004.

4 years ago[ScheduleDAG] Move DBG_VALUEs after first term forward.
Florian Hahn [Fri, 17 Jul 2020 09:27:14 +0000 (10:27 +0100)]
[ScheduleDAG] Move DBG_VALUEs after first term forward.

MBBs are not allowed to have non-terminator instructions after the first
terminator. Currently in some cases (see the modified test),
EmitSchedule can add DBG_VALUEs after the last terminator, for example
when referring a debug value that gets folded into a TCRETURN
instruction on ARM.

This patch updates EmitSchedule to move inserted DBG_VALUEs just before
the first terminator. I am not sure if there are terminators produce
values that can in turn be used by a DBG_VALUE. In that case, moving the
DBG_VALUE might result in referencing an undefined register. But in any
case, it seems like currently there is no way to insert a proper DBG_VALUEs
for such registers anyways.

Alternatively it might make sense to just remove those extra DBG_VALUES.

I am not too familiar with the details of debug info in the backend and
would appreciate any suggestions on how to address the issue in the best
possible way.

Reviewers: vsk, aprantl, jpaquette, efriedma, paquette

Reviewed By: aprantl

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

4 years ago[msan] Fix strxfrm test
Vitaly Buka [Fri, 17 Jul 2020 08:45:14 +0000 (01:45 -0700)]
[msan] Fix strxfrm test

Revert D83719 and explicitly set locate to "C".

4 years ago[lsan] Fix SyntaxWarning: "is" with a literal
Vitaly Buka [Fri, 17 Jul 2020 08:47:45 +0000 (01:47 -0700)]
[lsan] Fix SyntaxWarning: "is" with a literal

4 years ago[gwp-asan] Fix check-all with LIT_FILTER
Vitaly Buka [Fri, 17 Jul 2020 08:46:14 +0000 (01:46 -0700)]
[gwp-asan] Fix check-all with LIT_FILTER

4 years ago[sanitizer] Fix protoent without network
Vitaly Buka [Fri, 17 Jul 2020 08:23:27 +0000 (01:23 -0700)]
[sanitizer] Fix protoent without network

4 years ago[PowerPC] Precommit test case for PR46759. NFC.
Kai Luo [Fri, 17 Jul 2020 08:36:30 +0000 (08:36 +0000)]
[PowerPC] Precommit test case for PR46759. NFC.

4 years ago[TSan] Add option for emitting compound read-write instrumentation
Marco Elver [Fri, 17 Jul 2020 06:53:56 +0000 (08:53 +0200)]
[TSan] Add option for emitting compound read-write instrumentation

This adds option -tsan-compound-read-before-write to emit different
instrumentation for the write if the read before that write is omitted
from instrumentation. The default TSan runtime currently does not
support the different instrumentation, and the option is disabled by
default.

Alternative runtimes, such as the Kernel Concurrency Sanitizer (KCSAN)
can make use of the feature. Indeed, the initial motivation is for use
in KCSAN as it was determined that due to the Linux kernel having a
large number of unaddressed data races, it makes sense to improve
performance and reporting by distinguishing compounded operations. E.g.
the compounded instrumentation is typically emitted for compound
operations such as ++, +=, |=, etc. By emitting different reports, such
data races can easily be noticed, and also automatically bucketed
differently by CI systems.

Reviewed By: dvyukov, glider

Tags: #llvm

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

4 years ago[compiler-rt][asan] Define MemToShadowSize for sparc64
Rainer Orth [Fri, 17 Jul 2020 08:04:19 +0000 (10:04 +0200)]
[compiler-rt][asan] Define MemToShadowSize for sparc64

[compiler-rt][asan][hwasan] Refactor shadow setup into sanitizer_common (NFCI) <https://reviews.llvm.org/D83247>
broke the Solaris/sparcv9 <http://lab.llvm.org:8014/builders/clang-solaris11-sparcv9/builds/6623> build:

  FAILED: projects/compiler-rt/lib/asan/CMakeFiles/RTAsan.sparcv9.dir/asan_linux.cpp.o
  /opt/llvm-buildbot/bin/c++  -D_DEBUG -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iprojects/compiler-rt/lib/asan -I/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan -Iinclude -I/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include -I/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/llvm/include/llvm/Support/Solaris -I/opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan/.. -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -std=c++14 -Wno-unused-parameter -O3     -m64 -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fvisibility=hidden -fno-lto -O3 -g -Wno-variadic-macros -Wno-non-virtual-dtor -fno-rtti -UNDEBUG -std=c++14 -MD -MT projects/compiler-rt/lib/asan/CMakeFiles/RTAsan.sparcv9.dir/asan_linux.cpp.o -MF projects/compiler-rt/lib/asan/CMakeFiles/RTAsan.sparcv9.dir/asan_linux.cpp.o.d -o projects/compiler-rt/lib/asan/CMakeFiles/RTAsan.sparcv9.dir/asan_linux.cpp.o -c /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan/asan_linux.cpp
  /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan/asan_linux.cpp: In function ‘__sanitizer::uptr __asan::FindDynamicShadowStart()’:
  /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan/asan_linux.cpp:103:28: error: ‘MemToShadowSize’ was not declared in this scope
     uptr shadow_size_bytes = MemToShadowSize(kHighMemEnd);
                              ^~~~~~~~~~~~~~~
  /opt/llvm-buildbot/home/solaris11-sparcv9/clang-solaris11-sparcv9/llvm/compiler-rt/lib/asan/asan_linux.cpp:103:28: note: suggested alternative: ‘MemToShadow’
     uptr shadow_size_bytes = MemToShadowSize(kHighMemEnd);
                              ^~~~~~~~~~~~~~~
                              MemToShadow

Fixed by also definining `MemToShadowSize` in `compiler-rt/lib/asan/asan_mapping_sparc64.h`.

Tested on `sparcv9-sun-solaris2.11`.

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

4 years ago[ARM] halfword store hits llvm_unreachable with big-endian
Simon Wallis [Fri, 17 Jul 2020 07:26:30 +0000 (08:26 +0100)]
[ARM] halfword store hits llvm_unreachable with big-endian

Summary:
[ARM] halfword store hits llvm_unreachable with big-endian

Provide missing case in getFixupKindContainerSizeBytes().

This stops execution reaching llvm_unreachable("Unknown fixup kind!")

D83947

Reviewers: olista01, ostannard

Reviewed By: ostannard

Subscribers: ostannard, kristof.beyls, hiraditya, danielkiss, llvm-commits

Tags: #llvm

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

Change-Id: I598aa1fb51fd1c6f424c557c85d6df6d1958bc62

4 years ago[lldb] Store StackFrameRecognizers in the target instead of a global list
Raphael Isemann [Fri, 17 Jul 2020 06:36:38 +0000 (08:36 +0200)]
[lldb] Store StackFrameRecognizers in the target instead of a global list

Summary:

Currently the frame recognizers are stored in a global list (the list in the
StackFrameRecognizersManagerImpl singleton to be precise). All commands and
plugins that modify the list are just modifying that global list of recognizers
which is shared by all Target and Debugger instances.

This is clearly against the idea of LLDB being usable as a library and it also
leads to some very obscure errors as now multiple tests are sharing the used
frame recognizers. For example D83400 is currently failing as it reorders some
test_ functions which permanently changes the frame recognizers of all
debuggers/targets. As all frame recognizers are also initialized in a 'once'
guard, it's also impossible to every restore back the original frame recognizers
once they are deleted in a process.

This patch just moves the frame recognizers into the current target. This seems
the way everyone assumes the system works as for example the assert frame
recognizers is using the current target to find the function/so-name to look for
(which only works if the recognizers are stored in the target).

Reviewers: jingham, mib

Reviewed By: jingham, mib

Subscribers: MrHate, JDevlieghere

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

4 years ago[libc][Obvious] Cleanup of include lines and target listings in FPUtil.
Siva Chandra Reddy [Fri, 17 Jul 2020 07:08:28 +0000 (00:08 -0700)]
[libc][Obvious] Cleanup of include lines and target listings in FPUtil.

4 years ago[sanitizer] Revert accidentally committed file
Vitaly Buka [Fri, 17 Jul 2020 07:08:45 +0000 (00:08 -0700)]
[sanitizer] Revert accidentally committed file

4 years ago[profile] Enabled test on windows
Vitaly Buka [Fri, 17 Jul 2020 07:05:07 +0000 (00:05 -0700)]
[profile] Enabled test on windows

Works with D34797

4 years ago[InstCombine] Fix replace select with Phis when branch has the same labels
Max Kazantsev [Fri, 17 Jul 2020 07:01:59 +0000 (14:01 +0700)]
[InstCombine] Fix replace select with Phis when branch has the same labels

```
define i32 @test(i1 %cond) {
entry:
  br i1 %cond, label %exit, label %exit
exit:
  %result = select i1 %cond, i32 123, i32 456
  ret i32 %result
}
```
In this test, after applying transformation of replacing select with Phis,
the result will be:

```
define i32 @test(i1 %cond) {
entry:
  br i1 %cond, label %exit, label %exit
exit:
  %result = i32 phi [123, %exit], [123, %exit]
  ret i32 %result
}
```
That is, select is transformed into an invalid Phi, which will then be
reduced to 123 and the second value will be lost. But it is worth
noting that this problem will arise only if select is in the InstCombine
worklist will be before the branch. Otherwise, InstCombine will replace
the branch condition with false and transformation will not be applied.

The fix is to check the target labels in the branch condition for equality.

Patch By: Kirill Polushin
Differential Revision: https://reviews.llvm.org/D84003
Reviewed By: mkazantsev

4 years agoRevert "[AMDGPU/MemOpsCluster] Implement new heuristic for computing max mem ops...
hsmahesha [Fri, 17 Jul 2020 06:10:10 +0000 (11:40 +0530)]
Revert "[AMDGPU/MemOpsCluster] Implement new heuristic for computing max mem ops cluster size"

This reverts commit cc9d69385659be32178506a38b4f2e112ed01ad4.

4 years ago[DebugInfo] Fix a misleading usage of DWARF forms with DIEExpr. NFCI.
Igor Kudrin [Fri, 17 Jul 2020 05:46:47 +0000 (12:46 +0700)]
[DebugInfo] Fix a misleading usage of DWARF forms with DIEExpr. NFCI.

For now, DIEExpr is used only in two places:

 1) in the debug info library unit test suite to emit
    a DW_AT_str_offsets_base attribute with the DW_FORM_sec_offset
    form, see dwarfgen::DIE::addStrOffsetsBaseAttribute();

 2) in DwarfCompileUnit::addLocationAttribute() to generate the location
    attribute for a TLS variable.

The later case used an incorrect DWARF form of DW_FORM_udata, which
implies storing an uleb128 value, not a 4/8 byte constant. The generated
result was as expected because DIEExpr::SizeOf() did not handle the used
form, but returned the size of the code pointer by default.

The patch fixes the issue by using more appropriate DWARF forms for
the problematic case and making DIEExpr::SizeOf() more straightforward.

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

4 years ago[lldb] Only set the executable module for a target once
Raphael Isemann [Fri, 17 Jul 2020 06:03:07 +0000 (08:03 +0200)]
[lldb] Only set the executable module for a target once

Summary:

When we try to find the executable module for our target we don't check
if we already have an executable module set. This causes that when debugging
a program that dlopens another executable, LLDB will take that other executable
as the new executable of the target (which causes that future launches of the
target will launch the dlopen'd executable instead of the original executable).

This just adds a check that we only set the executable when we haven't already
found one.

Fixes rdar://63443099

Reviewers: jasonmolenda, jingham, teemperor

Reviewed By: jasonmolenda, teemperor

Subscribers: jingham, JDevlieghere

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

4 years ago[X86] Change the scheduler model for 'pentium4' to SandyBridgeModel.
Craig Topper [Fri, 17 Jul 2020 05:04:24 +0000 (22:04 -0700)]
[X86] Change the scheduler model for 'pentium4' to SandyBridgeModel.

I meant to do this in D83913, but missed it while updating the
feature list.

Interestingly I think this is disabling the postRA scheduler. But
it does match our default 64-bit behavior.

Reviewed By: echristo

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

4 years ago[X86] Reorder how the subtarget map key is created.
Craig Topper [Fri, 17 Jul 2020 03:14:20 +0000 (20:14 -0700)]
[X86] Reorder how the subtarget map key is created.

We use a SmallString<512> and attempted to reserve enough space
for CPU plus Features, but that doesn't account for all the things
that get added to the string.

Reorder the string so the shortest things go first which shouldn't
exceed the small size. Finally add the feature string at the end
which might be long. This should ensure at most one heap allocation
without needing to use reserve.

I don't know if this matters much in practice, but I was looking
into something else that will require more code here and noticed
the odd reserve call.

4 years ago[llvm] Add RISCVTargetParser.def to the module map
Jonas Devlieghere [Fri, 17 Jul 2020 04:38:49 +0000 (21:38 -0700)]
[llvm] Add RISCVTargetParser.def to the module map

This fixes the modules build.

4 years ago[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison consider noundef
Juneyoung Lee [Fri, 17 Jul 2020 03:53:08 +0000 (12:53 +0900)]
[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison consider noundef

 This patch adds support for noundef arguments.

Reviewed By: nikic

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

4 years agoAdd a test for D83752
Juneyoung Lee [Fri, 17 Jul 2020 03:50:28 +0000 (12:50 +0900)]
Add a test for D83752

4 years ago[DWARFYAML] Merge forms that use same encodings. NFC.
Xing GUO [Fri, 17 Jul 2020 03:28:29 +0000 (11:28 +0800)]
[DWARFYAML] Merge forms that use same encodings. NFC.

4 years ago[polly][NFC] Add missing 'override's
Logan Smith [Fri, 17 Jul 2020 03:12:13 +0000 (20:12 -0700)]
[polly][NFC] Add missing 'override's

4 years ago[compiler-rt][NFC] Add missing 'override's
Logan Smith [Fri, 17 Jul 2020 03:07:57 +0000 (20:07 -0700)]
[compiler-rt][NFC] Add missing 'override's

4 years ago[LangRef] Mention that freeze does not consider aggregate's paddings
Juneyoung Lee [Fri, 17 Jul 2020 02:53:26 +0000 (11:53 +0900)]
[LangRef] Mention that freeze does not consider aggregate's paddings

Make explicit that freeze does not touch paddings of an aggregate.
(Relevant comment: https://reviews.llvm.org/D83752#2152550)

This implies that `v = freeze(load p); store v, q` may still leave undef bits
or poison in memory if `v` is an aggregate, but it still happens for
non-byte integers such as i1.

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

4 years ago[AMDGPU] Translate s_and/s_andn2 to s_mov in vcc optimisation
Carl Ritson [Fri, 17 Jul 2020 02:12:12 +0000 (11:12 +0900)]
[AMDGPU] Translate s_and/s_andn2 to s_mov in vcc optimisation

When SCC is dead, but VCC is required then replace s_and / s_andn2
with s_mov into VCC when mask value is 0 or -1.

Reviewed By: rampitec

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

4 years ago[profile] Disable new failing test from D83967
Vitaly Buka [Fri, 17 Jul 2020 02:47:36 +0000 (19:47 -0700)]
[profile] Disable new failing test from D83967

4 years ago[sanitizer] Fix symbolizer build broken by D82702
Vitaly Buka [Fri, 17 Jul 2020 02:33:50 +0000 (19:33 -0700)]
[sanitizer] Fix symbolizer build broken by D82702

4 years agoRevert "[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes...
Richard Smith [Fri, 17 Jul 2020 01:06:06 +0000 (18:06 -0700)]
Revert "[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes are not linked."

This causes binaries linked with this runtime to crash on startup if
dlsym uses any of the intercepted functions. (For example, that happens
when using tcmalloc as the allocator: dlsym attempts to allocate memory
with malloc, and tcmalloc uses strncmp within its implementation.)

Also revert dependent commit "[libFuzzer] Disable implicit builtin knowledge about memcmp-like functions when -fsanitize=fuzzer-no-link is given."

This reverts commit f78d9fceea736d431e9e3cbca291e3909e3aa46d and 12d1124c49beec0fb79d36944960e5bf0f236d4c.

4 years ago[gn build] Port 9870f77441c
LLVM GN Syncbot [Thu, 16 Jul 2020 23:07:46 +0000 (23:07 +0000)]
[gn build] Port 9870f77441c

4 years ago[gn build] Port 0f6220ddd6c
LLVM GN Syncbot [Thu, 16 Jul 2020 23:07:45 +0000 (23:07 +0000)]
[gn build] Port 0f6220ddd6c

4 years ago[gn build] Port 0e940d55f8a
LLVM GN Syncbot [Thu, 16 Jul 2020 23:07:45 +0000 (23:07 +0000)]
[gn build] Port 0e940d55f8a

4 years ago[gn build] (manually) merge 9870f77441c
Nico Weber [Thu, 16 Jul 2020 23:07:28 +0000 (19:07 -0400)]
[gn build] (manually) merge 9870f77441c

4 years ago[profile] Move __llvm_profile_raw_version into a separate file
Min-Yih Hsu [Fri, 10 Jul 2020 16:40:09 +0000 (09:40 -0700)]
[profile] Move __llvm_profile_raw_version into a separate file

Similar to the reason behind moving __llvm_profile_filename into a
separate file[1]. When users try to use Full LTO with BFD linker to
generate IR level PGO profile, the __llvm_profile_raw_version variable,
which is used for marking instrumentation level, generated by frontend
would somehow conflict with the weak symbol provided by profiling
runtime.

In most of the cases, BFD linkers will pick profiling runtime's weak symbol
as the real definition and thus generate the incorrect instrumentation
level metadata in the final executables.

Moving __llvm_profile_raw_version into a separate file would make
linkers not seeing the weak symbol in the archive unless the frontend
doesn't generate one.

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

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

4 years ago[tsan][go] Fix for missing symbols needed by GotsanRuntimeCheck
Jon Roelofs [Thu, 16 Jul 2020 23:01:06 +0000 (17:01 -0600)]
[tsan][go] Fix for missing symbols needed by GotsanRuntimeCheck

4 years ago[ORC] Switch from initializer lists to named arguments to work around MSVC.
Lang Hames [Thu, 16 Jul 2020 22:55:29 +0000 (15:55 -0700)]
[ORC] Switch from initializer lists to named arguments to work around MSVC.

MSVC doesn't like some of the initializer list uses in 0e940d55f8a.
Switch to named arguments to work around this.

4 years ago[libFuzzer] Disable implicit builtin knowledge about memcmp-like functions when ...
Dokyung Song [Thu, 16 Jul 2020 21:24:06 +0000 (21:24 +0000)]
[libFuzzer] Disable implicit builtin knowledge about memcmp-like functions when -fsanitize=fuzzer-no-link is given.

Summary: This patch disables implicit builtin knowledge about memcmp-like functions when compiling the program for fuzzing, i.e., when -fsanitize=fuzzer(-no-link) is given. This allows libFuzzer to always intercept memcmp-like functions as it effectively disables optimizing calls to such functions into different forms. This is done by adding a set of flags (-fno-builtin-memcmp and others) in the clang driver. Individual -fno-builtin-* flags previously used in several libFuzzer tests are now removed, as it is now done automatically in the clang driver.

Reviewers: morehouse, hctim

Subscribers: cfe-commits, #sanitizers

Tags: #clang, #sanitizers

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

4 years ago[lldb/Test] Skip TestMacABImacOSFramework.py with reproducers
Jonas Devlieghere [Thu, 16 Jul 2020 22:49:22 +0000 (15:49 -0700)]
[lldb/Test] Skip TestMacABImacOSFramework.py with reproducers

This test is hitting https://bugs.python.org/issue22393 which results in
the lit multiprocessing pool deadlocking and the reproducer job timing
out on GreenDragon.

4 years ago[ORC] Add more explicit casts to fix a narrowing conversion errors.
Lang Hames [Thu, 16 Jul 2020 22:35:51 +0000 (15:35 -0700)]
[ORC] Add more explicit casts to fix a narrowing conversion errors.

4 years ago[ORC] Add explicit cast to fix a narrowing conversion error.
Lang Hames [Thu, 16 Jul 2020 22:26:56 +0000 (15:26 -0700)]
[ORC] Add explicit cast to fix a narrowing conversion error.

4 years agocmake list formatting fix
Nico Weber [Thu, 16 Jul 2020 22:29:48 +0000 (18:29 -0400)]
cmake list formatting fix

4 years ago[PowerPC][Power10] Add 128-bit Binary Integer Operation instruction definitions and...
Albion Fung [Thu, 16 Jul 2020 17:03:11 +0000 (12:03 -0500)]
[PowerPC][Power10] Add 128-bit Binary Integer Operation instruction definitions and MC Tests

This patch adds the instruction definitions and MC tests for the 128-bit Binary
Integer Operation instructions introduced in Power10.

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

4 years ago[builtins] Omit 80-bit builtins on Android and MSVC
Ryan Prichard [Thu, 16 Jul 2020 22:10:22 +0000 (15:10 -0700)]
[builtins] Omit 80-bit builtins on Android and MSVC

long double is a 64-bit double-precision type on:
 - MSVC (32- and 64-bit x86)
 - Android (32-bit x86)

long double is a 128-bit quad-precision type on x86_64 Android.

The assembly variants of the 80-bit builtins are correct, but some of
the builtins are implemented in C and require that long double be the
80-bit type passed via an x87 register.

Reviewed By: compnerd

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

4 years ago[compiler-rt][asan][hwasan] Fix Android bots
Teresa Johnson [Thu, 16 Jul 2020 21:42:00 +0000 (14:42 -0700)]
[compiler-rt][asan][hwasan] Fix Android bots

Fix failure in Android bots from refactoring in
5d2be1a18845c528d3e86f7efcc59872e4a757c3 (https://crbug.com/1106482).

We need to make the UnmapFromTo available outside sanitizer_common for
calls from hwasan and asan linux handling. While here, remove
declaration of GetHighMemEnd which is no longer in sanitizer_common.

4 years ago[ORC] Add TargetProcessControl and TPCIndirectionUtils APIs.
Lang Hames [Thu, 16 Jul 2020 19:51:14 +0000 (12:51 -0700)]
[ORC] Add TargetProcessControl and TPCIndirectionUtils APIs.

TargetProcessControl is a new API for communicating with JIT target processes.
It supports memory allocation and access, and inspection of some process
properties, e.g. the target proces triple and page size.

Centralizing these APIs allows utilities written against TargetProcessControl
to remain independent of the communication procotol with the target process
(which may be direct memory access/allocation for in-process JITing, or may
involve some form of IPC or RPC).

An initial set of TargetProcessControl-based utilities for lazy compilation is
provided by the TPCIndirectionUtils class.

An initial implementation of TargetProcessControl for in-process JITing
is provided by the SelfTargetProcessControl class.

An example program showing how the APIs can be used is provided in
llvm/examples/OrcV2Examples/LLJITWithTargetProcessControl.

4 years ago[lldb] Eliminated unused local variable
Adrian McCarthy [Thu, 16 Jul 2020 21:44:24 +0000 (14:44 -0700)]
[lldb] Eliminated unused local variable

I got misled by this remnant from earlier changes.

4 years ago[SimplifyCFG] Fix crash in the EXPENSIVE_CHECKS build
Jon Roelofs [Thu, 16 Jul 2020 21:10:22 +0000 (15:10 -0600)]
[SimplifyCFG] Fix crash in the EXPENSIVE_CHECKS build

SimplifyCFG was incorrectly reporting to the pass manager that it had not made
changes after folding away a PHI.  This is detected in the EXPENSIVE_CHECKS
build when the function's hash changes.

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

4 years ago[spirv] Use owning module ref to avoid leaks and fix ASAN tests
Lei Zhang [Thu, 16 Jul 2020 20:05:51 +0000 (16:05 -0400)]
[spirv] Use owning module ref to avoid leaks and fix ASAN tests

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

4 years ago[WebAssembly] 64-bit (function) pointer fixes.
Wouter van Oortmerssen [Fri, 10 Jul 2020 23:51:01 +0000 (16:51 -0700)]
[WebAssembly] 64-bit (function) pointer fixes.

Accounting for the fact that Wasm function indices are 32-bit, but in wasm64 we want uniform 64-bit pointers.
Includes reloc types for 64-bit table indices.

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

4 years ago[NFC][PhaseOrdering] Add a test demonstrating pitfails of common code hoisting on...
Roman Lebedev [Thu, 16 Jul 2020 20:33:10 +0000 (23:33 +0300)]
[NFC][PhaseOrdering] Add a test demonstrating pitfails of common code hoisting on loop rotation

Depending on the -rotation-max-header-size=?,
hoisting common code early makes loop rotation impossible.

4 years ago[X86] Move integer hadd/hsub formation into a helper function shared by combineAdd...
Craig Topper [Thu, 16 Jul 2020 19:52:02 +0000 (12:52 -0700)]
[X86] Move integer hadd/hsub formation into a helper function shared by combineAdd and combineSub.

There was a lot of duplicate code here for checking the VT and
subtarget. Moving it into a helper avoids that.

It also fixes a bug that combineAdd reused Op0/Op1 after a call
to isHorizontalBinOp may have changed it. The new helper function
has its own local version of Op0/Op1 that aren't shared by other
code.

Fixes PR46455.

Reviewed By: spatel, bkramer

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

4 years ago[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes are not...
Dokyung Song [Thu, 16 Jul 2020 20:26:03 +0000 (20:26 +0000)]
[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes are not linked.

Summary: libFuzzer intercepts certain library functions such as memcmp/strcmp by defining weak hooks. Weak hooks, however, are called only when other runtimes such as ASan is linked. This patch defines libFuzzer's own interceptors, which is linked into the libFuzzer executable when other runtimes are not linked, i.e., when -fsanitize=fuzzer is given, but not others.

Reviewers: kcc, morehouse, hctim

Reviewed By: morehouse, hctim

Subscribers: krytarowski, mgorny, cfe-commits, #sanitizers

Tags: #clang, #sanitizers

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

4 years ago[Statepoint] Fix bug found by sanitaizer.
Denis Antrushin [Thu, 16 Jul 2020 19:54:58 +0000 (22:54 +0300)]
[Statepoint] Fix bug found by sanitaizer.

Statepoint has no static operands, so it cannot be verified
against MCInstrDescr. Revert NumDefs change introduced by ef658ebd629.

4 years agoHarmonize Python shebang
serge-sans-paille [Wed, 15 Jul 2020 07:31:13 +0000 (09:31 +0200)]
Harmonize Python shebang

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

4 years agoFix incorrect file path in documentation
Matt Arsenault [Thu, 16 Jul 2020 00:42:17 +0000 (20:42 -0400)]
Fix incorrect file path in documentation

4 years agoAMDGPU: Add a few more missing test for AGPR tuple copying
Matt Arsenault [Thu, 16 Jul 2020 19:44:44 +0000 (15:44 -0400)]
AMDGPU: Add a few more missing test for AGPR tuple copying

4 years ago[X86] Change the tuning settings for pentium4 to be more modern since its the default...
Craig Topper [Thu, 16 Jul 2020 18:20:57 +0000 (11:20 -0700)]
[X86] Change the tuning settings for pentium4 to be more modern since its the default 32-bit cpu in clang

Alternative to D83897. I believe the big change here is that I removed slow unaligned memory 16

Down side that it may adversely effect tuning if someone explicitly targets -march=pentium4 and expects pentium4 tuned code. Of course pentium4 is so old our default behavior with the previous settings may not have been the best either.

Reviewed By: echristo, RKSimon

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

4 years agoRemove an unused variable in Clang.
Nadav Rotem [Tue, 14 Jul 2020 20:59:36 +0000 (13:59 -0700)]
Remove an unused variable in Clang.

https://reviews.llvm.org/D83788

4 years ago[libc++abi] Temporarily disable test on Apple to fix the CI
Louis Dionne [Thu, 16 Jul 2020 19:41:55 +0000 (15:41 -0400)]
[libc++abi] Temporarily disable test on Apple to fix the CI

This test has been failing on some SDKs for a long time because we lack
a proper way of identifying the SDK version in Lit. Until that is possible,
mark the test as unsupported on Apple to restore the CI.

4 years ago[libc++] Remove shortcut Lit features for Apple backdeployment
Louis Dionne [Thu, 16 Jul 2020 19:34:15 +0000 (15:34 -0400)]
[libc++] Remove shortcut Lit features for Apple backdeployment

Some time ago, I introduced shortcut features like dylib-has-no-shared_mutex
to encode whether the deployment target supported shared_mutex (say). This
made the test suite annotations cleaner.

However, the problem with building Lit features on top of other Lit
features is that it's easier for them to become stale, especially when
they are generated programmatically. Furthermore, it makes the bar for
defining configurations from scratch higher, since more features have
to be defined. Instead, I think it's better to put the XFAILs in the
tests directly, which allows cleaning them up with a simple grep.

4 years agoAMDGPU: Add missing tests for copyPhysReg AGPR tuples
Matt Arsenault [Thu, 16 Jul 2020 19:17:10 +0000 (15:17 -0400)]
AMDGPU: Add missing tests for copyPhysReg AGPR tuples

4 years ago[llvm] Moved InlineSizeEstimatorAnalysis test to .ll
Mircea Trofin [Wed, 15 Jul 2020 23:02:15 +0000 (16:02 -0700)]
[llvm] Moved InlineSizeEstimatorAnalysis test to .ll

Summary:
Following guidance in
https://llvm.org/docs/TestingGuide.html#testing-analysis

Reviewers: mehdi_amini

Subscribers: mgorny, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[intel-pt] Fix building due to CMake + python changes
Walter Erquinigo [Thu, 16 Jul 2020 19:18:59 +0000 (12:18 -0700)]
[intel-pt] Fix building due to CMake + python changes

Python is now handled in CMake with different variables, thus
the intel plugin needs a corresponding update.

Test Plan:

Differential Revision: https://phabricator.intern.facebook.com/D22555992

4 years ago[libc++] Improve how we report the testing configuration
Louis Dionne [Thu, 16 Jul 2020 19:01:09 +0000 (15:01 -0400)]
[libc++] Improve how we report the testing configuration

4 years ago[gn build] Port 5e8b4be9f85
LLVM GN Syncbot [Thu, 16 Jul 2020 19:08:09 +0000 (19:08 +0000)]
[gn build] Port 5e8b4be9f85

4 years ago[AST][NFC] Simplify a regression test
Jan Korous [Thu, 16 Jul 2020 19:06:02 +0000 (12:06 -0700)]
[AST][NFC] Simplify a regression test

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

4 years ago[WebAssembly] Triple::wasm64 related cleanup
Wouter van Oortmerssen [Mon, 6 Jul 2020 20:34:16 +0000 (13:34 -0700)]
[WebAssembly] Triple::wasm64 related cleanup

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

4 years agoTemporarily Revert "[AssumeBundles] Use operand bundles to encode alignment assumptions"
Eric Christopher [Thu, 16 Jul 2020 18:40:43 +0000 (11:40 -0700)]
Temporarily Revert "[AssumeBundles] Use operand bundles to encode alignment assumptions"
due to the performance bugs filed in https://bugs.llvm.org/show_bug.cgi?id=46753.

An SROA change soon may obviate some of these problems.

This reverts commit 8d09f20798ac180b1749276bff364682ce0196ab.

4 years ago[InjectTLIMappings] Use StringRef instead of std::string for FN name.
Nadav Rotem [Tue, 14 Jul 2020 20:35:06 +0000 (13:35 -0700)]
[InjectTLIMappings] Use StringRef instead of std::string for FN name.

https://reviews.llvm.org/D83797

4 years ago[Analyzer] Hotfix for various crashes in iterator checkers
Adam Balogh [Tue, 7 Jul 2020 10:03:07 +0000 (12:03 +0200)]
[Analyzer] Hotfix for various crashes in iterator checkers

The patch that introduces handling iterators implemented as pointers may
cause crash in some projects because pointer difference is mistakenly
handled as pointer decrement. (Similair case for iterators implemented
as class instances are already handled correctly.) This patch fixes this
issue.

The second case that causes crash is comparison of an iterator
implemented as pointer and a null-pointer. This patch contains a fix for
this issue as well.

The third case which causes crash is that the checker mistakenly
considers all integers as nonloc::ConcreteInt when handling an increment
or decrement of an iterator implemented as pointers. This patch adds a
fix for this too.

The last case where crashes were detected is when checking for success
of an std::advance() operation. Since the modeling of iterators
implemented as pointers is still incomplete this may result in an
assertion. This patch replaces the assertion with an early exit and
adds a FIXME there.

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

4 years agoRevert "[Darwin] Fix OS version checks inside simulators"
Julian Lettner [Thu, 16 Jul 2020 18:46:45 +0000 (11:46 -0700)]
Revert "[Darwin] Fix OS version checks inside simulators"

This reverts commit b16dfbead21a458799a0dab96599eb15f5d9b7ea.

Accidental push, reverting and creating a new revision.

4 years ago[compiler-rt][asan][hwasan] Refactor shadow setup into sanitizer_common (NFCI)
Teresa Johnson [Mon, 6 Jul 2020 18:05:12 +0000 (11:05 -0700)]
[compiler-rt][asan][hwasan] Refactor shadow setup into sanitizer_common (NFCI)

Summary:
This refactors some common support related to shadow memory setup from
asan and hwasan into sanitizer_common. This should not only reduce code
duplication but also make these facilities available for new compiler-rt
uses (e.g. heap profiling).

In most cases the separate copies of the code were either identical, or
at least functionally identical. A few notes:

In ProtectGap, the asan version checked the address against an upper
bound (kZeroBaseMaxShadowStart, which is (2^18). I have created a copy
of kZeroBaseMaxShadowStart in hwasan_mapping.h, with the same value, as
it isn't clear why that code should not do the same check. If it
shouldn't, I can remove this and guard this check so that it only
happens for asan.

In asan's InitializeShadowMemory, in the dynamic shadow case it was
setting __asan_shadow_memory_dynamic_address to 0 (which then sets both
macro SHADOW_OFFSET as well as macro kLowShadowBeg to 0) before calling
FindDynamicShadowStart(). AFAICT this is only needed because
FindDynamicShadowStart utilizes kHighShadowEnd to
get the shadow size, and kHighShadowEnd is a macro invoking
MEM_TO_SHADOW(kHighMemEnd) which in turn invokes:
(((kHighMemEnd) >> SHADOW_SCALE) + (SHADOW_OFFSET))
I.e. it computes the shadow space needed by kHighMemEnd (the shift), and
adds the offset. Since we only want the shadow space here, the earlier
setting of SHADOW_OFFSET to 0 via __asan_shadow_memory_dynamic_address
accomplishes this. In the hwasan version, it simply gets the shadow
space via "MemToShadowSize(kHighMemEnd)", where MemToShadowSize just
does the shift. I've simplified the asan handling to do the same
thing, and therefore was able to remove the setting of the SHADOW_OFFSET
via __asan_shadow_memory_dynamic_address to 0.

Reviewers: vitalybuka, kcc, eugenis

Subscribers: dberris, #sanitizers, llvm-commits, davidxl

Tags: #sanitizers

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

4 years ago[RISCV] Add support for -mcpu option.
Zakk Chen [Thu, 16 Jul 2020 17:32:01 +0000 (10:32 -0700)]
[RISCV] Add support for -mcpu option.

Summary:
1. gcc uses `-march` and `-mtune` flag to chose arch and
pipeline model, but clang does not have `-mtune` flag,
we uses `-mcpu` to chose both infos.
2. Add SiFive e31 and u54 cpu which have default march
and pipeline model.
3. Specific `-mcpu` with rocket-rv[32|64] would select
pipeline model only, and use the driver's arch choosing
logic to get default arch.

Reviewers: lenary, asb, evandro, HsiangKai

Reviewed By: lenary, asb, evandro

Tags: #llvm, #clang

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

4 years ago[LiveVariables] Replace std::vector with SmallVector.
Nadav Rotem [Thu, 16 Jul 2020 00:12:48 +0000 (17:12 -0700)]
[LiveVariables] Replace std::vector with SmallVector.

Replace std::vector with SmallVector to reduce the number of mallocs.
This method is frequently executed, and the number of elements in the
vector is typically small.

https://reviews.llvm.org/D83920

4 years ago[WebAssembly] Implement v128.select
Thomas Lively [Thu, 16 Jul 2020 18:37:25 +0000 (11:37 -0700)]
[WebAssembly] Implement v128.select

Although the SIMD spec proposal does not specifically include a
select instruction, the select instruction in MVP WebAssembly is
polymorphic over the selected types, so it is able to work on v128
values when they are enabled. This patch introduces a new variant of
the select instruction for each legal vector type. Additional ISel
patterns are adapted from the SELECT_I32 and SELECT_I64 patterns.

Depends on D83736.

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

4 years ago[TableGen] Change std::vector to SmallVector
Nadav Rotem [Thu, 16 Jul 2020 05:36:32 +0000 (22:36 -0700)]
[TableGen] Change std::vector to SmallVector

The size of VTList that is pushed into this container is usually 1, but
often 6 or 7. Change the vector to SmallVector to eliminate frequent
mallocs.  This happens hundreds of thousands of times in each tablegen
execution during the LLVM/clang build.

https://reviews.llvm.org/D83849

4 years agoAMDGPU: Move handling of AGPR copies to a separate function
Matt Arsenault [Wed, 1 Jul 2020 16:30:24 +0000 (12:30 -0400)]
AMDGPU: Move handling of AGPR copies to a separate function

This is in preparation for fixing multiple problems with the way AGPR
copies are handled, but this change is NFC itself. First, it's relying
on recursively calling copyPhysReg, which is losing information
necessary to get correct super register handling.

Second, it's constructing a new RegScavenger and doing a O(N^2) walk
on every single sub-spill for every AGPR tuple copy. Third, it's using
the forward form of the scavenger, and not using the preferred
backwards scan.

4 years ago[Driver] Make -B take precedence over COMPILER_PATH
Fangrui Song [Thu, 16 Jul 2020 18:27:16 +0000 (11:27 -0700)]
[Driver] Make -B take precedence over COMPILER_PATH

There is currently no COMPILER_PATH test. A subsequent --ld-path patch
will improve the coverage here.

4 years ago[SCEV] Fix ScalarEvolution tests under NPM
Arthur Eubanks [Thu, 16 Jul 2020 18:09:47 +0000 (11:09 -0700)]
[SCEV] Fix ScalarEvolution tests under NPM

Many tests use opt's -analyze feature, which does not translate well to
NPM and has better alternatives. The alternative here is to explicitly
add a pass that calls ScalarEvolution::print().

The legacy pass manager RUNs aren't changing, but they are now pinned to
the legacy pass manager.  For each legacy pass manager RUN, I added a
corresponding NPM RUN using the 'print<scalar-evolution>' pass. For
compatibility with update_analyze_test_checks.py and existing test
CHECKs, 'print<scalar-evolution>' now prints what -analyze prints per
function.

This was generated by the following Python script and failures were
manually fixed up:

import sys
for i in sys.argv:
    with open(i, 'r') as f:
        s = f.read()
    with open(i, 'w') as f:
        for l in s.splitlines():
            if "RUN:" in l and ' -analyze ' in l and '\\' not in l:
                f.write(l.replace(' -analyze ', ' -analyze -enable-new-pm=0 '))
                f.write('\n')
                f.write(l.replace(' -analyze ', ' -disable-output ').replace(' -scalar-evolution ', ' "-passes=print<scalar-evolution>" ').replace(" | ", " 2>&1 | "))
                f.write('\n')
            else:
                f.write(l)

There are a couple failures still in ScalarEvolution under NPM, but
those are due to other unrelated naming conflicts.

Reviewed By: asbirlea

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

4 years ago[WebAssembly] Autogenerate tests for simd-select.ll
Thomas Lively [Thu, 16 Jul 2020 18:19:08 +0000 (11:19 -0700)]
[WebAssembly] Autogenerate tests for simd-select.ll

Updating the simd-select.ll tests manually with consistent named
regexps for the register numbers was taking more time than it was
worth, so this patch updates that test file to have autogenerated
output. This is not a significant readability regression because the
tests in that file are all very small.

Depends on D83734.

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

4 years ago[WebAssembly] Lower vselect to v128.bitselect
Thomas Lively [Thu, 16 Jul 2020 18:11:19 +0000 (11:11 -0700)]
[WebAssembly] Lower vselect to v128.bitselect

We were previously expanding vselect and matching on the expansion to
generate bitselects, but in some cases the expansion would be further
combined and a bitselect would not get generated. This patch improves
codegen in those cases by legalizing vselect and lowering it to
v128.bitselect. The old pattern that matches the expansion is still
useful for lowering IR that already uses the expansion rather than a
select operation.

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

4 years ago[X86] Add test case for PR46455.
Craig Topper [Thu, 16 Jul 2020 17:33:20 +0000 (10:33 -0700)]
[X86] Add test case for PR46455.

4 years agoDAG: Try scalarizing when expanding saturating add/sub
Matt Arsenault [Tue, 14 Jul 2020 12:19:39 +0000 (08:19 -0400)]
DAG: Try scalarizing when expanding saturating add/sub

In an upcoming AMDGPU patch, the scalar cases will be legal and vector
ops should be scalarized, rather than producing a long sequence of
vector ops which will also need to be scalarized.

Use a lazy heuristic that seems to work and improves the thumb2 MVE
test.

4 years ago[clang] Fix compilation warnings in OpenMP declare mapper codegen.
George Rokos [Thu, 16 Jul 2020 18:02:55 +0000 (11:02 -0700)]
[clang] Fix compilation warnings in OpenMP declare mapper codegen.

This patch fixes the compilation warnings that L is not a reference.
Thanks to Lingda Li for providing the patch.

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

4 years agoMIR Statepoint refactoring. Part 1: Basic MI level changes.
Denis Antrushin [Wed, 10 Jun 2020 12:53:54 +0000 (19:53 +0700)]
MIR Statepoint refactoring. Part 1: Basic MI level changes.

Basic support for variadic-def MIR Statepoint:
- Change TableGen STATEPOINT description to variadic out list
  (For self-documentation purpose; by itself it does not affect
  code generation in any way).
- Update StatepointOpers helper class to handle variadic defs.
- Update MachineVerifier to properly handle them, too.

With this change, new Statepoint instruction can be passed through
backend (excluding ISEL) without errors.

Full change set is available at D81603.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D81645

4 years agoUse findEnumAttribute helper for preallocated
Matt Arsenault [Fri, 10 Jul 2020 01:02:25 +0000 (21:02 -0400)]
Use findEnumAttribute helper for preallocated

4 years agoIR: Rename Argument::hasPassPointeeByValueAttr to prepare for byref
Matt Arsenault [Mon, 29 Jun 2020 19:13:32 +0000 (15:13 -0400)]
IR: Rename Argument::hasPassPointeeByValueAttr to prepare for byref

When the byref attribute is added, there will need to be two similar
functions for the existing cases which have an associate value copy,
and byref which does not. Most, but not all of the existing uses will
use the existing version.

The associated size function added by D82679 also needs to
contextually differ, and will help eliminate a few places still
relying on pointee element types.

4 years agoValueTracking: Fix isKnownNonZero for non-0 null pointers for byval
Matt Arsenault [Thu, 25 Jun 2020 23:12:55 +0000 (19:12 -0400)]
ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval

The IR doesn't have a proper concept of invalid pointers, and "null"
constants are just all zeros (though it really needs one).

I think it's not possible to break this for AMDGPU due to the copy
semantics of byval. If you have an original stack object at 0, the
byval copy will be placed above it so I don't think it's really
possible to hit a 0 address.

4 years ago[Darwin] Fix OS version checks inside simulators
Julian Lettner [Thu, 4 Jun 2020 19:33:30 +0000 (12:33 -0700)]
[Darwin] Fix OS version checks inside simulators

compiler-rt checks OS versions by querying the Darwin kernel version.
This is not necessarily correct inside the simulators if the simulator
runtime is not aligned with the host macOS.  Let's instead check the
`SIMULATOR_RUNTIME_VERSION` env var.

Note that we still use the old code path as a fallback in case the
`SIMULATOR_RUNTIME_VERSION` environment variable isn't set.

rdar://63031937

Reviewers: delcypher

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

4 years ago[gn build] Fix merge script mishap
Nico Weber [Thu, 16 Jul 2020 17:46:45 +0000 (13:46 -0400)]
[gn build] Fix merge script mishap

4 years ago[lldb/ObjectFileMachO] Fetch shared cache images from our own shared cache
Fred Riss [Wed, 15 Jul 2020 22:00:52 +0000 (15:00 -0700)]
[lldb/ObjectFileMachO] Fetch shared cache images from our own shared cache

Summary:
On macOS 11, the libraries that have been integrated in the system
shared cache are not present on the filesystem anymore. LLDB was
using those files to get access to the symbols of those libraries.
LLDB can get the images from the target process memory though.

This has 2 consequences:
 - LLDB cannot load the images before the process starts, reporting
   an error if someone tries to break on a system symbol.
 - Loading the symbols by downloading the data from the inferior
   is super slow. It takes tens of seconds at the start of the
   debug session to populate the Module list.

To fix this, we can use the library images LLDB has in its own
mapping of the shared cache. Shared cache images are somewhat
special as their LINKEDIT segment is moved to the end of the cache
and thus the images are not contiguous in memory. All of this can
hidden in ObjectFileMachO.

This patch fixes a number of test failures on macOS 11 due to the
first problem described above and adds some specific unittesting
for the new SharedCache Host utilities.

Reviewers: jasonmolenda, labath

Subscribers: llvm-commits, lldb-commits

Tags: #lldb, #llvm

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

4 years agoAMDGPU: Rename gfx9 version of v_add_i32/v_sub_i32
Matt Arsenault [Wed, 15 Jul 2020 00:51:45 +0000 (20:51 -0400)]
AMDGPU: Rename gfx9 version of v_add_i32/v_sub_i32

The carry-out opcode is renamed, so eliminate the deceptive _gfx9,
which looked like the encoded instruction. The real encoded version
was named _gfx9_gfx9.

Move it into the VI encoding namespace. The gfx9 namespace is just to
deal with the renamed instructions that reinterpret the opcode. When
codegened, it would fail to find the real instruction since it wasn't
in the right namespace.

4 years ago[docs] fix ident in llvm-exegesis.rst
Jinsong Ji [Thu, 16 Jul 2020 17:25:21 +0000 (17:25 +0000)]
[docs] fix ident in llvm-exegesis.rst

4 years agoAMDGPU: Rename add/sub with carry out instructions
Matt Arsenault [Tue, 14 Jul 2020 13:18:36 +0000 (09:18 -0400)]
AMDGPU: Rename add/sub with carry out instructions

The hardware has created a real mess in the naming for add/sub, which
have been renamed basically every generation. Switch the carry out
pseudos to have the gfx9/gfx10 names. We were using the original SI/CI
v_add_i32/v_sub_i32 names. Later targets reintroduced these names as
carryless instructions with a saturating clamp bit, which we do not
define. Do this rename so we can unambiguously add these missing
instructions.

The carry-in versions should also be renamed, but at least those had a
consistent _u32 name to begin with. The 16-bit instructions were also
renamed, but aren't ambiguous.

This does regress assembler error message quality in some cases. In
mismatched wave32/wave64 situations, this will switch from
"unsupported instruction" to "invalid operand", with the error
pointing at the wrong position. I couldn't quite follow how the
assembler selects these, but the previous behavior seemed accidental
to me. It looked like there was a partial attempt to handle this which
was never completed (i.e. there is an AMDGPUOperand::isBoolReg but it
isn't used for anything).

4 years ago[docs][lldb] Fix lldb item in releasenotes
Jinsong Ji [Thu, 16 Jul 2020 17:07:12 +0000 (17:07 +0000)]
[docs][lldb] Fix lldb item in releasenotes

Reviewed By: JDevlieghere

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

4 years agoAdd hashing support for std::tuple
Michael Forster [Thu, 16 Jul 2020 16:48:34 +0000 (18:48 +0200)]
Add hashing support for std::tuple

Summary:
All tuple values are passed directly to hash_combine. This is inspired by the implementation used for Swift:

https://github.com/llvm/llvm-project-staging/commit/4a1b4edbe1d1969284c1528e2950ac81b25edc8f
https://github.com/llvm/llvm-project-staging/commit/845f3829b91522920a59c351b9011af01c5c7f87

Reviewers: gribozavr2

Reviewed By: gribozavr2

Subscribers: dexonsmith, llvm-commits

Tags: #llvm

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

4 years ago[Matrix] Add test for running matrix lowering with -O0.
Florian Hahn [Thu, 16 Jul 2020 16:55:54 +0000 (17:55 +0100)]
[Matrix] Add test for running matrix lowering with -O0.

4 years ago[runtimes] Move the enable_rtti Lit parameter to the DSL
Louis Dionne [Thu, 16 Jul 2020 16:30:11 +0000 (12:30 -0400)]
[runtimes] Move the enable_rtti Lit parameter to the DSL