platform/upstream/llvm.git
4 years ago[Support][Error] Unfriend FileError. It is not special.
Lang Hames [Wed, 20 Nov 2019 23:04:06 +0000 (15:04 -0800)]
[Support][Error] Unfriend FileError. It is not special.

FileError doesn't need direct access to Error's internals as it can access the
payload via handleErrors.

(ErrorList remains special: it is not possible to write a handler for it, due
to the special auto-unpacking treatment that it receives from handleErrors.)

4 years ago[AArch64] Add the pipeline model for Exynos M5
Evandro Menezes [Mon, 23 Sep 2019 17:59:25 +0000 (12:59 -0500)]
[AArch64] Add the pipeline model for Exynos M5

Add the scheduling and cost models for Exynos M5.

4 years ago[Reproducer] Limit signals to macro define sin <csignal>
Jonas Devlieghere [Wed, 20 Nov 2019 22:11:00 +0000 (14:11 -0800)]
[Reproducer] Limit signals to macro define sin <csignal>

SIGBUS is not part of the signal macros defined in the header <csignal>.

4 years agoHandle the case where the 'g' packet doesn't get all regs.
Jason Molenda [Wed, 20 Nov 2019 22:13:39 +0000 (14:13 -0800)]
Handle the case where the 'g' packet doesn't get all regs.
lldb would silently accept a response to the 'g' packet
(read all registers) which was too large; this handles the
case where it is too small.

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

<rdar://problem/34916465>

4 years agoCherry-pick gtest fix for asan tests.
Evgenii Stepanov [Fri, 15 Nov 2019 19:30:14 +0000 (11:30 -0800)]
Cherry-pick gtest fix for asan tests.

Summary:
https://github.com/google/googletest/commit/681454dae48f109abf68c424c9d2e6db9a092238

Clone+exec death test allocates a single page of stack to run chdir + exec on.
This is not enough when gtest is built with ASan and run on particular
hardware.

With ASan on x86_64, ExecDeathTestChildMain has frame size of 1728 bytes.

Call to chdir() in ExecDeathTestChildMain ends up in
_dl_runtime_resolve_xsavec, which attempts to save register state on the stack;
according to cpuid(0xd) XSAVE register save area size is 2568 on my machine.

This results in something like this in all death tests:
  Result: died but not with expected error.
  ...
  [  DEATH   ] AddressSanitizer:DEADLYSIGNAL
  [  DEATH   ] =================================================================
  [  DEATH   ] ==178637==ERROR: AddressSanitizer: stack-overflow on address ...

PiperOrigin-RevId: 278709790

Reviewers: pcc

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[AMDGPU][SILoadStoreOptimizer] Merge TBUFFER loads/stores
Piotr Sobczak [Wed, 20 Nov 2019 21:30:02 +0000 (22:30 +0100)]
[AMDGPU][SILoadStoreOptimizer] Merge TBUFFER loads/stores

Summary: Extend SILoadStoreOptimizer to merge tbuffer loads and stores.

Reviewers: nhaehnle

Reviewed By: nhaehnle

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

Tags: #llvm

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

4 years ago[Driver] Fix missing space in lldb --help output.
Jonas Devlieghere [Wed, 20 Nov 2019 21:48:58 +0000 (13:48 -0800)]
[Driver] Fix missing space in lldb --help output.

4 years ago[Docs] Fix Sphinx warning (treated as error)
Jonas Devlieghere [Wed, 20 Nov 2019 21:46:37 +0000 (13:46 -0800)]
[Docs] Fix Sphinx warning (treated as error)

Fixes "undefined label" warning: if the link has no caption the label
must precede a section header.

4 years ago[clang][IFS] Driver Pipeline: generate stubs after standard pipeline (3)
Puyan Lotfi [Wed, 20 Nov 2019 19:41:11 +0000 (14:41 -0500)]
[clang][IFS] Driver Pipeline: generate stubs after standard pipeline (3)

Third Landing Attempt (dropping any linker invocation from clang driver):

Up until now, clang interface stubs has replaced the standard
PP -> C -> BE -> ASM -> LNK pipeline. With this change, it will happen in
conjunction with it. So what when you build your code you will get an
a.out or lib.so as well as an interface stub file.

Example:

clang -shared -o libfoo.so -emit-interface-stubs ...

will generate both a libfoo.so and a libfoo.ifso. The .so file will
contain the code from the standard compilation pipeline and the .ifso
file will contain the ELF stub library.

Note: For driver-test.c I've added -S in order to prevent any bot failures on
bots that don't have the proper linker for their native triple. You could always
specify a triple like x86_64-unknown-linux-gnu and on bots like x86_64-scei-ps4
the clang driver would invoke regular ld instead of getting the error
'Executable "orbis-ld" doesn't exist!' but on bots like ppc64be and s390x you'd
get an error "/usr/bin/ld: unrecognised emulation mode: elf_x86_64"

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

4 years ago[Reproducer] Generate LLDB reproducer on crash
Jonas Devlieghere [Wed, 20 Nov 2019 01:28:46 +0000 (17:28 -0800)]
[Reproducer] Generate LLDB reproducer on crash

This patch hooks the reproducer infrastructure with the signal handlers.
When lldb crashes with reproducers capture enabled, it will now generate
the reproducer and print a short message the standard out. This doesn't
affect the pretty stack traces, which are still printed before.

This patch also introduces a new reproducer sub-command that
intentionally raises a given signal to test the reproducer signal
handling.

Currently the signal handler is doing too much work. Instead of copying
over files into the reproducers in the signal handler, we should
re-invoke ourselves with a special command line flag that looks at the
VFS mapping and performs the copy.

This is a NO-OP when reproducers are disabled.

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

