platform/upstream/llvm.git
4 years ago[lldb] Improve debugging 32-bit programs on NetBSD/amd64
Michał Górny [Sun, 12 Jan 2020 21:49:36 +0000 (22:49 +0100)]
[lldb] Improve debugging 32-bit programs on NetBSD/amd64

Implement detection of ELF binary format, and support for i386 register
context on amd64 when a 32-bit executable is being debugged.  This is
roughly based on the code from Linux.

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

4 years ago[lldb/test] Prevent TestFrameRecognizer.py to fail because of internal recognizers...
Med Ismail Bennani [Fri, 7 Feb 2020 16:28:34 +0000 (17:28 +0100)]
[lldb/test] Prevent TestFrameRecognizer.py to fail because of internal recognizers (NFC)

By clearing the recognizers before starting the test, we ensure that the
recognizers that get initialized when lldb starts won't alter the
expected results of this test (i.e. recognizer index).

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
4 years ago[lldb/Target] Fix `frame recognizer list` crash when registered with nullptr
Med Ismail Bennani [Fri, 7 Feb 2020 15:33:33 +0000 (16:33 +0100)]
[lldb/Target] Fix `frame recognizer list` crash when registered with nullptr

One way to register a recognizer is to use RegularExpressionSP for the
module and symbol.

In order to match a symbol regardless of the module, the recognizer can
be registered with a nullptr for the module. However, this cause the
frame recognizer list command to crash because it calls
RegularExpression::GetText without checking if the shared pointer is valid.

This patch adds checks for the symbol and module RegularExpressionSP.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
4 years ago[docs] update mathjax path in doxygen
Nuno Lopes [Fri, 7 Feb 2020 16:26:35 +0000 (16:26 +0000)]
[docs] update mathjax path in doxygen

4 years ago[AsmPrinter] Print FP constant in hexadecimal form instead
Jinsong Ji [Thu, 6 Feb 2020 16:12:10 +0000 (16:12 +0000)]
[AsmPrinter] Print FP constant in hexadecimal form instead

Printing floating point number in decimal is inconvenient for humans.
Verbose asm output will print out floating point values in comments, it
helps.

But in lots of cases, users still need additional work to covert the
decimal back to hex or binary to check the bit patterns,
especially when there are small precision difference.

Hexadecimal form is one of the supported form in LLVM IR, and easier for
debugging.

This patch try to print all FP constant in hex form instead.

Reviewed By: RKSimon

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

4 years ago[llvm-exegesis] Improve error reporting in BenchmarkRunner.cpp
Miloš Stojanović [Fri, 7 Feb 2020 12:45:10 +0000 (13:45 +0100)]
[llvm-exegesis] Improve error reporting in BenchmarkRunner.cpp

Followup to D74085.
Replace the use of `report_fatal_error()` with returning the error to
`llvm-exegesis.cpp` and handling it there.
To facilitate this, a new `Error` type has been added which is only used
to log errors to the yaml output.

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

4 years agoAMDGPU/GlobalISel: Fix move s.buffer.load to VALU
Matt Arsenault [Sat, 1 Feb 2020 03:22:00 +0000 (22:22 -0500)]
AMDGPU/GlobalISel: Fix move s.buffer.load to VALU

We were executing this in a waterfall loop as a placeholder, but this
should really be converted to a MUBUF load. Also execute in a
waterfall loop if the resource isn't an SGPR. This is a case where the
DAG handling was wrong because doing the right thing was too hard.

Currently, this will mishandle 96-bit loads. There's currently no way
to track the original memory size with an MMO, so these loads will be
widened andd the resulting memory size will be 128-bits.

4 years ago[TableGen] Fix spurious type error in bit assignment.
Simon Tatham [Fri, 7 Feb 2020 14:59:00 +0000 (14:59 +0000)]
[TableGen] Fix spurious type error in bit assignment.

Summary:
The following example gives the error message "expected value of type
'bits<32>', got 'bit'" on the assignment.

    class Instruction { bits<32> encoding; }
    def foo: Instruction { let encoding{10} = !eq(0, 1); }

But there's nothing wrong with this code: 'bit' is a perfectly good
type for the RHS of an assignment to a //single bit// of an
instruction encoding.

The problem is that `ParseBodyItem` is accidentally type-checking the
RHS against the full type of the `encoding` field, without adjusting
it in the case where we're only assigning to a subset of the bits. The
fix is trivial.

Reviewers: nhaehnle, hfinkel

Reviewed By: hfinkel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoGlobalISel: Fix narrowing of G_CTPOP
Matt Arsenault [Fri, 7 Feb 2020 03:29:23 +0000 (22:29 -0500)]
GlobalISel: Fix narrowing of G_CTPOP

The result type is separate from the source type. Tests will be
included in a future AMDGPU patch which uses this from
RegBankSelect/applyMappingImpl.

4 years agoGlobalISel: Fix lowering of G_CTLZ/G_CTTZ
Matt Arsenault [Fri, 7 Feb 2020 02:11:52 +0000 (21:11 -0500)]
GlobalISel: Fix lowering of G_CTLZ/G_CTTZ

The type passed to lower was invalid, so I'm not sure how this was
even working before. The source and destination type also do not have
to match, so make sure to use the right ones.

4 years agoRe-land "[Clang][Driver] Remove -M group options ..." and "[Clang] Avoid crashing...
Alexandre Ganea [Fri, 7 Feb 2020 14:35:51 +0000 (09:35 -0500)]
Re-land "[Clang][Driver] Remove -M group options ..." and "[Clang] Avoid crashing when generating crash diagnostics when '#pragma clang __debug ..."

