platform/upstream/llvm.git
6 years agolit: bump version number
Hans Wennborg [Thu, 2 Aug 2018 07:48:44 +0000 (07:48 +0000)]
lit: bump version number

llvm-svn: 338677

6 years ago[UnJ] Add debug messages for why loops are not unrolled. NFC
David Green [Thu, 2 Aug 2018 07:30:53 +0000 (07:30 +0000)]
[UnJ] Add debug messages for why loops are not unrolled. NFC

Adds some cleaned up debug messages from back when I was writing this.
Hopefully useful to others (and myself) as to why unroll and jam is not
transforming as expected.

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

llvm-svn: 338676

6 years agoTest commit access
Michael Wu [Thu, 2 Aug 2018 07:28:11 +0000 (07:28 +0000)]
Test commit access

llvm-svn: 338675

6 years ago[AArch64] Add support for got relocated LDR's
David Green [Thu, 2 Aug 2018 06:24:40 +0000 (06:24 +0000)]
[AArch64] Add support for got relocated LDR's

As a part of adding the tiny codemodel, we need to support ldr's with :got:
relocations on them. This seems to be mostly already done, just needs the
relocation type support.

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

llvm-svn: 338673

6 years agoTest commit.
Kito Cheng [Thu, 2 Aug 2018 05:38:18 +0000 (05:38 +0000)]
Test commit.

llvm-svn: 338672

6 years ago[LICM] Factor out fault legality from canHoistOrSinkInst [NFC]
Philip Reames [Thu, 2 Aug 2018 04:08:04 +0000 (04:08 +0000)]
[LICM] Factor out fault legality from canHoistOrSinkInst [NFC]

This method has three callers, each of which wanted distinct handling:
1) Sinking into a loop is moving an instruction known to execute before a loop into the loop.  We don't need to worry about introducing a fault at all in this case.
2) Hoisting from a loop into a preheader already duplicated the check in the caller.
3) Sinking from the loop into an exit block was the only true user of the code within the routine.  For the moment, this has just been lifted into the caller, but up next is examining the logic more carefully.  Whitelisting of loads and calls - while consistent with the previous code - is rather suspicious.  Either way, a behavior change is worthy of it's own patch.

llvm-svn: 338671

6 years ago[LICM] Expand tests to highlight an oddity in sinking implementation
Philip Reames [Thu, 2 Aug 2018 03:54:29 +0000 (03:54 +0000)]
[LICM] Expand tests to highlight an oddity in sinking implementation

llvm-svn: 338670

6 years agoAdded missing highlighter files to XCode project
Raphael Isemann [Thu, 2 Aug 2018 03:01:09 +0000 (03:01 +0000)]
Added missing highlighter files to XCode project

llvm-svn: 338669

6 years agoImplement P1023: constexpr comparison operators for std::array
Marshall Clow [Thu, 2 Aug 2018 02:11:06 +0000 (02:11 +0000)]
Implement P1023: constexpr comparison operators for std::array

llvm-svn: 338668

6 years ago[analyzer] Extend NoStoreFuncVisitor to follow fields.
George Karpenkov [Thu, 2 Aug 2018 02:02:40 +0000 (02:02 +0000)]
[analyzer] Extend NoStoreFuncVisitor to follow fields.

rdar://39701823

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

llvm-svn: 338667

6 years agoImplement P0887: The identity metafunction
Marshall Clow [Thu, 2 Aug 2018 01:56:02 +0000 (01:56 +0000)]
Implement P0887: The identity metafunction

llvm-svn: 338666

6 years agoFix FCOPYSIGN expansion
Lei Liu [Thu, 2 Aug 2018 01:54:12 +0000 (01:54 +0000)]
Fix FCOPYSIGN expansion

In expansion of FCOPYSIGN, the shift node is missing when the two
operands of FCOPYSIGN are of the same size. We should always generate
shift node (if the required shift bit is not zero) to put the sign
bit into the right position, regardless of the size of underlying
types.

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

llvm-svn: 338665

6 years agoPass triple to RUN line to fix failing bots.
Akira Hatanaka [Thu, 2 Aug 2018 01:52:17 +0000 (01:52 +0000)]
Pass triple to RUN line to fix failing bots.

This is a follow-up to r338656.

llvm-svn: 338664

6 years ago[LICM] hoisting/sinking legality - bail early for unsupported instructions
Philip Reames [Thu, 2 Aug 2018 00:54:14 +0000 (00:54 +0000)]
[LICM] hoisting/sinking legality - bail early for unsupported instructions

Originally, this was part of a larger refactoring I'd planned, but had to abandoned.  I figured the minor improvement in readability was worthwhile.

llvm-svn: 338663

6 years ago[LLDB] Added syntax highlighting support
Raphael Isemann [Thu, 2 Aug 2018 00:30:15 +0000 (00:30 +0000)]
[LLDB] Added syntax highlighting support

Summary:
This patch adds syntax highlighting support to LLDB. When enabled (and lldb is allowed
to use colors), printed source code is annotated with the ANSI color escape sequences.

So far we have only one highlighter which is based on Clang and is responsible for all
languages that are supported by Clang. It essentially just runs the raw lexer over the input
and then surrounds the specific tokens with the configured escape sequences.

Reviewers: zturner, davide

Reviewed By: davide

Subscribers: labath, teemperor, llvm-commits, mgorny, lldb-commits

Tags: #lldb

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

llvm-svn: 338662

6 years ago[libFuzzer] use absolute distance in addition to the hamming distance in value profil...
Kostya Serebryany [Thu, 2 Aug 2018 00:24:49 +0000 (00:24 +0000)]
[libFuzzer] use absolute distance in addition to the hamming distance in value profiling; our A/B testing have (somewhat weak) indication that this provides an additional signal for corpus expansion