4 years ago[Hexagon] Fix two testcase errors
Krzysztof Parzyszek [Wed, 20 Nov 2019 21:04:41 +0000 (15:04 -0600)]
[Hexagon] Fix two testcase errors

This fixes issues discovered in https://reviews.llvm.org/D63973.

4 years ago[X86] Mark vector STRICT_FP_ROUND as Legal instead of Custom.
Craig Topper [Wed, 20 Nov 2019 21:01:29 +0000 (13:01 -0800)]
[X86] Mark vector STRICT_FP_ROUND as Legal instead of Custom.

The Custom handler doesn't do anything for these nodes anyway.

SelectionDAGISel won't mutate them if they are Legal or Custom.
X86 has custom code for mutating them due to missing isel patterns.
When the isel patterns are added Legal will be the right answer.
So go ahead a change it now since that's where we'll end up.

4 years agoMove widenable branch formation into makeGuardControlFlowExplicit helper
Philip Reames [Wed, 20 Nov 2019 20:51:37 +0000 (12:51 -0800)]
Move widenable branch formation into makeGuardControlFlowExplicit helper

This is mostly NFC, but I removed the setting of the guard's calling convention onto the WC call.  Why?  Because it was untested, and was producing an ill defined output as the declaration's convention wasn't been changed leaving a mismatch which is UB.

4 years ago[CMake] Fix the path to CrossWinToARMLinux.cmake CMake cache.
Vladimir Vereschaka [Wed, 20 Nov 2019 20:46:17 +0000 (12:46 -0800)]
[CMake] Fix the path to CrossWinToARMLinux.cmake CMake cache.

The comment was slightly misleading.

Behalf: broadwaylamb (Sergej Jaskiewicz)

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

4 years ago[AMDGPU] Fixed mfma test check. NFC.
Stanislav Mekhanoshin [Wed, 20 Nov 2019 20:27:20 +0000 (12:27 -0800)]
[AMDGPU] Fixed mfma test check. NFC.

4 years ago[lldb] Fix NSURL data formatter truncation issue
Davide Italiano [Wed, 20 Nov 2019 20:27:26 +0000 (12:27 -0800)]
[lldb] Fix NSURL data formatter truncation issue

Remove hardcoded string prefix length assumption causing issues when
concatenating summary for NSURL in NSURLSummaryProvider. Provider relies
on concatenation of NSStringProvider results for summary, and while the
strings are prefixed with '@' in Objective-C, that is not the case in
Swift causing part of the description to be truncated.

This will be tested in the downstream fork.

Patch by Martin Svensson!

4 years ago[lldb] [test] Un-XFAIL one lldb-server test on NetBSD
Michał Górny [Wed, 20 Nov 2019 20:16:34 +0000 (21:16 +0100)]
[lldb] [test] Un-XFAIL one lldb-server test on NetBSD

4 years ago[debugserver] Set arch based on TARGET_TRIPLE
Vedant Kumar [Wed, 20 Nov 2019 20:08:34 +0000 (12:08 -0800)]
[debugserver] Set arch based on TARGET_TRIPLE

Use TARGET_TRIPLE instead of LLVM_DEFAULT_TARGET_TRIPLE, as the latter
isn't exported by LLVMConfig.cmake, which means arch detection fails if
lldb is built separately from llvm.

4 years ago[AMDGPU] Keep consistent check of legal addressing mode.
Michael Liao [Tue, 19 Nov 2019 22:12:47 +0000 (17:12 -0500)]
[AMDGPU] Keep consistent check of legal addressing mode.

Summary:
- Add test cases for GFX10, which has narrower offset range compared to
  GFX9.

Reviewers: rampitec, arsenm

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

Tags: #llvm

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

4 years agoFix parser bug that permitted 'private' as a (no-op) decl-specifier even outside...
Richard Smith [Wed, 20 Nov 2019 19:58:34 +0000 (11:58 -0800)]
Fix parser bug that permitted 'private' as a (no-op) decl-specifier even outside OpenCL.

4 years agoRevert "[clangd] Fix a crash in expected types"
Nico Weber [Wed, 20 Nov 2019 19:38:35 +0000 (14:38 -0500)]
Revert "[clangd] Fix a crash in expected types"

This reverts commit b5135a86e04761577494c70e7c0057136cc90b5b.
Test fails on Windows.

4 years agoscudo: Only use the Android reserved TLS slot when building libc's copy of the allocator.
Peter Collingbourne [Tue, 19 Nov 2019 21:58:06 +0000 (13:58 -0800)]
scudo: Only use the Android reserved TLS slot when building libc's copy of the allocator.

When we're not building libc's allocator, just use a regular TLS variable. This
lets the unit tests pass on Android devices whose libc uses Scudo. Otherwise
libc's copy of Scudo and the unit tests' copy will both try to use the same
TLS slot, in likely incompatible ways.

This requires using ELF TLS, so start passing -fno-emulated-tls when building
the library and the unit tests on Android.

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

4 years ago[FileCollector] Ignore empty paths.
Jonas Devlieghere [Wed, 20 Nov 2019 18:38:55 +0000 (10:38 -0800)]
[FileCollector] Ignore empty paths.

Don't insert empty strings into the StringSet<> because that triggers an
assert in its implementation.

4 years ago[SystemZ] Avoid mixing strict and non-strict FP operations in tests
Ulrich Weigand [Wed, 20 Nov 2019 18:49:34 +0000 (19:49 +0100)]
[SystemZ] Avoid mixing strict and non-strict FP operations in tests

This is to prepare for having the IR verifier reject mixed functions.
Note that fp-strict-mul-02.ll and fp-strict-mul-04.ll still remain
to be fixed.