This re-lands commits f41ec709d9d388dc43469e6ac7f51b6313f7e4af (https://reviews.llvm.org/D74076)
and commit 5fedc2b410853a6aef05e8edf19ebfc4e071e28f (https://reviews.llvm.org/D74070)

The previous build break was caused by '#pragma clang __debug llvm_unreachable' used in a non-assert build. Move it to a separate test in crash-report-with-asserts.c.

4 years ago[OPENMP50]Add parsing/sema for acq_rel clause.
Alexey Bataev [Thu, 6 Feb 2020 21:30:23 +0000 (16:30 -0500)]
[OPENMP50]Add parsing/sema for acq_rel clause.

Added basic support (representation + parsing/sema/(de)serialization)
for acq_rel clause in flush/atomic directives.

4 years ago[NFC][ARM] Update test
Sam Parker [Fri, 7 Feb 2020 14:19:34 +0000 (14:19 +0000)]
[NFC][ARM] Update test

4 years ago[mlir] Add NoSideEffect to Affine min max
OuHangKresnik [Fri, 7 Feb 2020 14:18:55 +0000 (15:18 +0100)]
[mlir] Add NoSideEffect to Affine min max

Add NoSideEffect to Affine min and max operations.

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

4 years agoRevert "[LLD][ELF][ARM] Do not substitute BL/BLX for non STT_FUNC symbols."
Nico Weber [Fri, 7 Feb 2020 13:38:12 +0000 (08:38 -0500)]
Revert "[LLD][ELF][ARM] Do not substitute BL/BLX for non STT_FUNC symbols."

There are still problems after the fix in
"[ELF][ARM] Fix regression of BL->BLX substitution after D73542"
so let's revert to get trunk back to green while we investigate.
See https://reviews.llvm.org/D73542

This reverts commit 5461fa2b1fcfcfcd8e28e3ac3383d2245d5d90bf.
This reverts commit 0b4a047bfbd11fe1f5abda8da0e2391c1918162a.

4 years ago[NFC][ARM] Modified test with update script
Sam Parker [Fri, 7 Feb 2020 13:31:45 +0000 (13:31 +0000)]
[NFC][ARM] Modified test with update script

4 years ago[gn build] Port 446268a2234
LLVM GN Syncbot [Fri, 7 Feb 2020 13:35:48 +0000 (13:35 +0000)]
[gn build] Port 446268a2234

4 years agoRecommit: "[llvm-exegesis] Improve error reporting in Target.cpp"
Miloš Stojanović [Thu, 6 Feb 2020 17:21:01 +0000 (18:21 +0100)]
Recommit: "[llvm-exegesis] Improve error reporting in Target.cpp"

Summary: Commit 141915963b6ab36ee4e577d1b27673fa4d05b409 was reverted in
abe01e17f648a97666d4fbed41f0861686a17972 because it broke builds testing
without libpfm. A preparatory commit <commit_sha1> was added to enable
this recommit.

Original commit message:

Followup to D74085.
Replace the use of `report_fatal_error()` with returning the error to
`llvm-exegesis.cpp` and handling it there.

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

4 years agoRecommit: "[llvm-exegesis] Improve error reporting"
Miloš Stojanović [Thu, 6 Feb 2020 16:18:42 +0000 (17:18 +0100)]
Recommit: "[llvm-exegesis] Improve error reporting"

Summary: Commit b3576f60ebc8f660afad8120a72473be47517573 was reverted in
abe01e17f648a97666d4fbed41f0861686a17972 because it broke builds testing
without libpfm. A preparatory commit <commit_sha1> was added to enable
this recommit.

Original commit message:

Fix inconsistencies in error reporting created by mixing
`report_fatal_error()` and `ExitOnErr()`, and add additional information
to the error message to make it more user friendly. Minimize the use
`report_fatal_error()` because it's meant for use in very rare cases and
it results in low information density of the error messages.

Summary of the new design:

 * For command line argument errors output `llvm-exegesis: <error_message>`,
   which is consistent with the error output format emitted by the backend
   which checks correctness of the command line arguments.
 * For other errors the format `llvm-exegesis error: <error_message>` is used.
 ** If the error occurred during file access `<error_message>` will have
    of two parts: `'<file_name>': <rest_of_the_error_message>`

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

4 years ago[llvm-exegesis] Add a custom error for clustering
Miloš Stojanović [Thu, 6 Feb 2020 16:08:05 +0000 (17:08 +0100)]
[llvm-exegesis] Add a custom error for clustering

All errors of type `Failure` are `StringError`s. In order for exit code
mapping to detect that specifically a clustering error has occurred it
needs to have a different type.

This patch also prepares D74085 where termination `report_fatal_error()`
will be replaced with emitting `StringError`s.

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

4 years ago[AMDGPU][MC][DOC] Updated AMD GPU assembler syntax description.
Dmitry Preobrazhensky [Fri, 7 Feb 2020 13:20:37 +0000 (16:20 +0300)]
[AMDGPU][MC][DOC] Updated AMD GPU assembler syntax description.

Summary of changes:
- updated description of gfx906 and gfx908;
- added description of gfx1011 and gfx1012 subtargets.

4 years agoRename prettyprinters test to llvm-support.
Christian Sigg [Fri, 31 Jan 2020 11:19:36 +0000 (12:19 +0100)]
Rename prettyprinters test to llvm-support.

Summary: Make room for mlir-support pretty printers that I would like to add next.

Reviewers: dblaikie

Reviewed By: dblaikie

Subscribers: merge_guards_bot, mgorny, rriddle, llvm-commits

Tags: #llvm

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

4 years ago[lldb] Improve error message when running static initializers in an expression fails
Raphael Isemann [Fri, 7 Feb 2020 12:24:56 +0000 (13:24 +0100)]
[lldb] Improve error message when running static initializers in an expression fails

4 years ago[AArch64] Predictably disassemble system registers with the same encoding
Momchil Velikov [Fri, 7 Feb 2020 11:38:46 +0000 (11:38 +0000)]
[AArch64] Predictably disassemble system registers with the same encoding

The registers TRCEXTINSELR and TRCEXTINSELR0 are distinct registers,
defined by separate extension specifications (ETM and ETE,
respectively), yet they use the same encoding in MSR/MRS.

When performing a system register lookup by encoding, we would
essentially return a random one, depending on the number, relative
position in the TableGen file, whether the TableGen records for system
registers are named or not, and, if they are named, depending on
record (not register!) name as well.

This patch works around the issue by explictly checking for the
TRCEXTINSELR/TRCEXTINSELR0 encoding and always returning TRCEXTINSELR.

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

4 years ago[OpenCL] Restrict addr space conversions in nested pointers
Anastasia Stulova [Thu, 6 Feb 2020 11:56:21 +0000 (11:56 +0000)]
[OpenCL] Restrict addr space conversions in nested pointers

Address space conversion changes pointer representation.
This commit disallows such conversions when they are not
legal i.e. for the nested pointers even with compatible
address spaces. Because the address space conversion in
the nested levels can't be generated to modify the pointers
correctly. The behavior implemented is as follows:

- Any implicit conversions of nested pointers with different
  address spaces is rejected.
- Any conversion of address spaces in nested pointers in safe
  casts (e.g. const_cast or static_cast) is rejected.
- Conversion in low level C-style or reinterpret_cast is accepted
  but with a warning (this aligns with OpenCL C behavior).

Fixes PR39674

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

4 years agoclang-cl: Parse new MSVC flags /Qspectre-load and /Qspectre-load-cf
Hans Wennborg [Fri, 7 Feb 2020 12:00:22 +0000 (13:00 +0100)]
clang-cl: Parse new MSVC flags /Qspectre-load and /Qspectre-load-cf

See https://github.com/MicrosoftDocs/cpp-docs/commit/2fdf0ba0bf8d3875c754776ca1084654135cb710

4 years ago[llvm-dwarfdump][Stats] Add the license header
Djordje Todorovic [Fri, 7 Feb 2020 11:37:29 +0000 (12:37 +0100)]
[llvm-dwarfdump][Stats] Add the license header

Add the License header into the Statistics.cpp.

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

4 years ago[ValueTracking] usub(a, b) cannot overflow if a >= b.
Florian Hahn [Fri, 7 Feb 2020 10:31:35 +0000 (10:31 +0000)]
[ValueTracking] usub(a, b) cannot overflow if a >= b.

If we know that a >= b (unsigned), usub.with.overflow(a, b) cannot
overflow. Similarly, if b > a, the same expression overflows.

Reviewers: nikic, RKSimon, lebedev.ri, spatel

Reviewed By: nikic, Gerolf

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

4 years agoFix docs and comments for max_tokens_total pragma
Hans Wennborg [Fri, 7 Feb 2020 10:32:24 +0000 (11:32 +0100)]
Fix docs and comments for max_tokens_total pragma

4 years agoRevert "Support -fstack-clash-protection for x86"
serge-sans-paille [Fri, 7 Feb 2020 10:35:14 +0000 (11:35 +0100)]
Revert "Support -fstack-clash-protection for x86"

This reverts commit 39f50da2a357a8f685b3540246c5d762734e035f.

The -fstack-clash-protection is being passed to the linker too, which
is not intended.

Reverting and fixing that in a later commit.

4 years ago[analyzer] Small StreamChecker refactoring (NFC).
Balázs Kéri [Fri, 7 Feb 2020 08:09:45 +0000 (09:09 +0100)]
[analyzer] Small StreamChecker refactoring (NFC).

Reviewers: Szelethus

Reviewed By: Szelethus

Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, donat.nagy, Charusso, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

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

4 years ago[NFC] Introduce an API for MemOp
Guillaume Chatelet [Tue, 4 Feb 2020 14:30:05 +0000 (15:30 +0100)]
[NFC] Introduce an API for MemOp

Summary: This patch introduces an API for MemOp in order to simplify and tighten the client code.

Reviewers: courbet

Subscribers: arsenm, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, jsji, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[InstCombine] Precommit usub.with.overflow test for D74066.
Florian Hahn [Wed, 5 Feb 2020 16:57:37 +0000 (16:57 +0000)]
[InstCombine] Precommit usub.with.overflow test for D74066.

4 years ago[ValueTracking] Update implied reasoning to accept expanded cmp (NFC).
Florian Hahn [Fri, 7 Feb 2020 10:08:40 +0000 (10:08 +0000)]
[ValueTracking] Update implied reasoning to accept expanded cmp (NFC).

This patch adds versions of isImpliedCondition and
isImpliedByDomCondition that take a predicate, LHS and RHS operands as
instead of a Value representing the condition.

This allows using those functions to check conditions without having a
concrete ICmp instruction.

Reviewers: nikic, RKSimon, lebedev.ri, spatel

Reviewed By: nikic

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

4 years ago[lldb] Remove all 'clean' targets from test Makefiles
Raphael Isemann [Fri, 7 Feb 2020 10:24:38 +0000 (11:24 +0100)]
[lldb] Remove all 'clean' targets from test Makefiles

Summary:
To my knowledge we don't actually use or need these rules. And if we need them then
there is probably a better way to implement this than having all these random regexes.

Reviewers: labath, JDevlieghere

Reviewed By: labath, JDevlieghere

Subscribers: jingham, lldb-commits

Tags: #lldb

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

4 years ago[ARM] Follow AACPS for preserving number of loads/stores of volatile bit-fields
Diogo Sampaio [Fri, 7 Feb 2020 10:03:59 +0000 (10:03 +0000)]
[ARM] Follow AACPS for preserving number of loads/stores of volatile bit-fields

Summary:
Following the AAPCS, every store to a volatile bit-field requires to generate one load of that field, even if all the bits are going to be replaced.
This patch allows the user to opt-in in following such rule, whenever the a.

AAPCS Release 2019Q1.1 (https://static.docs.arm.com/ihi0042/g/aapcs32.pdf)
section 8.1 Data Types, page 35, paragraph: Volatile bit-fields – preserving number and width of container accesses

```
When a volatile bit-field is written, and its container does not overlap with any non-bit-field member, its
container must be read exactly once and written exactly once using the access width appropriate to the
type of the container. The two accesses are not atomic.

```

Reviewers: lebedev.ri, ostannard, jfb, eli.friedman

Reviewed By: jfb

Subscribers: rsmith, rjmccall, dexonsmith, kristof.beyls, jfb, cfe-commits

Tags: #clang

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

4 years ago[ARM][ASMParser] Refuse equal RdHi/RdLo for s/umlal, smlsl, s/umull, umaal
Pierre van Houtryve [Wed, 5 Feb 2020 16:31:03 +0000 (16:31 +0000)]
[ARM][ASMParser] Refuse equal RdHi/RdLo for s/umlal, smlsl, s/umull, umaal

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

4 years agoSupport -fstack-clash-protection for x86
serge_sans_paille [Mon, 9 Sep 2019 14:59:34 +0000 (16:59 +0200)]
Support -fstack-clash-protection for x86

Implement protection against the stack clash attack [0] through inline stack
probing.

Probe stack allocation every PAGE_SIZE during frame lowering or dynamic
allocation to make sure the page guard, if any, is touched when touching the
stack, in a similar manner to GCC[1].

This extends the existing `probe-stack' mechanism with a special value `inline-asm'.
Technically the former uses function call before stack allocation while this
patch provides inlined stack probes and chunk allocation.

Only implemented for x86.

[0] https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt
[1] https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00556.html

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

4 years ago[Target][AArch64] Remove non-existing system registers ICH_VSEIR_EL2 & ICC_SEIEN_EL1...
Pierre van Houtryve [Wed, 5 Feb 2020 12:27:46 +0000 (12:27 +0000)]
[Target][AArch64] Remove non-existing system registers ICH_VSEIR_EL2 & ICC_SEIEN_EL1 from AArch64 backend

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

4 years agoFix the MC/WebAssembly/debug-info.ll test after 84e5760
Hans Wennborg [Fri, 7 Feb 2020 08:54:05 +0000 (09:54 +0100)]
Fix the MC/WebAssembly/debug-info.ll test after 84e5760

4 years ago[lldb] removed no longer needed CMakeDependentOption
Konrad Kleine [Fri, 7 Feb 2020 08:22:29 +0000 (09:22 +0100)]
[lldb] removed no longer needed CMakeDependentOption

Summary:
In D66791 I've introduced this [[ https://cmake.org/cmake/help/latest/module/CMakeDependentOption.html | `CMakeDependentOption` ]] but in
D71306 @JDevlieghere has changed the way optional dependencies
are handled in LLDB. Today there's no occurence of
`cmake_dependent_option` inside the lldb source tree.

That's why this include can be removed.

Reviewers: JDevlieghere, labath

Reviewed By: labath

Subscribers: labath, mgorny, lldb-commits, JDevlieghere

Tags: #lldb

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

4 years ago[DebugInfo]: Reorderd the emission of debug_str section.
Sourabh Singh Tomar [Fri, 7 Feb 2020 04:48:54 +0000 (10:18 +0530)]
[DebugInfo]: Reorderd the emission of debug_str section.

Summary:
This patch reorders the emission of debug_str section, so that
string can come after macros.
This is necessary for macro forms like DW_MACRO_define_strp,
which emits macro as a string in debug_str section.

4 years ago[X86] Turn vXi1 any_extends into sign_extends in PreprocessISelDAG and remove some...
Craig Topper [Fri, 7 Feb 2020 05:31:44 +0000 (21:31 -0800)]
[X86] Turn vXi1 any_extends into sign_extends in PreprocessISelDAG and remove some isel patterns.

Similar to what we do for other vector any_extends, but instead
of zero_extend we need to use sign_extend.

4 years ago[X86] Use SelectionDAG::getAllOnesConstant to simplify some code. NFC
Craig Topper [Fri, 7 Feb 2020 03:29:03 +0000 (19:29 -0800)]
[X86] Use SelectionDAG::getAllOnesConstant to simplify some code. NFC

4 years agoExcept, get the TARGET_OS_OSX check correct.
Jason Molenda [Fri, 7 Feb 2020 04:28:40 +0000 (20:28 -0800)]
Except, get the TARGET_OS_OSX check correct.

4 years agoFix my use of the TARGET_OS_OSX TargetConditional.
Jason Molenda [Fri, 7 Feb 2020 04:28:06 +0000 (20:28 -0800)]
Fix my use of the TARGET_OS_OSX TargetConditional.

4 years agoClarify how llvm-mca detects att vs intel syntax.
Justin Lebar [Wed, 8 Jan 2020 05:16:36 +0000 (21:16 -0800)]
Clarify how llvm-mca detects att vs intel syntax.

Reviewers: andreadb

Subscribers: tschuett, gbedwell, llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Fix non-pow-2 add/sub/mul for 16-bit insts
Matt Arsenault [Fri, 7 Feb 2020 01:33:47 +0000 (20:33 -0500)]
AMDGPU/GlobalISel: Fix non-pow-2 add/sub/mul for 16-bit insts

These wouldn't legalize between 16-bits and 32-bits on targets with
16-bit instructions.

4 years agoFix test after test changes added in da3dc00 caused the test to break
Douglas Yung [Fri, 7 Feb 2020 02:17:04 +0000 (18:17 -0800)]
Fix test after test changes added in da3dc00 caused the test to break
on platforms that default to an older C standard (like the PS4).

This should fix the test failure on the PS4 bots.

4 years ago[mlir][AsmPrinter] Fix edge case when printing floating point values.
River Riddle [Fri, 7 Feb 2020 02:05:32 +0000 (18:05 -0800)]
[mlir][AsmPrinter] Fix edge case when printing floating point values.

Summary: In some edge cases the default APFloat printer will generate something that we can't parse back in. In these cases, fallback to using hex instead.

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

4 years agoRevert "[Clang][Driver] Remove -M group options ..." and "[Clang] Avoid crashing...
Jordan Rupprecht [Fri, 7 Feb 2020 01:48:06 +0000 (17:48 -0800)]
Revert "[Clang][Driver] Remove -M group options ..." and "[Clang] Avoid crashing when generating crash diagnostics when '#pragma clang __debug ..."

This reverts commits f41ec709d9d388dc43469e6ac7f51b6313f7e4af and 5fedc2b410853a6aef05e8edf19ebfc4e071e28f. On some buildbots, Clang :: Driver/crash-report.c is broken with:

```
Command Output (stderr):
--
/home/buildslave/ps4-buildslave1/clang-with-thin-lto-ubuntu/llvm-project/clang/test/Driver/crash-report.c:48:11: error: CHECK: expected string not found in input
// CHECK: Preprocessed source(s) and associated run script(s) are located at:
          ^
<stdin>:1:1: note: scanning from here
/home/buildslave/ps4-buildslave1/clang-with-thin-lto-ubuntu/llvm-project/clang/test/Driver/crash-report.c:50:1: error: unknown type name 'BAZ'
```

Example: http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/21321/steps/test-stage1-compiler/logs/stdio

4 years ago[mlir][DialectConversion] Change erroneous return to a continue
River Riddle [Fri, 7 Feb 2020 01:55:14 +0000 (17:55 -0800)]
[mlir][DialectConversion] Change erroneous return to a continue

This fixes a nasty bug where the loop would return prematurely when
notifying the argument converter that an operation was removed.

4 years agoUpdate hwasan docs to cover outlined checks and globals.
Peter Collingbourne [Thu, 6 Feb 2020 19:18:23 +0000 (11:18 -0800)]
Update hwasan docs to cover outlined checks and globals.

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

4 years ago[AMDGPU] Cleanup assumptions about generated subregs
Stanislav Mekhanoshin [Thu, 6 Feb 2020 22:47:10 +0000 (14:47 -0800)]
[AMDGPU] Cleanup assumptions about generated subregs

We are using countPopulation on a LaneBitmask to determine
a number of registers it covers. This is the assumption which
does not necessarily need to be true. It is not changed but
factored into a single call SIRegisterInfo::getNumCoveredRegs().

Some other places are cleaned up with respect to assumptions
about subreg indexes values and tablegen behavior.

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

4 years agoRevert "AMDGPU: Limit the search in finding the instruction pattern for v_swap genera...
Stanislav Mekhanoshin [Fri, 7 Feb 2020 01:38:55 +0000 (17:38 -0800)]
Revert "AMDGPU: Limit the search in finding the instruction pattern for v_swap generation."

This reverts commit 982780648124243131c6617c0d97fc1cb02d4e75.

4 years agoAdd final description of why attach failed with poss error string.
Jason Molenda [Fri, 7 Feb 2020 01:27:56 +0000 (17:27 -0800)]
Add final description of why attach failed with poss error string.

4 years agoRecommit "[FPEnv][X86] Platform-specific builtin constrained FP enablement"
Craig Topper [Fri, 7 Feb 2020 00:23:54 +0000 (16:23 -0800)]
Recommit "[FPEnv][X86] Platform-specific builtin constrained FP enablement"

With REQUIRES: x86-register-target added to the tests.

Also remove some unneeded FIXMEs

But add a FIXME for bad IR generation for FMADDSUB/FMSUBADD with
constrained FP.

Original patch by Kevin P. Neal

4 years agoAMDGPU: Limit the search in finding the instruction pattern for v_swap generation.
Changpeng Fang [Fri, 7 Feb 2020 00:40:21 +0000 (16:40 -0800)]
AMDGPU: Limit the search in finding the instruction pattern for v_swap generation.

Summary:
  Current implementation of matchSwap in SIShrinkInstructions searches the entire
use_nodbg_operands set to find the possible pattern to generate v_swap instruction.
This approach will lead to a O(N^3) in compile time for SIShrinkInstructions.

But in reality, the matching pattern only exists within nearby instructions in the
same basic block. This work limits the search to a maximum of 16 instructions, and has
a linear compile time comsumption.

Reviewers:
  rampitec, arsenm

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

4 years agoC++ DR2026: static storage duration variables are not zeroed before
Richard Smith [Fri, 7 Feb 2020 00:19:37 +0000 (16:19 -0800)]
C++ DR2026: static storage duration variables are not zeroed before
constant initialization.

Removing this zeroing regressed our code generation in a few cases, also
fixed here. We now compute whether a variable has constant destruction
even if it doesn't have a constant initializer, by trying to destroy a
default-initialized value, and skip emitting a trivial default
constructor for a variable even if it has non-trivial (but perhaps
constant) destruction.

4 years agoRevert "[AArch64][GlobalISel] Emit TBNZ with G_BRCOND where the condition is SLT"
Jessica Paquette [Fri, 7 Feb 2020 00:30:13 +0000 (16:30 -0800)]
Revert "[AArch64][GlobalISel] Emit TBNZ with G_BRCOND where the condition is SLT"

This reverts commit a3738414072900ace9cbbe209d0195a3443d1d54.

It looks like this broke set_shadow_test.c, so I'm reverting until I can fix it.

I also reverted the SGT change because it's probably also broken.

4 years agoRevert "[AArch64][GlobalISel] Emit TBZ for SGT cond branches against -1"
Jessica Paquette [Fri, 7 Feb 2020 00:29:00 +0000 (16:29 -0800)]
Revert "[AArch64][GlobalISel] Emit TBZ for SGT cond branches against -1"

This reverts commit d78cefb1601070cb028b61bbc1bd6f25a9c1837c.

One of this and the SLT change broke set_shadow_test.c, so I'm reverting until
I can fix it.

4 years ago[Support] When using SEH, create a impl instance for CrashRecoveryContext. NFCI.
Alexandre Ganea [Fri, 7 Feb 2020 00:23:27 +0000 (19:23 -0500)]
[Support] When using SEH, create a impl instance for CrashRecoveryContext. NFCI.

Previously, the SEH codepath in CrashRecoveryContext didn't create a CrashRecoveryContextImpl. The other codepaths (VEH and Unix) were creating it.

When running with -fintegrated-cc1, this is needed to handle exit() as a jump to CrashRecoveryContext's exception filter, through a call to RaiseException. In that situation, we need a user-defined exception code, which is later interpreted as an exit() by the exception filter. This in turn needs to set RetCode accordingly, *inside* the exception filter, and *before* calling HandleCrash().

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

4 years agoRevert "[FPEnv][X86] Platform-specific builtin constrained FP enablement"
Kevin P. Neal [Thu, 6 Feb 2020 23:58:24 +0000 (18:58 -0500)]
Revert "[FPEnv][X86] Platform-specific builtin constrained FP enablement"

This reverts commit 208470dd5d0a46bc3c24b66489b687eda4954262.

Tests fail:
error: unable to create target: 'No available targets are compatible with triple "x86_64-apple-darwin"'

This happens on clang-hexagon-elf, clang-cmake-armv7-quick, and
clang-cmake-armv7-quick bots.

If anyone has any suggestions on why then I'm all ears.

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

Revert "[FPEnv][X86] Speculative fix for failures introduced by eda495426."

This reverts commit 80e17e5fcc09dc5baa940022e6988fcb08c5d92d.

The speculative fix didn't solve the test failures on Hexagon, ARMv6, and
MSVC AArch64.

4 years agoDetect attach fail in debugserver due to non-interactive
Jason Molenda [Fri, 7 Feb 2020 00:15:03 +0000 (16:15 -0800)]
Detect attach fail in debugserver due to non-interactive
debug session.

4 years ago[CMake] Rename EXCLUDE_FROM_ALL and make it an argument to add_lit_testsuite
Jonas Devlieghere [Thu, 6 Feb 2020 23:26:10 +0000 (15:26 -0800)]
[CMake] Rename EXCLUDE_FROM_ALL and make it an argument to add_lit_testsuite

EXCLUDE_FROM_ALL means something else for add_lit_testsuite as it does
for something like add_executable. Distinguish between the two by
renaming the variable and making it an argument to add_lit_testsuite.

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

4 years agoRevert "Reland "[AArch64] Fix data race on RegisterBank initialization.""
Huihui Zhang [Thu, 6 Feb 2020 23:27:10 +0000 (15:27 -0800)]
Revert "Reland "[AArch64] Fix data race on RegisterBank initialization.""

This reverts commit 8e1ca948ccfdf0ead90adf63d6127f56d9d46586.

New failing at
 http://lab.llvm.org:8011/builders/clang-armv7-linux-build-cache/builds/25929

I did reproduce and pass the previous failure at
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/46803/steps/annotate/logs/stdio

4 years agoReland "[AArch64] Fix data race on RegisterBank initialization."
Huihui Zhang [Thu, 6 Feb 2020 23:01:57 +0000 (15:01 -0800)]
Reland "[AArch64] Fix data race on RegisterBank initialization."

Update lambda function argument "[this](const auto &TRI)" with
[this](const TargetRegisterInfo &TRI).

Looks like a bug in g++-6, there is no issue compiling using g++-9.

4 years agoFix MSAN failure on Function destruction
Evgenii Stepanov [Thu, 6 Feb 2020 23:07:20 +0000 (15:07 -0800)]
Fix MSAN failure on Function destruction

Summary:
When Function is destroyed, GlobalValue base class is destroyed, then
Value destructor would call use_empty, which ultimately attempts to
downcast 'this' to GlobalValue. This is UB, and is caught my MSAN as
accessing uninitialized memory.

Call materialized_use_empty, which doesn't call
assertModuleIsMaterializedImpl().

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

Patch by Antonio Maiorano.

4 years ago[GlobalISel] Use G_ZEXTLOAD instead of an anyextending load for non-pow-2 legalization.
Amara Emerson [Thu, 6 Feb 2020 22:35:15 +0000 (14:35 -0800)]
[GlobalISel] Use G_ZEXTLOAD instead of an anyextending load for non-pow-2 legalization.

Fixes PR43288

4 years ago[lldb/Reproducers] Add missing strings for redirect macro
Jonas Devlieghere [Thu, 6 Feb 2020 20:36:07 +0000 (12:36 -0800)]
[lldb/Reproducers] Add missing strings for redirect macro

4 years ago[lldb/Reproducers] Refactor GetStopReasonExtendedBacktraces (NFC)
Jonas Devlieghere [Thu, 6 Feb 2020 19:08:32 +0000 (11:08 -0800)]
[lldb/Reproducers] Refactor GetStopReasonExtendedBacktraces (NFC)

Refactore GetStopReasonExtendedBacktraces so that the reproducer macro
is passed an instrumented copy constructor rather than the constructor
taking a ThreadCollectionSP, which is not instrumented.

4 years agoRevert "[CMake] Link against ZLIB::ZLIB"
Petr Hosek [Thu, 6 Feb 2020 21:55:28 +0000 (13:55 -0800)]
Revert "[CMake] Link against ZLIB::ZLIB"

This reverts commit 00b3d49d3a86490f0596100b23cd2c3a49334c75 as this
broke the llvm-config output.

4 years ago[compiler-rt] clang-format FreeBSD-specific sanitizer sources
Dimitry Andric [Thu, 6 Feb 2020 21:46:35 +0000 (22:46 +0100)]
[compiler-rt] clang-format FreeBSD-specific sanitizer sources

Formatting only, no functional change intended.

4 years ago[X86] Add the rest of the tests that were supposed to go with 90c31b0f428fe911255277a...
Craig Topper [Thu, 6 Feb 2020 21:33:59 +0000 (13:33 -0800)]
[X86] Add the rest of the tests that were supposed to go with 90c31b0f428fe911255277a60782ea9114700475

I forgot to git add them when applying the patch from phab.

4 years ago[X86] Use MVT::i8 instead of MVT::i64 for shift amount in BuildSDIVPow2
Craig Topper [Thu, 6 Feb 2020 21:10:32 +0000 (13:10 -0800)]
[X86] Use MVT::i8 instead of MVT::i64 for shift amount in BuildSDIVPow2

X86 uses i8 for shift amounts. This code can fail on a 32-bit target
if it runs after type legalization.

This code was copied from AArch64 and modified for X86, but the
shift amount wasn't changed to the correct type for X86.

Fixes PR44812

4 years ago[Concepts] Fix incorrect check when instantiating abbreviated template type-constraints
Saar Raz [Thu, 6 Feb 2020 21:19:18 +0000 (23:19 +0200)]
[Concepts] Fix incorrect check when instantiating abbreviated template type-constraints

We would incorrectly check whether the type-constraint had already been initialized, causing us
to ignore the invented template type constraints entirely.

Also, TemplateParameterList would store incorrect information about invented type parameters
when it observed them before their type-constraint was initialized, so we recreate it after
initializing the function type of an abbreviated template.

4 years ago[Clang][Driver] Remove -M group options before generating crash diagnostics
Alexandre Ganea [Thu, 6 Feb 2020 21:23:25 +0000 (16:23 -0500)]
[Clang][Driver] Remove -M group options before generating crash diagnostics

Previously, when using '-MF file.d' on the command line, 'file.d' would not be deleted after a compiler crash.

The code path in Compilation::initCompilationForDiagnostics()  that was modifying 'TranslatedArgs' had no effect, because 'TCArgs' was already created after the crash.

This was covered by clang/test/Driver/output-file-cleanup.c, the test was succeeding by fluke because Driver::generateCompilationDiagnostics() would fail to launch the subsequent clang -E (see D74070 for a fix for this). So the test was only covering Driver.cpp, C.CleanupFileMap().
After this patch, both cleanup and removal of -MF are exercised.

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

4 years ago[Clang] Avoid crashing when generating crash diagnostics when '#pragma clang __debug...
Alexandre Ganea [Thu, 6 Feb 2020 20:47:42 +0000 (15:47 -0500)]
[Clang] Avoid crashing when generating crash diagnostics when '#pragma clang __debug [assert|crash|parser_crash|llvm_fatal_error|llvm_unreachable|overflow_stack]' are used

Previously, when the above '#pragma clang __debug' were used, Driver::generateCompilationDiagnostics() wouldn't work as expected.
The 'clang -E' process created for diagnostics would crash, because it would reach again the intended crash in Pragma.cpp, PragmaDebugHandler::HandlePragma() while preprocessing.

When generating crash diagnostics, we now disable the intended crashing behavior with a new cc1 flag -disable-pragma-debug-crash.

Notes:
- #pragma clang __debug llvm_report_fatal isn't currently tested by crash-report.c, because it needs exit() to be handled differently in -fintegrated-cc1 mode. See https://reviews.llvm.org/D73742 for an upcoming fix.
- This is also needed to further validate that -MF is removed from the 'clang -E ' crash diagnostic cmd-line (currently not the case). See https://reviews.llvm.org/D74076 for an upcoming fix.

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

4 years ago[lldb\utils] Place lldb-repro in a per-configuration directory to support multi-confi...
Stella Stamenova [Thu, 6 Feb 2020 20:31:57 +0000 (12:31 -0800)]
[lldb\utils] Place lldb-repro in a per-configuration directory to support multi-configuration generators

Summary: Currently, lldb-repro is placed in the wrong location for multi-configuration generators. For example, in the case of VS, it is placed in a directory $(Configuration) instead of in each of Debug, Release, etc.

Reviewers: JDevlieghere

Reviewed By: JDevlieghere

Subscribers: mgorny, lldb-commits, asmith

Tags: #lldb

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

4 years ago[FPEnv][X86] Speculative fix for failures introduced by eda495426.
Kevin P. Neal [Thu, 6 Feb 2020 20:24:02 +0000 (15:24 -0500)]
[FPEnv][X86] Speculative fix for failures introduced by eda495426.

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

4 years ago[Clang] Remove unused #pragma clang __debug handle_crash
Alexandre Ganea [Thu, 6 Feb 2020 20:25:26 +0000 (15:25 -0500)]
[Clang] Remove unused #pragma clang __debug handle_crash

As discussed in D70568, remove this because it isn't used anywhere, and I think it's better to go through real crashes for testing (#pragma clang __debug crash).
Also remove the support function llvm::CrashRecoveryContext::HandleCrash() which was added at the same time by @ddunbar.

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

4 years agoPR44684: Look through parens and similar constructs when determining
Richard Smith [Thu, 6 Feb 2020 03:01:33 +0000 (19:01 -0800)]
PR44684: Look through parens and similar constructs when determining
whether a call is to a builtin.

We already had a general mechanism to do this but for some reason
weren't using it. In passing, check for the other unary operators that
can intervene in a reasonably-direct function call (we already handled
'&' but missed '*' and '+').

This reverts commit aaae6b1b617378362462c1685e754813ed82b394,
reinstating af80b8ccc5772c14920d4554b7ca7e15f2fad1c4, with a fix to
clang-tidy.

4 years ago[clang][driver] Clean up unnecessary reference to TC. NFC.
Michael Liao [Thu, 6 Feb 2020 14:52:01 +0000 (09:52 -0500)]
[clang][driver] Clean up unnecessary reference to TC. NFC.

4 years ago[AArch64][GlobalISel] Emit TBZ for SGT cond branches against -1
Jessica Paquette [Thu, 6 Feb 2020 17:56:09 +0000 (09:56 -0800)]
[AArch64][GlobalISel] Emit TBZ for SGT cond branches against -1

When we have a G_BRCOND fed by a sgt compare against -1, we can just emit a TBZ.

This is similar to the code in `AArch64TargetLowering::LowerBR_CC`.

Also while we're here, properly scope the commutative constant check in
`selectCompareBranch`, since it sometimes would call
`getConstantVRegValWithLookThrough` twice.

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

4 years agoAMDGPU: Add compile time hack for hasCFUser
Matt Arsenault [Thu, 6 Feb 2020 17:10:34 +0000 (12:10 -0500)]
AMDGPU: Add compile time hack for hasCFUser

Assume the control flow intrinsic results are never casted, and early
exit based on the type.

4 years ago[GlobalISel] Legalize more G_FP(EXT|TRUNC) libcalls.
Konstantin Schwarz [Thu, 6 Feb 2020 18:01:57 +0000 (10:01 -0800)]
[GlobalISel] Legalize more G_FP(EXT|TRUNC) libcalls.

This adds a new helper function for retrieving the
floating point type corresponding to the specified
bit-width.

4 years ago[MC][ELF] Rename MC related "Associated" to "LinkedToSym"
Fangrui Song [Wed, 5 Feb 2020 19:24:15 +0000 (11:24 -0800)]
[MC][ELF] Rename MC related "Associated" to "LinkedToSym"

"linked-to section" is used by the ELF spec. By analogy, "linked-to
symbol" is a good name for the signature symbol.  The word "linked-to"
implies a directed edge and makes it clear its relation with "sh_link",
while one can argue that "associated" means an undirected edge.

Also, combine tests and add precise SMLoc to improve diagnostics.

Reviewed By: eugenis, grimar, jhenderson

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

4 years ago[FPEnv][X86] Platform-specific builtin constrained FP enablement
Kevin P. Neal [Thu, 6 Feb 2020 19:14:48 +0000 (14:14 -0500)]
[FPEnv][X86] Platform-specific builtin constrained FP enablement

When constrained floating point is enabled the X86-specific builtins don't
use constrained intrinsics in some cases. Fix that.

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

4 years ago[lldb] [NFC] Refactor GetDWARFDeclContext to return DWARFDeclContext
Jan Kratochvil [Thu, 6 Feb 2020 19:04:23 +0000 (20:04 +0100)]
[lldb] [NFC] Refactor GetDWARFDeclContext to return DWARFDeclContext

Suggested by Pavel Labath.

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

4 years ago[lldb] Explicitly qualify calls to std::static_pointer_cast
Pavel Labath [Thu, 6 Feb 2020 18:53:34 +0000 (10:53 -0800)]
[lldb] Explicitly qualify calls to std::static_pointer_cast

Due to a c++ quirk, these are found through ADL only when a function with that
name is found through regular lookup. We have one such function in SharingPtr.h,
but I am trying to remove it.

4 years ago[lldb/Target] Remove extra semicolon in AssertFrameRecognizer (NFC)
Med Ismail Bennani [Thu, 6 Feb 2020 18:46:19 +0000 (19:46 +0100)]
[lldb/Target] Remove extra semicolon in AssertFrameRecognizer (NFC)

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
4 years ago[X86] Custom isel floating point X86ISD::CMP on pre-CMOV targets. Eliminate ConvertCm...
Craig Topper [Thu, 6 Feb 2020 18:42:11 +0000 (10:42 -0800)]
[X86] Custom isel floating point X86ISD::CMP on pre-CMOV targets. Eliminate ConvertCmpIfNecessary

If we don't have cmov, X87 compares write to FPSW and we need to
move the bits to EFLAGS to use as JCC/SETCC/CMOV conditions.

Previously this was done by calling ConvertCmpIfNecessary in
multiple places which would emit the extra code for the FNSTSW,
a shift, a truncate, and a SAHF instructions. Isel would then
select trunc+X86ISD::CMP to a FUCOM instruction that produces FPSW.

This patch centralizes all of the handling into a single custom
isel handler. This allows us to remove ConvertCmpIfNecessary and
a couple target specific ISD opcodes.

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

4 years ago[GWP-ASan] Use weak abort message definition.
Mitch Phillips [Thu, 6 Feb 2020 18:35:42 +0000 (10:35 -0800)]
[GWP-ASan] Use weak abort message definition.

Summary:
New shard out of the Check() function for GWP-ASan uses
android_set_abort_message. This is happily present on bionic Android,
but not Android for glibc host x86. Fix up to use the weak definition
always, so we don't have to worry.

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: #sanitizers, llvm-commits, pcc, cferris

Tags: #sanitizers, #llvm

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

4 years ago[PGO][PGSO] Enable profile guided size optimization for non-cold code under instrumen...
Hiroshi Yamauchi [Wed, 5 Feb 2020 18:02:12 +0000 (10:02 -0800)]
[PGO][PGSO] Enable profile guided size optimization for non-cold code under instrumentation PGO.

Summary:
This enables it for large working set size cases only.

This does not enable it under sample PGO.

Reviewers: davidxl

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[lldb/tests] Correctly configure the lldb dotest arguments
Stella Stamenova [Thu, 6 Feb 2020 18:27:10 +0000 (10:27 -0800)]
[lldb/tests] Correctly configure the lldb dotest arguments

Summary:
When the generator used for CMake is a multi-configuration generator (such as VS), the arguments passed to dotest are not currently configured correctly. There are a couple of issues:
1) The per-configuration files are all generated for the same configuration since the for loop overwrites the properties
2) Not all of the parameters are configured in the lit cfg, so they end up with %(build_mode)s as configuration and they point to non-existent paths

Reviewers: JDevlieghere

Reviewed By: JDevlieghere

Subscribers: mgorny, lldb-commits, asmith

Tags: #lldb

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

4 years ago[ubsan] Omit return value check when return block is unreachable
Vedant Kumar [Thu, 6 Feb 2020 18:17:36 +0000 (10:17 -0800)]
[ubsan] Omit return value check when return block is unreachable

If the return block is unreachable, clang removes it in
CodeGenFunction::FinishFunction(). This removal can leave dangling
references to values defined in the return block if the return block has
successors, which it /would/ if UBSan's return value check is emitted.

In this case, as the UBSan check wouldn't be reachable, it's better to
simply not emit it.

rdar://59196131

4 years ago[X86] Remove SETB_C8r/SETB_C16r pseudo instructions. Use SETB_C32r and EXTRACT_SUBREG...
Craig Topper [Thu, 6 Feb 2020 17:42:01 +0000 (09:42 -0800)]
[X86] Remove SETB_C8r/SETB_C16r pseudo instructions. Use SETB_C32r and EXTRACT_SUBREG instead.

Only 32 and 64 bit SBB are dependency breaking instructons on some
CPUs. The 8 and 16 bit forms have to preserve upper bits of the GPR.

This patch removes the smaller forms and selects the wider form
instead. I had to do this with custom code as the tblgen generated
code glued the eflags copytoreg to the extract_subreg instead of
to the SETB pseudo.

Longer term I think we can remove X86ISD::SETCC_CARRY and use
(X86ISD::SBB zero, zero). We'll want to keep the pseudo and select
(X86ISD::SBB zero, zero) to either a MOV32r0+SBB for targets where
there is no dependency break and SETB_C32/SETB_C64 for targets
that have a dependency break. May want some way to avoid the MOV32r0
if the instruction that produced the carry flag happened to def a
register that we can use for the dependency.

I think the flag copy lowering should be using NEG instead of SUB to
handle SETB. That would avoid the MOV32r0 there. Or maybe it should
use a ADC with -1 to recreate the carry flag and keep the SETB?
That would avoid a MOVZX on the input of the SUB.

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

4 years ago[GWP-ASan] Fix PRNG to use IE TLS.
Mitch Phillips [Thu, 6 Feb 2020 18:07:08 +0000 (10:07 -0800)]
[GWP-ASan] Fix PRNG to use IE TLS.

Summary:
GWP-ASan's PRNG didn't use Initial-Exec TLS. Fix that to ensure that we don't
have infinite recursion, and also that we don't allocate a DTV on Android when
GWP-ASan is touched.

Test coverage ensuring that the sample counter is UINT32_MAX for an
uninitialised GWP-ASan is provided by gwp_asan/tests/late_init.cpp.

Reviewers: pcc, cferris

Reviewed By: pcc

Subscribers: #sanitizers, llvm-commits, rprichard, eugenis

Tags: #sanitizers, #llvm

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

4 years ago[lldb] Remove reset(nullptr_t) overload from SharingPtr
Pavel Labath [Thu, 6 Feb 2020 18:06:09 +0000 (10:06 -0800)]
[lldb] Remove reset(nullptr_t) overload from SharingPtr

std::shared_ptr has no such method. This makes the two more similar.

4 years agoAMDGPU/GlobalISel: Avoid handling registers twice in waterfall loops
Matt Arsenault [Sat, 1 Feb 2020 16:29:41 +0000 (11:29 -0500)]
AMDGPU/GlobalISel: Avoid handling registers twice in waterfall loops

When multiple instructions are moved into a waterfall loop, it's
possible some of them re-use the same operands. Avoid creating
multiple sequences of readfirstlanes for them. None of the current
uses will hit this, but will be used in a future patch.