llvm-svn: 338661

6 years ago[ADT] Add some documentation for GraphTraits.
Tim Shen [Thu, 2 Aug 2018 00:21:12 +0000 (00:21 +0000)]
[ADT] Add some documentation for GraphTraits.

Summary: Add some context for GraphTraits.

Reviewers: dblaikie, asbirlea

Subscribers: sanjoy, jlebar, bixia, dexonsmith, llvm-commits

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

llvm-svn: 338660

6 years ago[JSONExporter] Print instead of ignoring parser error.
Michael Kruse [Thu, 2 Aug 2018 00:11:14 +0000 (00:11 +0000)]
[JSONExporter] Print instead of ignoring parser error.

Silence the warning

    warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result]

JSONExporter is a developer tool, there is no mechanism for error
handling. Print the parser error and abort with a fatal error.

llvm-svn: 338659

6 years ago[PowerPC] Do not round values prior to converting to integer
Nemanja Ivanovic [Thu, 2 Aug 2018 00:03:22 +0000 (00:03 +0000)]
[PowerPC] Do not round values prior to converting to integer

Adding the FP_ROUND nodes when combining FP_TO_[SU]INT of elements
feeding a BUILD_VECTOR into an FP_TO_[SU]INT of the built vector
loses precision. This patch removes the code that adds these nodes
to true f64 operands. It also adds patterns required to ensure
the code is still vectorized rather than converting individual
elements and inserting into a vector.

Fixes https://bugs.llvm.org/show_bug.cgi?id=38342

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

llvm-svn: 338658

6 years agoRemove unnecessary target from TestCompletion patch
Raphael Isemann [Wed, 1 Aug 2018 23:54:37 +0000 (23:54 +0000)]
Remove unnecessary target from TestCompletion patch