4 years ago[SelectionDAG][X86] Mutate strictFP nodes to non-strict in DoInstructionSelection...
Craig Topper [Wed, 20 Nov 2019 18:30:27 +0000 (10:30 -0800)]
[SelectionDAG][X86] Mutate strictFP nodes to non-strict in DoInstructionSelection when the node is marked Expand rather than when it is not Legal.

This allows operations that are marked Custom, but have some type
combinations that are legal to get past this code.

Add custom mutation code to X86's Select function for the nodes
that don't have isel patterns yet.

4 years ago[SystemZ] Use fneg in test cases
Ulrich Weigand [Wed, 20 Nov 2019 18:07:03 +0000 (19:07 +0100)]
[SystemZ] Use fneg in test cases

Now that we have fneg, prefer using it over "fsub -0.0, ...".
This helps in particular with strict FP tests, as fneg does
not raise any exceptions.

4 years agoRename 'DenormalMode' in CommandFlags.inc to 'DenormalFPMath', as its
James Y Knight [Wed, 20 Nov 2019 17:10:14 +0000 (12:10 -0500)]
Rename 'DenormalMode' in CommandFlags.inc to 'DenormalFPMath', as its
option is actually named anyhow.

This avoids a conflict with the llvm::DenormalMode enum in
FloatingPointMode.h.

4 years agoA fix of the bug introduced by previous lowering in asm patch.
Xiangling Liao [Wed, 20 Nov 2019 16:26:08 +0000 (11:26 -0500)]
A fix of the bug introduced by previous lowering in asm patch.

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

4 years ago[AIX][XCOFF] Add support for generating assembly code for one-byte mergable strings
Xing Xue [Wed, 20 Nov 2019 16:01:45 +0000 (11:01 -0500)]
[AIX][XCOFF] Add support for generating assembly code for one-byte mergable strings

This patch adds support for generating assembly code for one-byte mergeable strings.

Generating assembly code for multi-byte mergeable strings and the `XCOFF` object code for mergeable strings will be supported later.

Reviewers: hubert.reinterpretcast, jasonliu, daltenty, sfertile, DiggerLin, Xiangling_L

Reviewed by: daltenty

Subscribers: wuzish, nemanjai, hiraditya, kbarton, jsji, llvm-commits

Tags: #llvm

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

4 years ago[clangd] Fix a crash in expected types
Ilya Biryukov [Wed, 20 Nov 2019 14:51:18 +0000 (15:51 +0100)]
[clangd] Fix a crash in expected types

Reviewers: kadircet

Reviewed By: kadircet

Subscribers: merge_guards_bot, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agogn build: Merge a03435ec8e2
LLVM GN Syncbot [Wed, 20 Nov 2019 15:28:09 +0000 (15:28 +0000)]
gn build: Merge a03435ec8e2

4 years ago[AIX] Lowering jump table, constant pool and block address in asm
Xiangling Liao [Thu, 14 Nov 2019 14:52:32 +0000 (09:52 -0500)]
[AIX] Lowering jump table, constant pool and block address in asm

This patch lowering jump table, constant pool and block address in assembly.
1. On AIX, jump table index is always relative;
2. Put CPI and JTI into ReadOnlySection until we support unique data sections;
3. Create the temp symbol for block address symbol;
4. Update MIR testcases and add related assembly part;

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

4 years agoRecommit "[DWARF] Add an api to get "interpreted" location lists"
Pavel Labath [Fri, 8 Nov 2019 14:24:11 +0000 (15:24 +0100)]
Recommit "[DWARF] Add an api to get "interpreted" location lists"