As Jim pointed out, we don't need to manually create a target
here because we already create a target implicitly in the very
next line (which means we just created a target and don't use it).

This patch just removes the line that creates the first unused target.

llvm-svn: 338657

6 years agoSerialize DoesNotEscape.
Akira Hatanaka [Wed, 1 Aug 2018 23:51:53 +0000 (23:51 +0000)]
Serialize DoesNotEscape.

I forgot to commit this in r326530.

llvm-svn: 338656

6 years ago[AArch64] DWARF: do not generate AT_location for thread local
Lei Liu [Wed, 1 Aug 2018 23:46:49 +0000 (23:46 +0000)]
[AArch64] DWARF: do not generate AT_location for thread local

AArch64 ELF ABI does not define a static relocation type for TLS offset within
a module, which makes it impossible for compiler to generate a valid
DW_AT_location content for thread local variables. Currently LLVM generates an
invalid R_AARCH64_ABS64 relocation at the DW_AT_location field for a TLS
variable. That causes trouble for linker because thread local variable does
not have an absolute address at link time. AArch64 GCC solves the problem by
not generating DW_AT_location for thread local variables. We should do the
same in LLVM.

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

llvm-svn: 338655

6 years agoAdd maybe-unused attribute to a variable.
Nick Desaulniers [Wed, 1 Aug 2018 23:46:48 +0000 (23:46 +0000)]
Add maybe-unused attribute to a variable.

Summary:
Mark a variable as maybe-unused to prevent a -Wunused-but-set-variable
warning in optimized builds where asserts are removed.Test/first commit
to check setup and understand patch submission process.

Reviewers: srhines, pirama, dblaikie

Reviewed By: dblaikie

Subscribers: llvm-commits

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

llvm-svn: 338654

6 years agoReland r338431: "Add DebugCounters to DivRemPairs"
George Burgess IV [Wed, 1 Aug 2018 23:14:14 +0000 (23:14 +0000)]
Reland r338431: "Add DebugCounters to DivRemPairs"

(Previously reverted in r338442)

I'm told that the breakage came from us using an x86 triple on configs
that didn't have x86 enabled. This is remedied by moving the
debugcounter test to an x86 directory (where there's also a
opt-bisect-isel.ll test for similar reasons).

I can't repro the reverse-iteration failure mentioned in the revert with
this patch, so I assume that a misconfiguration on my end is what caused
that.

Original commit message:

    Add DebugCounters to DivRemPairs

    For people who don't use DebugCounters, NFCI.

    Patch by Zhizhou Yang!

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

llvm-svn: 338653

6 years ago[InstSimplify] move minnum/maxnum with same arg fold from instcombine
Sanjay Patel [Wed, 1 Aug 2018 23:05:55 +0000 (23:05 +0000)]
[InstSimplify] move minnum/maxnum with same arg fold from instcombine

llvm-svn: 338652

6 years agoLoad from the GOT for external symbols in the large, PIC code model
Reid Kleckner [Wed, 1 Aug 2018 22:56:05 +0000 (22:56 +0000)]
Load from the GOT for external symbols in the large, PIC code model

Do the same handling for external symbols that we do for jump table
symbols and global values.

Fixes one of the cases in PR38385

llvm-svn: 338651

6 years ago[ASAN] Use the correct shadow offset for ASAN on FreeBSD/mips64.
John Baldwin [Wed, 1 Aug 2018 22:51:13 +0000 (22:51 +0000)]
[ASAN] Use the correct shadow offset for ASAN on FreeBSD/mips64.

Reviewed By: atanasyan

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

llvm-svn: 338650

6 years ago[ORC] Add a 'Callable' flag to JITSymbolFlags.
Lang Hames [Wed, 1 Aug 2018 22:42:23 +0000 (22:42 +0000)]
[ORC] Add a 'Callable' flag to JITSymbolFlags.

The callable flag can be used to indicate that a symbol is callable. If present,
the symbol is callable. If absent, the symbol may or may not be callable (the
client must determine this by context, for example by examining the program
representation that will provide the symbol definition).

This flag will be used in the near future to enable creation of lazy compilation
stubs based on SymbolFlagsMap instances only (without having to provide
additional information to determine which symbols need stubs).

llvm-svn: 338649

6 years ago[AST] Remove the static_assert check in ObjCMethodDecl::ObjCMethodDecl
Vlad Tsyrklevich [Wed, 1 Aug 2018 22:41:03 +0000 (22:41 +0000)]
[AST] Remove the static_assert check in ObjCMethodDecl::ObjCMethodDecl

Summary:
This check was introduced by r338641
but this broke some builds. For now remove it.

Subscribers: cfe-commits

Tags: #clang

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

llvm-svn: 338648

6 years agoRe-submit r338596 with a bug fix and a test.
Rui Ueyama [Wed, 1 Aug 2018 22:31:31 +0000 (22:31 +0000)]
Re-submit r338596 with a bug fix and a test.

llvm-svn: 338647

6 years ago[ScopBuilder] Set domain to empty instead of NULL.
Michael Kruse [Wed, 1 Aug 2018 22:28:32 +0000 (22:28 +0000)]
[ScopBuilder] Set domain to empty instead of NULL.

The domain generation used nullptr to mark the domain of an error block
as never-executed. Later, nullptr domains are recreated with a
zero-tuple domain that then mismatches with the expected domain the
error block within the loop.

Instead of using nullptr, assign an empty domain which preserves the
expected space. Remove empty domains during SCoP simplification.

Fixes llvm.org/PR38218.

llvm-svn: 338646

6 years agoFix -Wcovered-switch-default uncovered after r338630
Reid Kleckner [Wed, 1 Aug 2018 22:10:03 +0000 (22:10 +0000)]
Fix -Wcovered-switch-default uncovered after r338630

llvm-svn: 338643

6 years agoUpdate for DWARF API change
Reid Kleckner [Wed, 1 Aug 2018 21:57:15 +0000 (21:57 +0000)]
Update for DWARF API change

llvm-svn: 338642

6 years ago[AST][4/4] Move the bit-fields from ObjCMethodDecl and ObjCContainerDecl into DeclContext
Erich Keane [Wed, 1 Aug 2018 21:31:08 +0000 (21:31 +0000)]
[AST][4/4] Move the bit-fields from ObjCMethodDecl and ObjCContainerDecl into DeclContext

This patch follows https://reviews.llvm.org/D49729,
https://reviews.llvm.org/D49732 and
https://reviews.llvm.org/D49733.

Move the bits from ObjCMethodDecl and ObjCContainerDecl
into DeclContext.

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

Patch By: bricci

llvm-svn: 338641

6 years ago[NFC][CodeGenCXX] Use -emit-llvm-only instead of -emit-llvm and ignoring it.
Roman Lebedev [Wed, 1 Aug 2018 21:20:58 +0000 (21:20 +0000)]
[NFC][CodeGenCXX] Use -emit-llvm-only instead of -emit-llvm and ignoring it.

As pointed out by Richard Smith in post-review of r338489.

llvm-svn: 338640

6 years ago[AST][3/4] Move the bit-fields from BlockDecl, LinkageSpecDecl and OMPDeclareReductio...
Erich Keane [Wed, 1 Aug 2018 21:16:54 +0000 (21:16 +0000)]
[AST][3/4] Move the bit-fields from BlockDecl, LinkageSpecDecl and OMPDeclareReductionDecl into DeclContext

This patch follows https://reviews.llvm.org/D49729
and https://reviews.llvm.org/D49732, and is
followed by https://reviews.llvm.org/D49734.

Move the bits from BlockDecl, LinkageSpecDecl and
OMPDeclareReductionDecl into DeclContext.

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

Patch By: bricci

llvm-svn: 338639

6 years ago[DWARFASTParser] Remove special cases for `llvm-gcc`
Davide Italiano [Wed, 1 Aug 2018 21:13:45 +0000 (21:13 +0000)]
[DWARFASTParser] Remove special cases for `llvm-gcc`

Reviewed by: aprantl, labath.

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

llvm-svn: 338638

6 years agoFix out-of-bounds read in Stream::PutCStringAsRawHex8
Raphael Isemann [Wed, 1 Aug 2018 21:07:18 +0000 (21:07 +0000)]
Fix out-of-bounds read in Stream::PutCStringAsRawHex8

Summary:
When I added the Stream unit test (r338488), the build bots failed due to an out-of-
bound reads when passing an empty string to the PutCStringAsRawHex8 method.
In r338491 I removed the test case to fix the bots.

This patch fixes this in PutCStringAsRawHex8 by always checking for the terminating
null character in the given string (instead of skipping it the first time). It also re-adds the
test case I removed.

Reviewers: vsk

Reviewed By: vsk

Subscribers: vsk, lldb-commits

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

llvm-svn: 338637

6 years ago[AST][2/4] Move the bit-fields from FunctionDecl and CXXConstructorDecl into DeclContext
Erich Keane [Wed, 1 Aug 2018 21:02:40 +0000 (21:02 +0000)]
[AST][2/4] Move the bit-fields from FunctionDecl and CXXConstructorDecl into DeclContext

This patch follows https://reviews.llvm.org/D49729
and is followed by https://reviews.llvm.org/D49733
and https://reviews.llvm.org/D49734.

Move the bits from FunctionDecl and CXXConstructorDecl
into DeclContext.

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

Patch By: bricci

llvm-svn: 338636

6 years ago[llvm-objcopy] Add missing -I command line flag alias for --input-target
Jordan Rupprecht [Wed, 1 Aug 2018 20:59:39 +0000 (20:59 +0000)]
[llvm-objcopy] Add missing -I command line flag alias for --input-target

llvm-svn: 338635

6 years ago[DebugInfo/DWARF] [4/4] Unify handling of compile and type units. NFC
Paul Robinson [Wed, 1 Aug 2018 20:54:11 +0000 (20:54 +0000)]
[DebugInfo/DWARF] [4/4] Unify handling of compile and type units. NFC

This is patch 4 of 4 NFC refactorings to handle type units and compile
units more consistently and with less concern about the object-file
section that they came from.

Patch 4 combines separate DWARFUnitVectors for compile and type units
into a single DWARFUnitVector that contains both.  For now the
implementation distinguishes compile units from type units by putting
all compile units at the front of the vector, reflecting the DWARF v4
distinction between .debug_info and .debug_types sections.  A future
patch will change this to allow the free mixing of unit kinds, as is
specified by DWARF v5.

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

llvm-svn: 338633

6 years ago[DebugInfo/DWARF] [3/4] Rename DWARFUnitSection to DWARFUnitVector. NFC
Paul Robinson [Wed, 1 Aug 2018 20:49:44 +0000 (20:49 +0000)]
[DebugInfo/DWARF] [3/4] Rename DWARFUnitSection to DWARFUnitVector. NFC

This is patch 3 of 4 NFC refactorings to handle type units and compile
units more consistently and with less concern about the object-file
section that they came from.

Patch 3 simply renames DWARFUnitSection to DWARFUnitVector, as the
object-file section of a unit is nearly irrelevant now.

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

llvm-svn: 338632

6 years agoAMDGPU: Use SPseudoInst helper
Matt Arsenault [Wed, 1 Aug 2018 20:49:00 +0000 (20:49 +0000)]
AMDGPU: Use SPseudoInst helper

llvm-svn: 338631

6 years ago[AST][1/4] Move the bit-fields from TagDecl, EnumDecl and RecordDecl into DeclContext
Erich Keane [Wed, 1 Aug 2018 20:48:16 +0000 (20:48 +0000)]
[AST][1/4] Move the bit-fields from TagDecl, EnumDecl and RecordDecl into DeclContext

DeclContext has a little less than 8 bytes free due to the alignment
requirements on 64 bits archs. This set of patches moves the
bit-fields from classes deriving from DeclContext into DeclContext.

On 32 bits archs this increases the size of DeclContext by 4 bytes
but this is balanced by an equal or larger reduction in the size
of the classes deriving from it.

On 64 bits archs the size of DeclContext stays the same but
most of the classes deriving from it shrink by 8/16 bytes.
(-print-stats diff here https://reviews.llvm.org/D49728)
When doing an -fsyntax-only on all of Boost this result
in a 3.6% reduction in the size of all Decls and
a 1% reduction in the run time due to the lower cache
miss rate.

For now CXXRecordDecl is not touched but there is
an easy 6 (if I count correctly) bytes gain available there
by moving some bits from DefinitionData into the free
space of DeclContext. This will be the subject of another patch.

This patch sequence also enable the possibility of refactoring
FunctionDecl: To save space some bits from classes deriving from
FunctionDecl were moved to FunctionDecl. This resulted in a
lot of stuff in FunctionDecl which do not belong logically to it.
After this set of patches however it is just a simple matter of
adding a SomethingDeclBitfields in DeclContext and moving the
bits to it from FunctionDecl.

This first patch introduces the anonymous union in DeclContext
and all the *DeclBitfields classes holding the bit-fields, and moves
the bits from TagDecl, EnumDecl and RecordDecl into DeclContext.

This patch is followed by https://reviews.llvm.org/D49732,
https://reviews.llvm.org/D49733 and https://reviews.llvm.org/D49734.

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

Patch By: bricci

llvm-svn: 338630

6 years ago[DebugInfo/DWARF] [2/4] Type units no longer in a std::deque. NFC
Paul Robinson [Wed, 1 Aug 2018 20:46:46 +0000 (20:46 +0000)]
[DebugInfo/DWARF] [2/4] Type units no longer in a std::deque. NFC

This is patch 2 of 4 NFC refactorings to handle type units and compile
units more consistently and with less concern about the object-file
section that they came from.

Patch 2 takes the existing std::deque<DWARFUnitSection> for type units
and makes it a simple DWARFUnitSection, simplifying the handling of
type units and making it more consistent with compile units.

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

llvm-svn: 338629

6 years ago[DebugInfo/DWARF] [1/4] De-templatize DWARFUnitSection. NFC
Paul Robinson [Wed, 1 Aug 2018 20:43:47 +0000 (20:43 +0000)]
[DebugInfo/DWARF] [1/4] De-templatize DWARFUnitSection. NFC

This is patch 1 of 4 NFC refactorings to handle type units and compile
units more consistently and with less concern about the object-file
section that they came from.

Patch 1 replaces the templated DWARFUnitSection with a non-templated
version. That is, instead of being a SmallVector of pointers to a
specific unit kind, it is not a SmallVector of pointers to the base
class for both type and compile units.  Virtual methods are magic.

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

llvm-svn: 338628

6 years ago[test] Fix %hmaptool path for standalone builds
Michal Gorny [Wed, 1 Aug 2018 20:38:22 +0000 (20:38 +0000)]
[test] Fix %hmaptool path for standalone builds

Fix %hmaptool path to refer to clang_tools_dir instead of
llvm_tools_dir, in order to fix standalone builds.  The tool is built
as part of clang, so it won't be found in installed LLVM tools.

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

llvm-svn: 338627

6 years agoAMDGPU: Improve hack for packing conversion ops
Matt Arsenault [Wed, 1 Aug 2018 20:13:58 +0000 (20:13 +0000)]
AMDGPU: Improve hack for packing conversion ops

Mutate the node type during selection when it
doesn't matter. This avoids an intermediate bitcast
node on targets with legal i16/f16.

Also fixes missing output modifiers on v_cvt_pkrtz_f32_f16,
which I assume are OK.

llvm-svn: 338619

6 years agoAMDGPU: Partially fix handling of packed amdgpu_ps arguments
Matt Arsenault [Wed, 1 Aug 2018 19:57:34 +0000 (19:57 +0000)]
AMDGPU: Partially fix handling of packed amdgpu_ps arguments

Fixes annoying limitations when writing tests.
Also remove more leftover code for manually scalarizing arguments
and return values.

llvm-svn: 338618

6 years ago[WebAssembly] Support for a ternary atomic RMW instruction
Heejin Ahn [Wed, 1 Aug 2018 19:40:28 +0000 (19:40 +0000)]
[WebAssembly] Support for a ternary atomic RMW instruction

Summary: This adds support for a ternary atomic RMW instruction: cmpxchg.

Reviewers: dschuff

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

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

llvm-svn: 338617

6 years ago[DEBUGINFO] Disable emission of the dwarf sections, but allow directives.
Alexey Bataev [Wed, 1 Aug 2018 19:38:20 +0000 (19:38 +0000)]
[DEBUGINFO] Disable emission of the dwarf sections, but allow directives.

Summary:
Added an option that allows to emit only '.loc' and '.file' kind debug
directives, but disables emission of the DWARF sections. Required for
NVPTX target to support profiling. It requires '.loc' and '.file'
directives, but does not require any DWARF sections for the profiler.

Reviewers: probinson, echristo, dblaikie

Subscribers: aprantl, JDevlieghere, llvm-commits

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

llvm-svn: 338616

6 years agolld-link: Remove /msvclto option
Nico Weber [Wed, 1 Aug 2018 19:00:49 +0000 (19:00 +0000)]
lld-link: Remove /msvclto option

This was useful for LTO bringup in lld-link while lld couldn't write PDBs. Now
that it can, this should no longer be needed. Hopefully the flag is obscure
enough and recent enough, that nobody uses it â€“ but if somebody should use it,
they should be able to just stop passing it and things should continue to work.

https://reviews.llvm.org/D50139

llvm-svn: 338615

6 years agoTry to fix FreeBSD build.
Zachary Turner [Wed, 1 Aug 2018 18:44:12 +0000 (18:44 +0000)]
Try to fix FreeBSD build.

It seems like perhaps because cstdio isn't directly included, the
compiler is accidentally picking up wprintf from somewhere else
and trying to call that.  Hopefully this fixes it.

llvm-svn: 338614

6 years ago[X86] Canonicalize the pattern for __builtin_ffs in a similar way to '__builtin_ffs...
Craig Topper [Wed, 1 Aug 2018 18:38:46 +0000 (18:38 +0000)]
[X86] Canonicalize the pattern for __builtin_ffs in a similar way to '__builtin_ffs + 5'

We now emit a move of -1 before the cmov and do the addition after the cmov just like the case with an extra addition.

This may be slightly worse for code size, but is more consistent with other compilers. And we might be able to hoist the mov -1 outside of loops.

llvm-svn: 338613

6 years ago[X86] Add test cases for the patterns used by __builtin_ffs.
Craig Topper [Wed, 1 Aug 2018 18:38:43 +0000 (18:38 +0000)]
[X86] Add test cases for the patterns used by __builtin_ffs.

We previously had tests for "__builtin_ffs + 5", but the SelectinoDAG without an extra addition came out slightly different.

llvm-svn: 338612

6 years agoFixed documentation for PutHex8 [NFC]
Raphael Isemann [Wed, 1 Aug 2018 18:38:19 +0000 (18:38 +0000)]
Fixed documentation for PutHex8 [NFC]

The previous documentation was just copied from PrintfAsRawHex8
but doesn't actually fit to the PutHex8 method.

llvm-svn: 338611

6 years agoAMDGPU/R600: Convert kernel param loads to use PARAM_I_ADDRESS
Jan Vesely [Wed, 1 Aug 2018 18:36:07 +0000 (18:36 +0000)]
AMDGPU/R600: Convert kernel param loads to use PARAM_I_ADDRESS

Non ext aligned i32 loads are still optimized to use CONSTANT_BUFFER (AS 8)

llvm-svn: 338610

6 years ago[llvm-undname Add an option to dump back references.
Zachary Turner [Wed, 1 Aug 2018 18:33:04 +0000 (18:33 +0000)]
[llvm-undname Add an option to dump back references.

This is useful for understanding how our demangler processes
back references and for investigating issues related to
back references.  But it's a feature only useful for debugging
the demangling process itself, so I'm marking it hidden.

llvm-svn: 338609

6 years ago[MS Demangler] Properly demangle templated operators.
Zachary Turner [Wed, 1 Aug 2018 18:32:47 +0000 (18:32 +0000)]
[MS Demangler] Properly demangle templated operators.

After we detected the presence of a template via ?$ we would proceed by
only demangling a simple unqualified name. This means we would fail on
templated operators (and perhaps other yet-to-be-determined things)

This was discovered while doing some refactoring to store richer
semantic information about the demangled types to pave the way for
overhauling the way we handle backreferences. (Specifically, we need to
defer recording or resolving back-references until a symbol has been
completely demangled, because we need to use information that only
occurs later in the mangled string to decide whether a back-reference
should be recorded.)

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

llvm-svn: 338608

6 years ago[MS Demangler] Don't crash as often when demangling.
Zachary Turner [Wed, 1 Aug 2018 18:32:28 +0000 (18:32 +0000)]
[MS Demangler] Don't crash as often when demangling.

We crash a lot on unrecognized inputs.  This adds some error
handling so we early out when we get unrecognized names.

llvm-svn: 338607

6 years agoFix sizeof(struct pthread) in glibc 2.14.
Kostya Serebryany [Wed, 1 Aug 2018 18:29:51 +0000 (18:29 +0000)]
Fix sizeof(struct pthread) in glibc 2.14.

Summary: Fixes: https://github.com/google/sanitizers/issues/966

Reviewers: kcc

Reviewed By: kcc

Subscribers: kubamracek

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

llvm-svn: 338606

6 years agoRemove outdated documentation for Stream's LEB128 methods
Raphael Isemann [Wed, 1 Aug 2018 18:28:54 +0000 (18:28 +0000)]
Remove outdated documentation for Stream's LEB128 methods

There is no format parameter for any of these methods.

llvm-svn: 338605

6 years ago[NFC] small addendum to r334242, FMF propagation
Michael Berg [Wed, 1 Aug 2018 18:06:49 +0000 (18:06 +0000)]
[NFC] small addendum to r334242, FMF propagation

llvm-svn: 338604

6 years ago[Android] Increase default new alignment for Android
Pirama Arumuga Nainar [Wed, 1 Aug 2018 17:55:34 +0000 (17:55 +0000)]
[Android] Increase default new alignment for Android

Summary:
Android's memory allocators also guarantee 8-byte alignment for 32-bit
architectures and 16-byte alignment for 64-bit.

Reviewers: rsmith

Subscribers: cfe-commits, srhines, enh

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

llvm-svn: 338603

6 years agoRevert r338455 "[constexpr] Support for constant evaluation of __builtin_memcpy and...
Hans Wennborg [Wed, 1 Aug 2018 17:51:23 +0000 (17:51 +0000)]
Revert r338455 "[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases)."

It caused asserts during Chromium builds, see reply on the cfe-commits thread.

> This is intended to permit libc++ to make std::copy etc constexpr
> without sacrificing the optimization that uses memcpy on
> trivially-copyable types.
>
> __builtin_strcpy and __builtin_wcscpy are not handled by this change.
> They'd be straightforward to add, but we haven't encountered a need for
> them just yet.

llvm-svn: 338602

6 years agoRevert r338596: Simplify. NFC.
Rui Ueyama [Wed, 1 Aug 2018 17:50:09 +0000 (17:50 +0000)]
Revert r338596: Simplify. NFC.

This reverts commit r338596 because it contained a functional change.
The patch accidentally replaced StringRef::startswith with the exact match.

llvm-svn: 338600

6 years ago[X86] FastISel fall back on !absolute_symbol GVs
Vlad Tsyrklevich [Wed, 1 Aug 2018 17:44:37 +0000 (17:44 +0000)]
[X86] FastISel fall back on !absolute_symbol GVs

Summary:
D25878, which added support for !absolute_symbol for normal X86 ISel,
did not add support for materializing references to absolute symbols for
X86 FastISel. This causes build failures because FastISel generates
PC-relative relocations for absolute symbols. Fall back to normal ISel
for references to !absolute_symbol GVs. Fix for PR38200.

Reviewers: pcc, craig.topper

Reviewed By: pcc

Subscribers: hiraditya, llvm-commits, kcc

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

llvm-svn: 338599

6 years ago[X86] Assign from a brace initializer to match style guide. NFCI.
Simon Pilgrim [Wed, 1 Aug 2018 17:43:38 +0000 (17:43 +0000)]
[X86] Assign from a brace initializer to match style guide. NFCI.

llvm-svn: 338598

6 years ago[clangd] allow clients to control the compilation database by passing in
Alex Lorenz [Wed, 1 Aug 2018 17:39:29 +0000 (17:39 +0000)]
[clangd] allow clients to control the compilation database by passing in
compilationDatabaseChanges in the 'workspace/didChangeConfiguration' request

This commit allows clangd to use an in-memory compilation database that's
controlled from the LSP client (-compile_args_from=lsp). It extends the
'workspace/didChangeConfiguration' request to allow the client to pass in a
compilation database subset that needs to be updated in the workspace.

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

llvm-svn: 338597

6 years agoSimplify. NFC.
Rui Ueyama [Wed, 1 Aug 2018 17:33:00 +0000 (17:33 +0000)]
Simplify. NFC.

llvm-svn: 338596

6 years ago[llvm-mca][x86] Add CMPXCHG instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 17:25:11 +0000 (17:25 +0000)]
[llvm-mca][x86] Add CMPXCHG instruction resource tests

I've put CMPXCHG8B/CMPXCHG16B in the same file, even though technically they are under separate CPUID bits all targets seem to support both (or neither).

llvm-svn: 338595

6 years agoIntroduce install-lldb-framework target
Alex Langford [Wed, 1 Aug 2018 17:21:18 +0000 (17:21 +0000)]
Introduce install-lldb-framework target

Summary:
Previously, I thought that install-liblldb would fail because CMake had
a bug related to installing frameworks. In actuality, I misunderstood the
semantics of `add_custom_target`: the DEPENDS option refers to specific files,
not targets. Therefore `install-liblldb` should rely on the actual liblldb
getting generated rather than the target.

This means that the previous patch I committed (to stop relying on CMake's
framework support) is no longer needed and has been reverted. Using CMake's
framework support greatly simplifies the implementation.

`install-lldb-framework` (and the stripped variant) is as simple as
depending on `install-liblldb` because CMake knows that liblldb was built as a
framework and will install the whole framework for you. The stripped variant
will depend on the stripped variants of individual tools only to ensure they
actually are stripped as well.

Reviewers: labath, sas

Subscribers: mgorny, lldb-commits

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

llvm-svn: 338594

6 years ago[x86] remove stale FIXME note from test; NFC
Sanjay Patel [Wed, 1 Aug 2018 17:18:50 +0000 (17:18 +0000)]
[x86] remove stale FIXME note from test; NFC

This was fixed with rL338592.

llvm-svn: 338593

6 years ago[SelectionDAG] fix bug in translating funnel shift with non-power-of-2 type
Sanjay Patel [Wed, 1 Aug 2018 17:17:08 +0000 (17:17 +0000)]
[SelectionDAG] fix bug in translating funnel shift with non-power-of-2 type

The bug is visible in the constant-folded x86 tests. We can't use the
negated shift amount when the type is not power-of-2:
https://rise4fun.com/Alive/US1r

...so in that case, use the regular lowering that includes a select
to guard against a shift-by-bitwidth. This path is improved by only
calculating the modulo shift amount once now.

Also, improve the rotate (with power-of-2 size) lowering to use
a negate rather than subtract from bitwidth. This improves the
codegen whether we have a rotate instruction or not (although
we can still see that we're not matching to a legal rotate in
all cases).

llvm-svn: 338592

6 years agoDon't ignore byte_order in Stream::PutMaxHex64
Raphael Isemann [Wed, 1 Aug 2018 17:12:58 +0000 (17:12 +0000)]
Don't ignore byte_order in Stream::PutMaxHex64

Reviewers: labath

Reviewed By: labath

Subscribers: zturner, lldb-commits

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

llvm-svn: 338591

6 years ago[StackFrame] Add doxygen comments to the StackFrameList API (NFC)
Vedant Kumar [Wed, 1 Aug 2018 17:08:11 +0000 (17:08 +0000)]
[StackFrame] Add doxygen comments to the StackFrameList API (NFC)

Clarify how StackFrameList works by documenting its methods. Also,
delete some dead code and insert some TODOs.

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

llvm-svn: 338590

6 years ago[StackFrame] Use early returns in ResetCurrentInlinedDepth (NFC)
Vedant Kumar [Wed, 1 Aug 2018 17:07:56 +0000 (17:07 +0000)]
[StackFrame] Use early returns in ResetCurrentInlinedDepth (NFC)

Using early returns in this function substantially reduces the nesting
level, making the logic easier to understand.

llvm-svn: 338589

6 years ago[StackFrame] Factor GetOnlyConcreteFramesUpTo out of GetFramesUpTo (NFC)
Vedant Kumar [Wed, 1 Aug 2018 17:07:40 +0000 (17:07 +0000)]
[StackFrame] Factor GetOnlyConcreteFramesUpTo out of GetFramesUpTo (NFC)

Splitting GetOnlyConcreteFramesUpTo will make it easier to implement
support for synthetic tail call frames in backtraces. This is just a
prep change, no functionality is affected.

llvm-svn: 338588

6 years ago[x86] add tests to show miscompile for funnel shift with weird size; NFC
Sanjay Patel [Wed, 1 Aug 2018 16:59:54 +0000 (16:59 +0000)]
[x86] add tests to show miscompile for funnel shift with weird size; NFC

llvm-svn: 338587

6 years ago[SelectionDAG] Make binop reduction matcher available to all targets
Simon Pilgrim [Wed, 1 Aug 2018 16:52:28 +0000 (16:52 +0000)]
[SelectionDAG] Make binop reduction matcher available to all targets

There is nothing x86-specific about this code, so it'd be nice to make this available for other targets to use in the future (and get it out of X86ISelLowering!).

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

llvm-svn: 338586

6 years ago[NFC][FunctionAttrs] Remove duplication in old/new PM pipeline
Johannes Doerfert [Wed, 1 Aug 2018 16:37:51 +0000 (16:37 +0000)]
[NFC][FunctionAttrs] Remove duplication in old/new PM pipeline

This patch just extract code into a separate function to remove some
duplication between the old and new pass manager pipeline. Due to the
different CGSCC iterators used, not all code duplication was eliminated.

llvm-svn: 338585

6 years ago[llvm-mca][x86] Add PREFETCHW instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 16:34:39 +0000 (16:34 +0000)]
[llvm-mca][x86] Add PREFETCHW instruction resource tests

These aren't just available via 3DNow! so test for them separately as well.

llvm-svn: 338584

6 years ago[llvm-mca][x86] Add PCLMUL instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 16:25:50 +0000 (16:25 +0000)]
[llvm-mca][x86] Add PCLMUL instruction resource tests

Renamed the btver2 file that already contained them - the other targets were only testing the AVX versions

llvm-svn: 338583

6 years ago[llvm-objcopy] Add support for --rename-section flags from gnu objcopy
Jordan Rupprecht [Wed, 1 Aug 2018 16:23:22 +0000 (16:23 +0000)]
[llvm-objcopy] Add support for --rename-section flags from gnu objcopy

Summary:
Add support for --rename-section flags from gnu objcopy.

Not all flags appear to have an effect for ELF objects, but allowing them would allow easier drop-in replacement. Other unrecognized flags are rejected.

This was only tested by comparing flags printed by "readelf -e <.o>" against the output of gnu vs llvm objcopy, it hasn't been tested to be valid beyond that.

Reviewers: jakehehrlich, alexshap

Subscribers: llvm-commits, paulsemel, alexshap

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

llvm-svn: 338582

6 years ago[OMPT,tests] Fix taskloop testcase scheduling effects
Joachim Protze [Wed, 1 Aug 2018 16:15:18 +0000 (16:15 +0000)]
[OMPT,tests] Fix taskloop testcase scheduling effects

The taskloop testcase had scheduling effects. Tasks of the taskloop would
sometimes be scheduled before all task were created. The testing is now
split into two phases. First, the task creation on the master is tested,
than the scheduling events of the tasks are tested. Thus, the order of
creation and scheduling events is irrelavant.

Patch by Simon Convent

Reviewed by: protze.joachim, Hahnfeld

Subscribers: openmp-commits

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

llvm-svn: 338580

6 years ago[llvm-mca] Correctly update the rank in `Scheduler::select()`.
Andrea Di Biagio [Wed, 1 Aug 2018 16:06:33 +0000 (16:06 +0000)]
[llvm-mca] Correctly update the rank in `Scheduler::select()`.

Found by inspection.

llvm-svn: 338579

6 years ago[Format] Fix for bug 35641
Ilya Biryukov [Wed, 1 Aug 2018 15:32:56 +0000 (15:32 +0000)]
[Format] Fix for bug 35641

Summary:
Bug was caused due to comments at the start of scope. For a code like:
```
int func() { //
  int b;
  int c;
}
```
the comment at the first line gets IndentAndNestingLevel (1,1) whereas
the following declarations get only (0,1) which prevents them from insertion
of a new scope. So, I changed the AlignTokenSequence to look at previous
*non-comment* token when deciding whether to introduce a new scope into
stack or not.

Patch by Kadir Cetinkaya!

Reviewers: rsmith, djasper

Reviewed By: djasper

Subscribers: lebedev.ri, cfe-commits, klimek

Tags: #clang

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

llvm-svn: 338578

6 years agoAdd missing condition
Filipe Cabecinhas [Wed, 1 Aug 2018 15:30:14 +0000 (15:30 +0000)]
Add missing condition

llvm-svn: 338577

6 years ago[llvm-mca][x86] Add SET/TEST instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 15:29:47 +0000 (15:29 +0000)]
[llvm-mca][x86] Add SET/TEST instruction resource tests