This recommits 089c0f581492cd6e2a3d2927be3fbf60ea2d7e62, which was
reverted due to failing tests on big endian machines. It includes a fix
which I believe (I don't have BE machine) should fix this issue. The fix
consists of correcting the invocation DWARFYAML::EmitDebugSections,
which was missing one (default) function arguments, and so didn't
actually force the little-endian mode.

The original commit message follows.

Summary:
This patch adds DWARFDie::getLocations, which returns the location
expressions for a given attribute (typically DW_AT_location). It handles
both "inline" locations and references to the external location list
sections (currently only of the DW_FORM_sec_offset type). It is
implemented on top of DWARFUnit::findLoclistFromOffset, which is also
added in this patch. I tried to make their signatures similar to the
equivalent range list functionality.

The actual location list interpretation logic is in
DWARFLocationTable::visitAbsoluteLocationList. This part is not
equivalent to the range list code, but this deviation is motivated by a
desire to reuse the same location list parsing code within lldb.

The functionality is tested via a c++ unit test of the DWARFDie API.

Reviewers: dblaikie, JDevlieghere, SouraVX

Subscribers: mgorny, hiraditya, cmtice, probinson, llvm-commits, aprantl

Tags: #llvm

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

4 years ago[SLP] reduce duplicate CHECK lines in tests; NFC
Sanjay Patel [Wed, 20 Nov 2019 14:31:17 +0000 (09:31 -0500)]
[SLP] reduce duplicate CHECK lines in tests; NFC

4 years ago[lldb][NFC] Move searching for $__lldb_objc_class into its own function
Raphael Isemann [Wed, 20 Nov 2019 14:58:07 +0000 (15:58 +0100)]
[lldb][NFC] Move searching for $__lldb_objc_class into its own function

Same as in commit e7cc833ddafdca10be4ef1322ab96ffee774045b but with $__lldb_objc_class.

4 years ago[AMDGPU][GFX10] Disabled v_movrel*[sdwa|dpp] opcodes in codegen
Dmitry Preobrazhensky [Wed, 20 Nov 2019 14:04:36 +0000 (17:04 +0300)]
[AMDGPU][GFX10] Disabled v_movrel*[sdwa|dpp] opcodes in codegen

These opcodes use indirect register addressing so they need special handling by codegen (currently missing).

Reviewers: vpykhtin, arsenm, rampitec

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

4 years ago[mips] Define mem_simm# operands using tblgen `foreach` loop. NFC
Simon Atanasyan [Tue, 19 Nov 2019 14:32:13 +0000 (17:32 +0300)]
[mips] Define mem_simm# operands using tblgen `foreach` loop. NFC

4 years ago[SelectionDAG] Combine U{ADD,SUB}O diamonds into {ADD,SUB}CARRY
David Zarzycki [Wed, 20 Nov 2019 13:52:24 +0000 (15:52 +0200)]
[SelectionDAG] Combine U{ADD,SUB}O diamonds into {ADD,SUB}CARRY

Summary:
Convert (uaddo (uaddo x, y), carryIn) into addcarry x, y, carryIn if-and-only-if the carry flags of the first two uaddo are merged via OR or XOR.

Work remaining: match ADD, etc.

Reviewers: craig.topper, RKSimon, spatel, niravd, jonpa, uweigand, deadalnix, nikic, lebedev.ri, dmgreen, chfast

Reviewed By: lebedev.ri

Subscribers: chfast, llvm-commits

Tags: #llvm

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

4 years agogn build: Merge 72d2929c52a
LLVM GN Syncbot [Wed, 20 Nov 2019 14:15:38 +0000 (14:15 +0000)]
gn build: Merge 72d2929c52a

4 years agoRevert "[DWARF] Add an api to get "interpreted" location lists"
Pavel Labath [Wed, 20 Nov 2019 14:13:34 +0000 (15:13 +0100)]
Revert "[DWARF] Add an api to get "interpreted" location lists"

The test fails on big endian machines.

This reverts commit 089c0f581492cd6e2a3d2927be3fbf60ea2d7e62 and the
subsequent attempt to fix in 82dc32e2d456c75d08bc9ffe97def409ee5a03cd.

4 years ago[lldb][NFC] Move searching for $__lldb_class into its own function in ClangExpression...
Raphael Isemann [Wed, 20 Nov 2019 13:35:18 +0000 (14:35 +0100)]
[lldb][NFC] Move searching for $__lldb_class into its own function in ClangExpressionDeclMap

4 years ago[ARM][MVE] Select vqabs
Anna Welker [Wed, 20 Nov 2019 13:57:54 +0000 (13:57 +0000)]
[ARM][MVE] Select vqabs

  Adds a pattern to ARMInstrMVE.td to use a VQABS
  instruction if an equivalent multi-instruction
  construct is found.

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

4 years agoBig-endian fix to DWARFDieTest (089c0f58)
Pavel Labath [Wed, 20 Nov 2019 13:35:41 +0000 (14:35 +0100)]
Big-endian fix to DWARFDieTest (089c0f58)

Hardcode the DWARFContext to little-endian. I don't have a BE machine to
test this on, but I believe this should address the ppc64be failure.

4 years ago[update_cc_test_checks.py] Add the --function-signature flag
Alex Richardson [Wed, 20 Nov 2019 13:20:15 +0000 (13:20 +0000)]
[update_cc_test_checks.py] Add the --function-signature flag

Summary:
This was added to update_test_checks.py in D68819 and I believe having it
in update_cc_test_checks.py is also useful.

Reviewers: jdoerfert, MaskRay

Reviewed By: MaskRay

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[UptestTestChecks][NFC] Share some common command line options code
Alex Richardson [Wed, 20 Nov 2019 13:19:48 +0000 (13:19 +0000)]
[UptestTestChecks][NFC] Share some common command line options code

Summary:
Add a function common.parse_commandline_args() that adds options common
to all tools (--verbose and --update-only) and returns the parsed
commandline arguments. I plan to use the shared parsing of --verbose in a
follow-up commit to remove most of the `if args.verbose:` checks in the
scripts.

Reviewers: xbolva00, MaskRay

Reviewed By: MaskRay

Subscribers: llvm-commits

Tags: #llvm

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

4 years agoIgnore R_MIPS_JALR relocations against non-function symbols
Alex Richardson [Wed, 20 Nov 2019 13:19:16 +0000 (13:19 +0000)]
Ignore R_MIPS_JALR relocations against non-function symbols

Summary:
Current versions of clang would erroneously emit this relocation not only
against functions (loaded from the GOT) but also against data symbols
(e.g. a table of function pointers). LLD was then changing this into a
branch-and-link instruction, causing the program to jump to the data
symbol at run time. I discovered this problem when attempting to boot
MIPS64 FreeBSD after updating the to the latest upstream master.

Reviewers: atanasyan, jrtc27, espindola

Reviewed By: atanasyan

Subscribers: emaste, sdardis, krytarowski, MaskRay, llvm-commits

Tags: #llvm

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

4 years agoARM-NEON: make type modifiers orthogonal and allow multiple modifiers.
Tim Northover [Fri, 11 Oct 2019 12:46:47 +0000 (13:46 +0100)]
ARM-NEON: make type modifiers orthogonal and allow multiple modifiers.

The modifier system used to mutate types on NEON intrinsic definitions had a
separate letter for all kinds of transformations that might be needed, and we
were quite quickly running out of letters to use. This patch converts to a much
smaller set of orthogonal modifiers that can be applied together to achieve the
desired effect.

When merging with downstream it is likely to cause a conflict with any local
modifications to the .td files. There is a new script in
utils/convert_arm_neon.py that was used to convert all .td definitions and I
would suggest running it on the last downstream version of those files before
this commit rather than resolving conflicts manually.

4 years agoNeonEmitter: remove special case on casting polymorphic builtins.
Tim Northover [Wed, 30 Oct 2019 11:27:13 +0000 (11:27 +0000)]
NeonEmitter: remove special case on casting polymorphic builtins.

For some reason we were not casting a fairly obscure class of builtin calls we
expected to be polymorphic to vectors of char. It worked because the only
affected intrinsics weren't actually polymorphic after all, but is
unnecessarily complicated.

4 years agoARM-NEON: separate soon-to-be conflicting f16 patterns. NFC.
Tim Northover [Wed, 30 Oct 2019 09:26:58 +0000 (09:26 +0000)]
ARM-NEON: separate soon-to-be conflicting f16 patterns. NFC.

This separates some intrinsic definitions into multiple instantiations because
they use a modifier that forces the float size to a given value. That modifier
won't work in the new NeonEmitter modifier scheme and committing this
separately allows the Python script to be run on the .td files to perform the
conversion automatically.

4 years ago[lldb][NFC] Move ClangExpressionDeclMap's persistent decl search into its own function
Raphael Isemann [Wed, 20 Nov 2019 12:41:44 +0000 (13:41 +0100)]
[lldb][NFC] Move ClangExpressionDeclMap's persistent decl search into its own function

Searching persistent decls is a small subset of the things
FindExternalVisibleDecls does. It should be its own function instead
of being encapsulated in this `do { } while(false);` pattern.

4 years agoUpdate tests after change to llvm-cxxfilt's underscore stripping behaviour.
Tim Northover [Wed, 20 Nov 2019 13:03:38 +0000 (13:03 +0000)]
Update tests after change to llvm-cxxfilt's underscore stripping behaviour.

4 years ago[mips] Put conditions when we need to expand memory operand into a separate function...
Simon Atanasyan [Wed, 20 Nov 2019 12:27:27 +0000 (15:27 +0300)]
[mips] Put conditions when we need to expand memory operand into a separate function. NFC

`expandMemInst` expects instruction with 3 or 4 operands and the last
operand requires expanding. It's redundant to scan all operands in a
loop. We can check the last operands.

4 years ago[mips] Make MipsAsmParser::isEvaluated static function. NFC
Simon Atanasyan [Wed, 20 Nov 2019 12:22:12 +0000 (15:22 +0300)]
[mips] Make MipsAsmParser::isEvaluated static function. NFC

4 years ago[AMDGPU][DPP] Corrected DPP combiner
Dmitry Preobrazhensky [Wed, 20 Nov 2019 12:09:08 +0000 (15:09 +0300)]
[AMDGPU][DPP] Corrected DPP combiner

Added a check to make sure that the selected dpp opcode is supported by target.

Reviewers: vpykhtin, arsenm, rampitec

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

4 years agogn build: Merge 089c0f58149
LLVM GN Syncbot [Wed, 20 Nov 2019 12:30:58 +0000 (12:30 +0000)]
gn build: Merge 089c0f58149

4 years ago[CodeGen][NFC] Regenerate load-combine test with update_llc_test.
Clement Courbet [Wed, 20 Nov 2019 10:00:28 +0000 (11:00 +0100)]
[CodeGen][NFC] Regenerate load-combine test with update_llc_test.

To prepare for D27861.

4 years ago[DWARF] Add an api to get "interpreted" location lists
Pavel Labath [Fri, 8 Nov 2019 14:24:11 +0000 (15:24 +0100)]
[DWARF] Add an api to get "interpreted" location lists

Summary:
This patch adds DWARFDie::getLocations, which returns the location
expressions for a given attribute (typically DW_AT_location). It handles
both "inline" locations and references to the external location list
sections (currently only of the DW_FORM_sec_offset type). It is
implemented on top of DWARFUnit::findLoclistFromOffset, which is also
added in this patch. I tried to make their signatures similar to the
equivalent range list functionality.

The actual location list interpretation logic is in
DWARFLocationTable::visitAbsoluteLocationList. This part is not
equivalent to the range list code, but this deviation is motivated by a
desire to reuse the same location list parsing code within lldb.

The functionality is tested via a c++ unit test of the DWARFDie API.

Reviewers: dblaikie, JDevlieghere, SouraVX

Subscribers: mgorny, hiraditya, cmtice, probinson, llvm-commits, aprantl

Tags: #llvm

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

4 years ago[DebugInfo] Remove the DIFlagArgumentNotModified debug info flag
Djordje Todorovic [Wed, 20 Nov 2019 11:20:53 +0000 (12:20 +0100)]
[DebugInfo] Remove the DIFlagArgumentNotModified debug info flag

Due to changes in D68206, we remove the DIFlagArgumentNotModified
and its usage.

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

4 years agogn build: Merge ea8678d1c78
LLVM GN Syncbot [Wed, 20 Nov 2019 12:10:51 +0000 (12:10 +0000)]
gn build: Merge ea8678d1c78

4 years ago[lldb][NFC] Remove unused ClangASTContext::GetUnknownAnyType
Raphael Isemann [Wed, 20 Nov 2019 11:56:42 +0000 (12:56 +0100)]
[lldb][NFC] Remove unused ClangASTContext::GetUnknownAnyType

4 years ago[clangd] Treat UserDefinedLiteral as a leaf in SelectionTree, sidestepping tokenizati...
Sam McCall [Tue, 19 Nov 2019 15:57:31 +0000 (16:57 +0100)]
[clangd] Treat UserDefinedLiteral as a leaf in SelectionTree, sidestepping tokenization issues

Summary: Fixes https://github.com/clangd/clangd/issues/203

Reviewers: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agoMove floating point related entities to namespace level
Serge Pavlov [Thu, 29 Aug 2019 12:29:11 +0000 (19:29 +0700)]
Move floating point related entities to namespace level

This is recommit of commit e6584b2b7b2d, which was reverted in
30e7ee3c4bac together with af57dbf12e54.
Original message is below.

Enumerations that describe rounding mode and exception behavior were
defined inside ConstrainedFPIntrinsic. It makes sense to use the same
definitions to represent the same properties in other cases, not only
in constrained intrinsics. It was however inconvenient as required to
include constrained intrinsics definitions even if they were not needed.
Also using long scope prefix reduced readability.

This change moves these definitioins to the namespace llvm::fp.
No functional changes.

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

4 years ago[lldb][NFC] Simplify ClangASTContext::GetBasicTypes
Raphael Isemann [Wed, 20 Nov 2019 11:40:08 +0000 (12:40 +0100)]
[lldb][NFC] Simplify ClangASTContext::GetBasicTypes

static convenience methods that do the clang::ASTContext -> ClangASTContext
conversion and handle errors by simply ignoring them are not a good idea.

4 years ago[lldb][NFC] Remove ClangASTContext::GetAsDeclContext
Raphael Isemann [Wed, 20 Nov 2019 11:17:48 +0000 (12:17 +0100)]
[lldb][NFC] Remove ClangASTContext::GetAsDeclContext

Everything we pass to this function is already a DeclContext.

4 years ago[lldb][NFC] Remove ClangASTContext::FieldIsBitfield overload
Raphael Isemann [Wed, 20 Nov 2019 11:09:19 +0000 (12:09 +0100)]
[lldb][NFC] Remove ClangASTContext::FieldIsBitfield overload

4 years ago[lldb][NFC] Remove ClangASTContext::GetUniqueNamespaceDeclaration overload
Raphael Isemann [Wed, 20 Nov 2019 10:36:15 +0000 (11:36 +0100)]
[lldb][NFC] Remove ClangASTContext::GetUniqueNamespaceDeclaration overload

This overload is only used in one place and having static overloads for
all methods that only do an additional clang::ASTContext -> ClangASTContext
conversion is just not sustainable.

4 years ago[AMDGPU] add support for hostcall buffer pointer as hidden kernel argument
Sameer Sahasrabuddhe [Tue, 19 Nov 2019 08:35:39 +0000 (14:05 +0530)]
[AMDGPU] add support for hostcall buffer pointer as hidden kernel argument

Hostcall is a service that allows a kernel to submit requests to the
host using shared buffers, and block until a response is
received. This will eventually replace the shared buffer currently
used for printf, and repurposes the same hidden kernel argument. This
change introduces a new ValueKind in the HSA metadata to represent the
hostcall buffer.

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

4 years ago[ExecutionEngine] Add a missing break to avoid warnings
Martin Storsjö [Wed, 20 Nov 2019 10:19:50 +0000 (12:19 +0200)]
[ExecutionEngine] Add a missing break to avoid warnings

This fixes buildbot errors since dc3ee330891c2.

4 years ago[llvm-readobj] - Improve dumping of the SHT_LLVM_LINKER_OPTIONS sections.
Georgii Rymar [Tue, 12 Nov 2019 09:46:44 +0000 (12:46 +0300)]
[llvm-readobj] - Improve dumping of the SHT_LLVM_LINKER_OPTIONS sections.

I've added a few tests that shows how the current code could overrun the section data
buffer while dumping. I had to rewrite the code to fix this.

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

4 years agoReland "[clang] Remove the DIFlagArgumentNotModified debug info flag"
Djordje Todorovic [Tue, 19 Nov 2019 13:47:08 +0000 (14:47 +0100)]
Reland "[clang] Remove the DIFlagArgumentNotModified debug info flag"

It turns out that the ExprMutationAnalyzer can be very slow when AST
gets huge in some cases. The idea is to move this analysis to the LLVM
back-end level (more precisely, in the LiveDebugValues pass). The new
approach will remove the performance regression, simplify the
implementation and give us front-end independent implementation.

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

4 years agoExecutionEngine: add preliminary support for COFF ARM64
Adam Kallai [Wed, 20 Nov 2019 08:51:03 +0000 (10:51 +0200)]
ExecutionEngine: add preliminary support for COFF ARM64

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

4 years ago[llvm-readobj/llvm-readelf] - Improve dumping of versioning sections.
Georgii Rymar [Mon, 18 Nov 2019 14:43:50 +0000 (17:43 +0300)]
[llvm-readobj/llvm-readelf] - Improve dumping of versioning sections.

Our elf-versioninfo.test is not perfect. It does not properly test how
flags are dumped and also we have a bug: they are dumped as enums in
LLVM style now, i.e not dumped properly.

GNU style uses a `versionFlagToString` method to build a string from flags
which seems is consistent with GNU readelf.

In this patch I fixed the issues mentioned.

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

4 years agoIntroduce llvm-install-name-tool
Alexander Shaposhnikov [Wed, 20 Nov 2019 07:30:52 +0000 (23:30 -0800)]
Introduce llvm-install-name-tool

This diff adds a new "driver" for llvm-objcopy
which is supposed to emulate the behavior of install-name-tool.
This is a recommit of b5913e6 with ubsan, test dependencies issues fixed.

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

Test plan: make check-all

4 years ago[FEnv] Fix AddingConstrainedIntrinsics.rst after llvmorg-10-init-10282-g0c50c0b0552
Fangrui Song [Wed, 20 Nov 2019 07:09:07 +0000 (23:09 -0800)]
[FEnv] Fix AddingConstrainedIntrinsics.rst after llvmorg-10-init-10282-g0c50c0b0552

4 years ago[FEnv] File with properties of constrained intrinsics
Serge Pavlov [Tue, 5 Nov 2019 13:42:16 +0000 (20:42 +0700)]
[FEnv] File with properties of constrained intrinsics

Summary
In several places we need to enumerate all constrained intrinsics or IR
nodes that should be represented by them. It is easy to miss some of
the cases. To make working with these intrinsics more convenient and
robust, this change introduces file containing definitions of all
constrained intrinsics and some of their properties. This file can be
included to generate constrained intrinsics processing code.

Reviewers: kpn, andrew.w.kaylor, cameron.mcinally, uweigand

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Legalize FDIV64
Austin Kerbow [Mon, 18 Nov 2019 00:43:59 +0000 (16:43 -0800)]
AMDGPU/GlobalISel: Legalize FDIV64

Reviewers: arsenm

Reviewed By: arsenm

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

Tags: #llvm

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

4 years agoUse lld::make<T> to make TpiSource objects
Rui Ueyama [Tue, 19 Nov 2019 06:04:21 +0000 (15:04 +0900)]
Use lld::make<T> to make TpiSource objects

In lld we rarely use std::unique_ptr but instead allocate new instances
using lld::make<T>() so that they are deallocated at the end of linking.
This patch changes existing code so that that follows the convention.

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

4 years agoExtends the tblgen macro to allow mlir-tblgen to be installed
Eric Schweitz [Wed, 20 Nov 2019 03:28:12 +0000 (19:28 -0800)]
Extends the tblgen macro to allow mlir-tblgen to be installed

The mlir-tblgen tool was not getting installed.  This change allows
the MLIR project to be installed along with llvm-tblgen.

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

4 years agoRevert "[clang][IFS] Driver Pipeline: generate stubs after standard pipeline (2)"
Puyan Lotfi [Wed, 20 Nov 2019 02:59:50 +0000 (21:59 -0500)]
Revert "[clang][IFS] Driver Pipeline: generate stubs after standard pipeline (2)"

This reverts commit ea8e02822341e2421b94167d828d3f224e767424.

4 years agoRevert "[clang][IFS] Fixing failing bots that do not have PPC target or "orbis-ld""
Puyan Lotfi [Wed, 20 Nov 2019 02:59:39 +0000 (21:59 -0500)]
Revert "[clang][IFS] Fixing failing bots that do not have PPC target or "orbis-ld""

This reverts commit 377d70cdea733e36107e99d9148864d24797d51c.

4 years agoRevert "[clang][IFS] Attempting to fix missing 'orbis-ld' on scei-ps4-ubuntu bot."
Puyan Lotfi [Wed, 20 Nov 2019 02:59:31 +0000 (21:59 -0500)]
Revert "[clang][IFS] Attempting to fix missing 'orbis-ld' on scei-ps4-ubuntu bot."

This reverts commit 29fd1e1f4a372f3870e054da24b57a4f45861808.

4 years agoRevert "[clang][IFS] Fixing unsupported emulation mode on clang-ppc64be-linux bot."
Puyan Lotfi [Wed, 20 Nov 2019 02:59:22 +0000 (21:59 -0500)]
Revert "[clang][IFS] Fixing unsupported emulation mode on clang-ppc64be-linux bot."

This reverts commit 1b387484b9b38a4a1e98a9d22a9a26065b0d184e.

4 years agoRevert "[clang][IFS][test] Removing driver-test.c. Test is still too brittle."
Puyan Lotfi [Wed, 20 Nov 2019 02:59:10 +0000 (21:59 -0500)]
Revert "[clang][IFS][test] Removing driver-test.c. Test is still too brittle."

This reverts commit f37356d6f60ae5db978611621d3a375ed87ec0f0.

4 years ago[clang][IFS][test] Removing driver-test.c. Test is still too brittle.
Puyan Lotfi [Wed, 20 Nov 2019 02:42:17 +0000 (21:42 -0500)]
[clang][IFS][test] Removing driver-test.c. Test is still too brittle.

Removing this test because if I add a triple then there are link falures
on targets like ppc and s390x. If I don't add a triple then on PS4
targets the clang driver tries to invoke orbis-ld which ends up being
not found.

4 years agoclang/Modules: Early return in CompilerInstance::createModuleManager, NFC
Duncan P. N. Exon Smith [Wed, 20 Nov 2019 02:10:04 +0000 (18:10 -0800)]
clang/Modules: Early return in CompilerInstance::createModuleManager, NFC

Reduce nesting with an early `return`.

4 years ago[musttail] Don't forward AL on Win64
Reid Kleckner [Mon, 18 Nov 2019 23:31:37 +0000 (15:31 -0800)]
[musttail] Don't forward AL on Win64

AL is only used for varargs on SysV platforms. Don't forward it on
Windows. This allows control flow guard to set up an extra hidden
parameter in RAX, as described in PR44049.

This also has the effect of freeing up RAX for use in virtual member
pointer thunks, which may also be a nice little code size improvement on
Win64.

Fixes PR44049

Reviewers: ajpaverd, efriedma, hans

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

4 years ago[LTO][Legacy] Add API for passing LLVM options separately
Francis Visoiu Mistrih [Tue, 19 Nov 2019 22:04:59 +0000 (14:04 -0800)]
[LTO][Legacy] Add API for passing LLVM options separately

In order to correctly pass options to LLVM, including options containing
spaces which are used as delimiters for multiple options in
lto_codegen_debug_options, add a new API:
lto_codegen_debug_options_array.

Unfortunately, tools/lto has no testing infrastructure yet, so there are
no tests associated with this patch.

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

4 years ago[clang][IFS] Fixing unsupported emulation mode on clang-ppc64be-linux bot.
Puyan Lotfi [Wed, 20 Nov 2019 00:24:12 +0000 (19:24 -0500)]
[clang][IFS] Fixing unsupported emulation mode on clang-ppc64be-linux bot.

I am in another pickle here where if I specify a triple, I get the wrong elf
target arch on the PPC bot (error from the PPC elf Linker). To avoid this I am
going to turn this test off on the PPC bots for now.

4 years agoRevert "Introduce llvm-install-name-tool"
Alexander Shaposhnikov [Wed, 20 Nov 2019 00:19:08 +0000 (16:19 -0800)]
Revert "Introduce llvm-install-name-tool"

This temporarily reverts the commit 88f00aef684ff84a6494e1f17d5466c5678f703d.
The change broke the buildbot http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/36836

4 years ago[Reproducer] Namespace the reproducer dump options.
Jonas Devlieghere [Wed, 20 Nov 2019 00:18:19 +0000 (16:18 -0800)]
[Reproducer] Namespace the reproducer dump options.

Make it clear that the current reproducer options are for dumping.

4 years ago[LegalizeDAG][X86] Enable STRICT_FP_TO_SINT/UINT to be promoted
Craig Topper [Wed, 20 Nov 2019 00:07:50 +0000 (16:07 -0800)]
[LegalizeDAG][X86] Enable STRICT_FP_TO_SINT/UINT to be promoted

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

4 years agoscudo: Switch from std::random_shuffle to std::shuffle in a test.
Peter Collingbourne [Tue, 19 Nov 2019 21:54:12 +0000 (13:54 -0800)]
scudo: Switch from std::random_shuffle to std::shuffle in a test.

This lets the test build with C++17.

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

4 years agoclang/Modules: Sink ASTReadResult in ReadControlBlock, NFC
Duncan P. N. Exon Smith [Tue, 19 Nov 2019 22:44:22 +0000 (14:44 -0800)]
clang/Modules: Sink ASTReadResult in ReadControlBlock, NFC

Simplify the code by avoiding some state that wasn't being used.  The
function-level `Result` was only assigned a value other than `Success`
in the handler for `OPTIONS_BLOCK_ID`, but in that case it also hits an
early return.  Remove it at the function-level to make it obvious that
the normal case always returns `Success`.

4 years ago[X86] Add custom type legalization and lowering for scalar STRICT_FP_TO_SINT/UINT
Craig Topper [Tue, 19 Nov 2019 23:51:19 +0000 (15:51 -0800)]
[X86] Add custom type legalization and lowering for scalar STRICT_FP_TO_SINT/UINT

This is a first pass at Custom lowering for these operations. I also updated some of the vector code where it was obviously easy and straightforward. More work needed in follow up.

This enables these operations to be handled with X87 where special rounding control adjustments are needed to perform a truncate.

Still need to fix Promotion in the target independent code in LegalizeDAG.
llrint/llround split into separate test file because we can't make a strict libcall properly yet either and we need to do that when i64 isn't a legal type.

This does not include any isel support. So we still rely on the mutation in SelectionDAGIsel to remove the strict from this stuff later. Except for the X87 stuff which goes through custom nodes that already had chains.

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

4 years ago[tests] Autogen a test to eliminate spurious diff from following patch
Philip Reames [Wed, 20 Nov 2019 00:01:43 +0000 (16:01 -0800)]
[tests] Autogen a test to eliminate spurious diff from following patch

4 years ago[ARC] Add InitializePasses header to fix ARC build.
Pete Couperus [Tue, 19 Nov 2019 23:48:24 +0000 (15:48 -0800)]
[ARC] Add InitializePasses header to fix ARC build.

4 years ago[clang][IFS] Attempting to fix missing 'orbis-ld' on scei-ps4-ubuntu bot.
Puyan Lotfi [Tue, 19 Nov 2019 23:32:31 +0000 (18:32 -0500)]
[clang][IFS] Attempting to fix missing 'orbis-ld' on scei-ps4-ubuntu bot.

I want this test to run end to end, but I am still having trouble with
missing linkers on the scei-ps4 bot. Will remove this test if it
continues to be a source of brittle failures. Sorry for the noise.

4 years ago[lldb][test] Prevent \n in calls to lldb's expect() test helper.
Jordan Rupprecht [Tue, 19 Nov 2019 23:06:35 +0000 (15:06 -0800)]
[lldb][test] Prevent \n in calls to lldb's expect() test helper.

Summary:
expect() forwards its command to sendline(). This can be problematic if the command already contains a newline: sendline() unconditionally adds a newline to the command, which causes the command to run twice (hitting enter in lldb runs the previous command). The expect() helper looks for the prompt and finds the first one, but because the command has run a second time, the buffer will contain the contents of the second time the command ran, causing potential erroneous matching.

Simplify the editline test, which was using different commands to workaround this misunderstanding.

Reviewers: labath

Reviewed By: labath

Subscribers: merge_guards_bot, lldb-commits

Tags: #lldb

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

4 years agoIntroduce llvm-install-name-tool
Alexander Shaposhnikov [Mon, 18 Nov 2019 23:44:58 +0000 (15:44 -0800)]
Introduce llvm-install-name-tool

This diff adds a new "driver" for llvm-objcopy
which is supposed to emulate the behavior of install-name-tool.
This is a recommit of b5913e6d2 with ubsan issues fixed.

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

Test plan: make check-all

4 years ago[GuardWidening] Remove WidenFrequentBranches transform
Philip Reames [Tue, 19 Nov 2019 23:14:41 +0000 (15:14 -0800)]
[GuardWidening] Remove WidenFrequentBranches transform

This code has never been enabled.  While it is tested, it's complicating some refactoring.  If we decide to re-implement this, doing it in SimplifyCFG would probably make more sense anyways.