llvm-svn: 338576

6 years agoBump version number to 8.0.0svn
Hans Wennborg [Wed, 1 Aug 2018 15:22:27 +0000 (15:22 +0000)]
Bump version number to 8.0.0svn

llvm-svn: 338570

6 years agoAMDGPU: Allow fp32-denormals feature for r600 targets
Jan Vesely [Wed, 1 Aug 2018 15:04:36 +0000 (15:04 +0000)]
AMDGPU: Allow fp32-denormals feature for r600 targets

This was accidentally removed in r335942.

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

llvm-svn: 338569

6 years ago[ARM] Armv8.2-A FP16 vector intrinsics tests
Sjoerd Meijer [Wed, 1 Aug 2018 14:43:59 +0000 (14:43 +0000)]
[ARM] Armv8.2-A FP16 vector intrinsics tests

Clang support for the Armv8.2-A FP16 vector intrinsic was committed in
rC328277, but this was never followed up, i.e. the LLVM part is missing.

I've raised PR38404, and this is the first step to address this. I.e.,
this adds tests for the Armv8.2-A FP16 vector intrinsic, and thus shows
which intrinsics already work, and which need further work.

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

llvm-svn: 338568

6 years ago[llvm-exegesis] Provide a way to handle memory instructions.
Guillaume Chatelet [Wed, 1 Aug 2018 14:41:45 +0000 (14:41 +0000)]
[llvm-exegesis] Provide a way to handle memory instructions.

Summary:
And implement memory instructions on X86.

This fixes PR36906.

Reviewers: gchatelet

Reviewed By: gchatelet

Subscribers: lebedev.ri, filcab, mgorny, tschuett, RKSimon, llvm-commits

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

llvm-svn: 338567

6 years ago[UnrollAndJam] Add unroll_and_jam pragma handling
David Green [Wed, 1 Aug 2018 14:36:12 +0000 (14:36 +0000)]
[UnrollAndJam] Add unroll_and_jam pragma handling

This adds support for the unroll_and_jam pragma, to go with the recently
added unroll and jam pass. The name of the pragma is the same as is used
in the Intel compiler, and most of the code works the same as for unroll.

#pragma clang loop unroll_and_jam has been separated into a different
patch. This part adds #pragma unroll_and_jam with an optional count, and
#pragma no_unroll_and_jam to disable the transform.

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

llvm-svn: 338566

6 years ago[llvm-mca][x86] Add LEA instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 14:25:33 +0000 (14:25 +0000)]
[llvm-mca][x86] Add LEA instruction resource tests

We already added these to btver2, now add them to other targets, even though none of their models treat them specially (yet).

llvm-svn: 338565

6 years agoUpdate version to 8.0.0svn
Hans Wennborg [Wed, 1 Aug 2018 14:25:03 +0000 (14:25 +0000)]
Update version to 8.0.0svn

llvm-svn: 338564

6 years ago[llvm-mca][x86] Add more x86-64 system instruction resource tests
Simon Pilgrim [Wed, 1 Aug 2018 14:18:09 +0000 (14:18 +0000)]
[llvm-mca][x86] Add more x86-64 system instruction resource tests

CPUID, IN/OUT, INS/OUTS, INT, PAUSE, SCAS, UD2, XLAT

llvm-svn: 338563

6 years ago[FPEnv] Widen illegal width StrictFP vector operations as needed
Cameron McInally [Wed, 1 Aug 2018 14:17:19 +0000 (14:17 +0000)]
[FPEnv] Widen illegal width StrictFP vector operations as needed

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

llvm-svn: 338562

6 years agoUpdate docs version and clear release notes after 8.0.0 version bump
Hans Wennborg [Wed, 1 Aug 2018 14:14:09 +0000 (14:14 +0000)]
Update docs version and clear release notes after 8.0.0 version bump

llvm-svn: 338561

6 years agoUpdate docs version and clear release notes after 8.0.0 version bump
Hans Wennborg [Wed, 1 Aug 2018 14:11:32 +0000 (14:11 +0000)]
Update docs version and clear release notes after 8.0.0 version bump

llvm-svn: 338560