platform/upstream/llvm.git
5 years ago[X86][AVX] Regenerate tzcnt tests
Simon Pilgrim [Fri, 12 Oct 2018 13:24:51 +0000 (13:24 +0000)]
[X86][AVX] Regenerate tzcnt tests

llvm-svn: 344341

5 years ago[clang-tidy] White List Option for performance-unnecessary-value-param, performance...
Adam Balogh [Fri, 12 Oct 2018 13:05:21 +0000 (13:05 +0000)]
[clang-tidy] White List Option for performance-unnecessary-value-param, performance-unnecessary-copy-initialization and performance-for-range-copy

New option added to these three checks to be able to silence false positives on
types that are intentionally passed by value or copied. Such types are e.g.
intrusive reference counting pointer types like llvm::IntrusiveRefCntPtr. The
new option is named WhiteListTypes and can contain a semicolon-separated list of
names of these types. Regular expressions are allowed. Default is empty.

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

llvm-svn: 344340

5 years ago[llvm-mca] Remove method RegisterFileStatistics::initializeRegisterFileInfo(). NFC
Andrea Di Biagio [Fri, 12 Oct 2018 12:38:27 +0000 (12:38 +0000)]
[llvm-mca] Remove method RegisterFileStatistics::initializeRegisterFileInfo(). NFC

llvm-svn: 344339

5 years agoFix documentation of MachineInstr::getNumOperands
Sam Parker [Fri, 12 Oct 2018 12:26:37 +0000 (12:26 +0000)]
Fix documentation of MachineInstr::getNumOperands

The documentation stated "Access to explicit operands of the
instruction." This is misleading, as it also lists implicit operands.

Patch by Philip Ginsbach.

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

llvm-svn: 344338

5 years agoRemove top-level using declaration from header files, as these aliases leak.
Sam McCall [Fri, 12 Oct 2018 12:21:29 +0000 (12:21 +0000)]
Remove top-level using declaration from header files, as these aliases leak.

Reviewers: ilya-biryukov

Subscribers: arphaman, cfe-commits

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

llvm-svn: 344337

5 years ago[X86][SSE] Add extract_subvector(PSHUFB) -> PSHUFB(extract_subvector()) combine
Simon Pilgrim [Fri, 12 Oct 2018 12:10:34 +0000 (12:10 +0000)]
[X86][SSE] Add extract_subvector(PSHUFB) -> PSHUFB(extract_subvector()) combine

Fixes PR32160 by reducing the size of PSHUFB if we only use one of the lanes.

This approach can probably be generalized to handle any target shuffle (and any subvector index) but we have no test coverage at the moment.

llvm-svn: 344336

5 years ago[Tooling] Expose ExecutorName option.
Eric Liu [Fri, 12 Oct 2018 11:47:36 +0000 (11:47 +0000)]
[Tooling] Expose ExecutorName option.

llvm-svn: 344335

5 years ago[tblgen][llvm-mca] Add the ability to describe move elimination candidates via tablegen.
Andrea Di Biagio [Fri, 12 Oct 2018 11:23:04 +0000 (11:23 +0000)]
[tblgen][llvm-mca] Add the ability to describe move elimination candidates via tablegen.

This patch adds the ability to identify instructions that are "move elimination
candidates". It also allows scheduling models to describe processor register
files that allow move elimination.

A move elimination candidate is an instruction that can be eliminated at
register renaming stage.
Each subtarget can specify which instructions are move elimination candidates
with the help of tablegen class "IsOptimizableRegisterMove" (see
llvm/Target/TargetInstrPredicate.td).

For example, on X86, BtVer2 allows both GPR and MMX/SSE moves to be eliminated.
The definition of 'IsOptimizableRegisterMove' for BtVer2 looks like this:

```
def : IsOptimizableRegisterMove<[
  InstructionEquivalenceClass<[
    // GPR variants.
    MOV32rr, MOV64rr,

    // MMX variants.
    MMX_MOVQ64rr,

    // SSE variants.
    MOVAPSrr, MOVUPSrr,
    MOVAPDrr, MOVUPDrr,
    MOVDQArr, MOVDQUrr,

    // AVX variants.
    VMOVAPSrr, VMOVUPSrr,
    VMOVAPDrr, VMOVUPDrr,
    VMOVDQArr, VMOVDQUrr
  ], CheckNot<CheckSameRegOperand<0, 1>> >
]>;
```

Definitions of IsOptimizableRegisterMove from processor models of a same
Target are processed by the SubtargetEmitter to auto-generate a target-specific
override for each of the following predicate methods:

```
bool TargetSubtargetInfo::isOptimizableRegisterMove(const MachineInstr *MI)
const;
bool MCInstrAnalysis::isOptimizableRegisterMove(const MCInst &MI, unsigned
CPUID) const;
```

By default, those methods return false (i.e. conservatively assume that there
are no move elimination candidates).

Tablegen class RegisterFile has been extended with the following information:
 - The set of register classes that allow move elimination.
 - Maxium number of moves that can be eliminated every cycle.
 - Whether move elimination is restricted to moves from registers that are
   known to be zero.

This patch is structured in three part:

A first part (which is mostly boilerplate) adds the new
'isOptimizableRegisterMove' target hooks, and extends existing register file
descriptors in MC by introducing new fields to describe properties related to
move elimination.

A second part, uses the new tablegen constructs to describe move elimination in
the BtVer2 scheduling model.

A third part, teaches llm-mca how to query the new 'isOptimizableRegisterMove'
hook to mark instructions that are candidates for move elimination. It also
teaches class RegisterFile how to describe constraints on move elimination at
PRF granularity.

llvm-mca tests for btver2 show differences before/after this patch.

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

llvm-svn: 344334

5 years agoFix Wdocumentation warning. NFCI.
Simon Pilgrim [Fri, 12 Oct 2018 10:34:03 +0000 (10:34 +0000)]
Fix Wdocumentation warning. NFCI.

llvm-svn: 344333

5 years ago[X86][AVX] Add examples of shuffles that can be reduced to a cross-lane shuffle follo...
Simon Pilgrim [Fri, 12 Oct 2018 10:26:59 +0000 (10:26 +0000)]
[X86][AVX] Add examples of shuffles that can be reduced to a cross-lane shuffle followed by a in-lane permute

Suitable for lowering by D53148

llvm-svn: 344332

5 years ago[X86] Ignore float/double non-temporal loads (PR39256)
Simon Pilgrim [Fri, 12 Oct 2018 10:20:16 +0000 (10:20 +0000)]
[X86] Ignore float/double non-temporal loads (PR39256)

Scalar non-temporal loads were asserting instead of just being ignored.

Reduced from https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10895

llvm-svn: 344331

5 years ago[clangd] Support hover on "aut^o *".
Haojian Wu [Fri, 12 Oct 2018 10:11:02 +0000 (10:11 +0000)]
[clangd] Support hover on "aut^o *".

Reviewers: kadircet

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

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

llvm-svn: 344330

5 years ago[TSan] Cleanup TSan runtime support for Go on linux-aarch64. NFC.
Arnaud A. de Grandmaison [Fri, 12 Oct 2018 10:01:09 +0000 (10:01 +0000)]
[TSan] Cleanup TSan runtime support for Go on linux-aarch64. NFC.

This is a follow-up patch to r342541. After further investigations, only
48bits VMA size can be supported. As this is enforced in function
InitializePlatformEarly from lib/rt1/tsan_platform_linux.cc, the access
to the global variable vmaSize variable + switch can be removed. This
also addresses a comment from https://reviews.llvm.org/D52167.

vmaSize of 39 or 42bits are not compatible with a Go program memory
layout as the Go heap will not fit in the shadow memory area.

Patch by: Fangming Fang <Fangming.Fang@arm.com>

llvm-svn: 344329

5 years ago[LLDB] - Add support for DW_FORM_implicit_const.
George Rimar [Fri, 12 Oct 2018 09:46:15 +0000 (09:46 +0000)]
[LLDB] - Add support for DW_FORM_implicit_const.

LLDB does not support this DWARF5 form atm.
At least gcc emits it in some cases when doing optimization
for abbreviations.

As far I can tell, clang does not support it yet, though
the rest LLVM code already knows about it.

The patch adds the support.

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

llvm-svn: 344328

5 years agoSCCP: avoid caching DenseMap entry that might be invalidated.
Tim Northover [Fri, 12 Oct 2018 09:01:59 +0000 (09:01 +0000)]
SCCP: avoid caching DenseMap entry that might be invalidated.

Later calls to getValueState might insert entries into the ValueState map and
cause reallocation, invalidating a reference.

llvm-svn: 344327

5 years ago[mips] Mark fmaxl as a long double emulation routine
Stefan Maksimovic [Fri, 12 Oct 2018 08:18:38 +0000 (08:18 +0000)]
[mips] Mark fmaxl as a long double emulation routine

Failure was discovered upon running
projects/compiler-rt/test/builtins/Unit/divtc3_test.c
in a stage2 compiler build.

When compiling projects/compiler-rt/lib/builtins/divtc3.c,
a call to fmaxl within the divtc3 implementation had its
return values read from registers $2 and $3 instead of $f0 and $f2.
Include fmaxl in the list of long double emulation routines
to have its return value correctly interpreted as f128.

Almost exact issue here: https://reviews.llvm.org/D17760

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

llvm-svn: 344326

5 years ago[ThinLTO] Don't import GV which contains blockaddress
Eugene Leviant [Fri, 12 Oct 2018 07:24:02 +0000 (07:24 +0000)]
[ThinLTO] Don't import GV which contains blockaddress

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

llvm-svn: 344325

5 years agoFix bug where `config.asan_dynamic` in generated ASan `lit.site.cfg` files was set...
Dan Liew [Fri, 12 Oct 2018 02:36:19 +0000 (02:36 +0000)]
Fix bug where `config.asan_dynamic` in generated ASan `lit.site.cfg` files was set to `False` for macOS.

`config.asan_dynamic` should actually be `True` because dylibs are the
only supported form of the ASan runtime on Apple platforms.

Reviewers: kubamracek, george.karpenkov, samsonov

Subscribers: srhines, mgorny, #sanitizers, llvm-commits

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

llvm-svn: 344324

5 years agoRemove references to source/Plugins/SymbolFile/NativePDB.
Jason Molenda [Fri, 12 Oct 2018 00:53:55 +0000 (00:53 +0000)]
Remove references to source/Plugins/SymbolFile/NativePDB.

llvm-svn: 344323

5 years ago[analyzer] Fix a bug in unexplored_first_location_queue iteration order.
George Karpenkov [Fri, 12 Oct 2018 00:52:13 +0000 (00:52 +0000)]
[analyzer] Fix a bug in unexplored_first_location_queue iteration order.

Pointed out by Artem in post-commit review for https://reviews.llvm.org/D53058

llvm-svn: 344322

5 years ago[llvm-objcopy] Add -F|--target compatibility
Jordan Rupprecht [Fri, 12 Oct 2018 00:36:01 +0000 (00:36 +0000)]
[llvm-objcopy] Add -F|--target compatibility

Summary:
This change adds support for the GNU --target flag, which sets both --input-target and --output-target.

GNU objcopy doesn't do any checking for whether both --target and --{input,output}-target are used, and so it allows both, e.g. "--target A --output-target B" is equivalent to "--input-target A --output-target B" since the later command line flag would override earlier ones. This may be error prone, so I chose to implement it as an error if both are used. I'm not sure if anyone is actually using both.

Reviewers: jakehehrlich, jhenderson, alexshap

Reviewed By: jakehehrlich, alexshap

Subscribers: llvm-commits

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

llvm-svn: 344321

5 years ago[DAGCombiner] rearrange extract_element+bitcast fold; NFC
Sanjay Patel [Thu, 11 Oct 2018 23:56:56 +0000 (23:56 +0000)]
[DAGCombiner] rearrange extract_element+bitcast fold; NFC

I want to add another pattern here that includes scalar_to_vector,
so this makes that patch smaller. I was hoping to remove the
hasOneUse() check because it shouldn't be necessary for common
codegen, but an AMDGPU test has a comment suggesting that the
extra check makes things better on one of those targets.

llvm-svn: 344320

5 years agoUpdate user's manual documentation of profile remapping file to match
Richard Smith [Thu, 11 Oct 2018 23:48:11 +0000 (23:48 +0000)]
Update user's manual documentation of profile remapping file to match
llvm-cxxmap documentation.

Add a hint as to how to perform off-line profile data remapping.

llvm-svn: 344319

5 years agoRevert "DwarfDebug: Pick next location in case of missing location at block begin"
Matthias Braun [Thu, 11 Oct 2018 23:37:58 +0000 (23:37 +0000)]
Revert "DwarfDebug: Pick next location in case of missing location at block begin"

It originally triggered a stepping problem in the debugger, which could
be fixed by adjusting CodeGen/LexicalScopes.cpp however it seems we prefer
the previous behavior anyway.

See the discussion for details: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20181008/593833.html

This reverts commit r343880.
This reverts commit r343874.

llvm-svn: 344318

5 years agoRevert "AMDGPU/GlobalISel: Implement select for G_INSERT"
Tom Stellard [Thu, 11 Oct 2018 23:36:46 +0000 (23:36 +0000)]
Revert "AMDGPU/GlobalISel: Implement select for G_INSERT"

This reverts commit r344310.

The test case was failing on some bots.

llvm-svn: 344317

5 years agoOverride libcxxabi's .clang-format in the demangle directory
Erik Pilkington [Thu, 11 Oct 2018 23:30:56 +0000 (23:30 +0000)]
Override libcxxabi's .clang-format in the demangle directory

This directory uses LLVM style.

llvm-svn: 344316

5 years agoX86/TargetTransformInfo: Report div/rem constant immediate costs as TCC_Free
Matthias Braun [Thu, 11 Oct 2018 23:14:35 +0000 (23:14 +0000)]
X86/TargetTransformInfo: Report div/rem constant immediate costs as TCC_Free

DIV/REM by constants should always be expanded into mul/shift/etc.
patterns. Unfortunately the ConstantHoisting pass runs too early at a
point where the pattern isn't expanded yet. However after
ConstantHoisting hoisted some immediate the result may not expand
anymore. Also the hoisting typically doesn't make sense because it
operates on immediates that will change completely during the expansion.

Report DIV/REM as TCC_Free so ConstantHoisting will not touch them.

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

llvm-svn: 344315

5 years agomerge two near-identical functions createPrivateGlobalForString into one
Kostya Serebryany [Thu, 11 Oct 2018 23:03:27 +0000 (23:03 +0000)]
merge two near-identical functions createPrivateGlobalForString into one

Summary:
We have two copies of createPrivateGlobalForString (in asan and in esan).
This change merges them into one. NFC

Reviewers: vitalybuka

Reviewed By: vitalybuka

Subscribers: llvm-commits

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

llvm-svn: 344314

5 years ago[analyzer] Experiment with an iteration order only based on location, and not using...
George Karpenkov [Thu, 11 Oct 2018 22:59:59 +0000 (22:59 +0000)]
[analyzer] Experiment with an iteration order only based on location, and not using the stack frame

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

llvm-svn: 344313

5 years ago[analyzer] Avoid unneeded invalidation in RetainCountChecker
George Karpenkov [Thu, 11 Oct 2018 22:59:38 +0000 (22:59 +0000)]
[analyzer] Avoid unneeded invalidation in RetainCountChecker

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

llvm-svn: 344312

5 years ago[analyzer] Retain count checker for OSObject: recognize OSDynamicCast
George Karpenkov [Thu, 11 Oct 2018 22:59:16 +0000 (22:59 +0000)]
[analyzer] Retain count checker for OSObject: recognize OSDynamicCast

For now, tresting the cast as a no-op, and disregarding the case where
the output becomes null due to the type mismatch.

rdar://45174557

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

llvm-svn: 344311

5 years agoAMDGPU/GlobalISel: Implement select for G_INSERT
Tom Stellard [Thu, 11 Oct 2018 22:49:54 +0000 (22:49 +0000)]
AMDGPU/GlobalISel: Implement select for G_INSERT

Reviewers: arsenm

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits

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

llvm-svn: 344310

5 years ago[RISCV] Fix disassembling of fence instruction with invalid field
Ana Pazos [Thu, 11 Oct 2018 22:49:13 +0000 (22:49 +0000)]
[RISCV] Fix disassembling of fence instruction with invalid field

Summary:
Instruction with 0 in fence field being disassembled as fence , iorw.
Printing "unknown" to match GAS behavior.

This bug was uncovered by a LLVM MC Disassembler Protocol Buffer Fuzzer
for the RISC-V assembly language.

Reviewers: asb

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, jfb, PkmX, jocewei, asb

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

llvm-svn: 344309

5 years agoInline variable into assert to avoid unused variable warning.
Richard Trieu [Thu, 11 Oct 2018 22:42:41 +0000 (22:42 +0000)]
Inline variable into assert to avoid unused variable warning.

llvm-svn: 344308

5 years ago[llvm-objcopy] Factor out CopyConfig
Alexander Shaposhnikov [Thu, 11 Oct 2018 22:33:50 +0000 (22:33 +0000)]
[llvm-objcopy] Factor out CopyConfig

In this diff we move out CopyConfig from llvm-oobjcopy.cpp into a separate header CopyConfig.h
to enable us (in the future) reuse this class in the other implementations of objcopy (for coff, mach-o).
Additionally this enables us to unload the complexity from llvm-objcopy.cpp a little bit.

Test plan: make check-all

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

llvm-svn: 344307

5 years ago[llvm-pdbutil] Add missing pdb for test
Aaron Smith [Thu, 11 Oct 2018 22:25:55 +0000 (22:25 +0000)]
[llvm-pdbutil] Add missing pdb for test

llvm-svn: 344306

5 years agoRemove SymbolTable::addAbsolute().
Rui Ueyama [Thu, 11 Oct 2018 22:15:41 +0000 (22:15 +0000)]
Remove SymbolTable::addAbsolute().

addAbsolute() could be implemented as a non-member function.

llvm-svn: 344305

5 years ago[SampleFDO][NFC] Remove debugging log left over in the code.
Wei Mi [Thu, 11 Oct 2018 22:14:27 +0000 (22:14 +0000)]
[SampleFDO][NFC] Remove debugging log left over in the code.

llvm-svn: 344304

5 years ago[x86] add tests for extract_element; NFC
Sanjay Patel [Thu, 11 Oct 2018 22:04:36 +0000 (22:04 +0000)]
[x86] add tests for extract_element; NFC

The transform for this pattern has an unnecessary one-use limitation.

llvm-svn: 344303

5 years agoRemove `else` after `return`.
Rui Ueyama [Thu, 11 Oct 2018 21:57:52 +0000 (21:57 +0000)]
Remove `else` after `return`.

llvm-svn: 344302

5 years ago[x86] regenerate CHECKs; NFC
Sanjay Patel [Thu, 11 Oct 2018 21:44:38 +0000 (21:44 +0000)]
[x86] regenerate CHECKs; NFC

llvm-svn: 344301

5 years ago[ELF] Fix link failure with Android compressed relocation support.
Eli Friedman [Thu, 11 Oct 2018 21:43:06 +0000 (21:43 +0000)]
[ELF] Fix link failure with Android compressed relocation support.

Android uses a compressed relocation format, which means the size of the
relocation section isn't predictable based on the number of relocations,
and can vary if the layout changes in any way. To deal with this, the
linker normally runs multiple passes until the layout converges.

The layout should converge if the size of the compressed
relocation section increases monotonically: if the size of an encoded
offset increases by one byte, the larget value which can be encoded is
multiplied by 128, so the representable offsets grow much faster than
the size of the section itself.

The problem here is that there is no code to ensure the size of the
section doesn't decrease.  If the size of the relocation section
decreases, the relative offsets can increase due to alignment
restrictions, so that can force the size of the relocation section to
increase again.  The end result is an infinite loop; the loop gets cut
off after 10 iterations with the message "thunk creation not
converged".

To avoid this issue, this patch adds padding to the end of the
relocation section if its size would decrease.  The extra
padding is harmless because of the way the format is defined:
decoding stops after it reaches the number of relocations specified
in the section's header.

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

llvm-svn: 344300

5 years ago[Documentation] Rephrase modernize-deprecated-ios-base-aliases description. Add clang...
Eugene Zelenko [Thu, 11 Oct 2018 21:40:32 +0000 (21:40 +0000)]
[Documentation] Rephrase modernize-deprecated-ios-base-aliases description. Add clangd and clang-doc placeholders in Release Notes.

llvm-svn: 344299

5 years ago[llvm-pdbutil] Pretty print PDBSymbolUsingNamespace symbols
Aaron Smith [Thu, 11 Oct 2018 21:37:18 +0000 (21:37 +0000)]
[llvm-pdbutil] Pretty print PDBSymbolUsingNamespace symbols

Reviewers: rnk, zturner, llvm-commits

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

llvm-svn: 344298

5 years agoRevert "[Driver] Default Android toolchains to libc++."
Dan Albert [Thu, 11 Oct 2018 21:28:42 +0000 (21:28 +0000)]
Revert "[Driver] Default Android toolchains to libc++."

Breaks some of the Android bots because they aren't expecting to need
to explicitly set -stdlib.

This reverts commit 031072f5048654b01a40f639633de1ff4e2f3dc8.

llvm-svn: 344297

5 years ago[Driver] Default Android toolchains to libc++.
Dan Albert [Thu, 11 Oct 2018 20:58:43 +0000 (20:58 +0000)]
[Driver] Default Android toolchains to libc++.

Reviewers: srhines, pirama, EricWF

Reviewed By: srhines

Subscribers: cfe-commits

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

llvm-svn: 344296

5 years ago[Driver] Default to `-z now` and `-z relro` on Android.
Dan Albert [Thu, 11 Oct 2018 20:57:54 +0000 (20:57 +0000)]
[Driver] Default to `-z now` and `-z relro` on Android.

Summary:
RTLD_LAZY is not supported on Android (though failing to use `-z now`
will work since it is assumed by the loader).

RelRO is required.

Reviewers: srhines, pirama

Reviewed By: srhines

Subscribers: cfe-commits

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

llvm-svn: 344295

5 years agoRename SymbolTable::addRegular -> SymbolTable::addDefined.
Rui Ueyama [Thu, 11 Oct 2018 20:43:01 +0000 (20:43 +0000)]
Rename SymbolTable::addRegular -> SymbolTable::addDefined.

We have addAbsolute, addBitcode, addCommon, etc. addRegular looked a
bit inconsistent.

llvm-svn: 344294

5 years ago[Driver] Fix --hash-style choice for Android.
Dan Albert [Thu, 11 Oct 2018 20:39:32 +0000 (20:39 +0000)]
[Driver] Fix --hash-style choice for Android.

Summary:
Android supports GNU style hashes as of Marshmallow, so we should be
generating both styles for pre-M targets and GNU hashes for newer
targets.

Reviewers: srhines, pirama

Reviewed By: srhines

Subscribers: cfe-commits

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

llvm-svn: 344293

5 years agoRemove unused default arguments.
Rui Ueyama [Thu, 11 Oct 2018 20:38:34 +0000 (20:38 +0000)]
Remove unused default arguments.

llvm-svn: 344292

5 years ago[X86] Type legalize v2f32 loads by using an f64 load and a scalar_to_vector.
Craig Topper [Thu, 11 Oct 2018 20:36:06 +0000 (20:36 +0000)]
[X86] Type legalize v2f32 loads by using an f64 load and a scalar_to_vector.

On 64-bit targets the generic legalize will use an i64 load and a scalar_to_vector for us. But on 32-bit targets i64 isn't legal and the generic legalizer will end up emitting two 32-bit loads. We have DAG combines that try to put those two loads back together with pretty good success.

This patch instead uses f64 to avoid the splitting entirely. I've made it do the same for 64-bit mode for consistency and to keep the load in the fp domain.

There are a few things in here that look like regressions in 32-bit mode, but I believe they bring us closer to the 64-bit mode codegen. And that the 64-bit mode code could be better. I think those issues should be looked at separately.

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

llvm-svn: 344291

5 years agoRemove SymbolTable::addUndefined<ELF32LE>(StringRef).
Rui Ueyama [Thu, 11 Oct 2018 20:34:29 +0000 (20:34 +0000)]
Remove SymbolTable::addUndefined<ELF32LE>(StringRef).

Because we can implement the function as a non-member function.

llvm-svn: 344290

5 years ago[hwasan] relax a test
Kostya Serebryany [Thu, 11 Oct 2018 20:29:00 +0000 (20:29 +0000)]
[hwasan] relax a test

llvm-svn: 344289

5 years ago[python] [tests] Fix calling tests on Windows
Michal Gorny [Thu, 11 Oct 2018 20:26:55 +0000 (20:26 +0000)]
[python] [tests] Fix calling tests on Windows

Fix passing arguments to the Python test command to use 'env' builtin
CMake command, in order to fix compatibility with Windows.

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

llvm-svn: 344288

5 years ago[WebAssembly][NFC] Remove repetition of Defs = [ARGUMENTS] (fixed)
Thomas Lively [Thu, 11 Oct 2018 20:21:22 +0000 (20:21 +0000)]
[WebAssembly][NFC] Remove repetition of Defs = [ARGUMENTS] (fixed)

llvm-svn: 344287

5 years agoUpdate test of r344198 to work with release builds.
Warren Ristow [Thu, 11 Oct 2018 20:19:25 +0000 (20:19 +0000)]
Update test of r344198 to work with release builds.

llvm-svn: 344286

5 years ago[HIP] Remove unused irif bitcode from test
Aaron Enye Shi [Thu, 11 Oct 2018 19:52:32 +0000 (19:52 +0000)]
[HIP] Remove unused irif bitcode from test

This is part of previous commit [HIP] Replace irif library with hip.amdgcn.bc

Reviewers: yaxunl

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

llvm-svn: 344285

5 years ago[Hexagon] Restrict compound instructions with constant value.
Sumanth Gundapaneni [Thu, 11 Oct 2018 19:48:15 +0000 (19:48 +0000)]
[Hexagon] Restrict compound instructions with constant value.

Having a constant value operand in the compound instruction
is not always profitable. This patch improves coremark by ~4% on
Hexagon.

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

llvm-svn: 344284

5 years ago[Pipeliner] Use the Index from Topo instead of relying on NodeNum. (NFC)
Sumanth Gundapaneni [Thu, 11 Oct 2018 19:45:07 +0000 (19:45 +0000)]
[Pipeliner] Use the Index from Topo instead of relying on NodeNum. (NFC)

In future, if we may add any new DAG mutations other than artificial dependencies,
the NodeNum may not be valid. Instead the index from topological schedule DAG can be
used as long as we update it with the DAG change.

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

llvm-svn: 344283

5 years ago[Pipeliner] Fix the Schedule DAG topoligical order.
Sumanth Gundapaneni [Thu, 11 Oct 2018 19:42:46 +0000 (19:42 +0000)]
[Pipeliner] Fix the Schedule DAG topoligical order.

This patch updates the DAG change to reflect in the topological ordering
of the nodes.

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

llvm-svn: 344282

5 years ago[HIP] Replace irif library with hip.amdgcn.bc
Aaron Enye Shi [Thu, 11 Oct 2018 19:41:54 +0000 (19:41 +0000)]
[HIP] Replace irif library with hip.amdgcn.bc

No longer use irif amdgcn library, instead we will use the previous fence functions from new hip.amdgcn.bc bitcode library. Update hip-device-libs.hip test as well.

llvm-svn: 344281

5 years ago[WebAssembly] Revert rL344180, which was breaking expensive checks
Thomas Lively [Thu, 11 Oct 2018 18:45:48 +0000 (18:45 +0000)]
[WebAssembly] Revert rL344180, which was breaking expensive checks

llvm-svn: 344280

5 years agoRevert SymbolFileNativePDB plugin.
Zachary Turner [Thu, 11 Oct 2018 18:45:44 +0000 (18:45 +0000)]
Revert SymbolFileNativePDB plugin.

This was originally causing some test failures on non-Windows
platforms, which required fixes in the compiler and linker.  After
those fixes, however, other tests started failing.  Reverting
temporarily until I can address everything.

llvm-svn: 344279

5 years agoRevert r344197 "[MC][ELF] compute entity size for explicit sections"
Artem Dergachev [Thu, 11 Oct 2018 18:43:08 +0000 (18:43 +0000)]
Revert r344197 "[MC][ELF] compute entity size for explicit sections"

Revert r344206 "[MC][ELF] Fix section_mergeable_size.ll"

They were causing failures on too many important buildbots for too long.
Please revert eagerly if your fix takes more than a couple of hours to land!

llvm-svn: 344278

5 years agoFix this comment so it is consistent with all the others.
Jason Molenda [Thu, 11 Oct 2018 18:41:34 +0000 (18:41 +0000)]
Fix this comment so it is consistent with all the others.

llvm-svn: 344277

5 years agoRevert "clang-cl: Add /showFilenames option (PR31957)"
Sean Fertile [Thu, 11 Oct 2018 18:40:35 +0000 (18:40 +0000)]
Revert "clang-cl: Add /showFilenames option (PR31957)"

This reverts https://reviews.llvm.org/rL344234 which is causing failures on
several bots due to invalid llvm.linker.options.

llvm-svn: 344276

5 years agoDon't mark an LC_BUILD_VERSION as giving us a
Jason Molenda [Thu, 11 Oct 2018 18:37:53 +0000 (18:37 +0000)]
Don't mark an LC_BUILD_VERSION as giving us a
correct version if it has a major verison 0.

llvm-svn: 344275

5 years ago[PassManager/Sanitizer] Port of AddresSanitizer pass from legacy to new PassManager
Leonard Chan [Thu, 11 Oct 2018 18:31:51 +0000 (18:31 +0000)]
[PassManager/Sanitizer] Port of AddresSanitizer pass from legacy to new PassManager

This patch ports the legacy pass manager to the new one to take advantage of
the benefits of the new PM. This involved moving a lot of the declarations for
`AddressSantizer` to a header so that it can be publicly used via
PassRegistry.def which I believe contains all the passes managed by the new PM.

This patch essentially decouples the instrumentation from the legacy PM such
hat it can be used by both legacy and new PM infrastructure.

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

llvm-svn: 344274

5 years ago[OPENMP][NVPTX]Reduce memory use for globalized vars in
Alexey Bataev [Thu, 11 Oct 2018 18:30:31 +0000 (18:30 +0000)]
[OPENMP][NVPTX]Reduce memory use for globalized vars in
target/teams/distribute regions.

Previously introduced globalization scheme that uses memory coalescing
scheme may increase memory usage fr the variables that are devlared in
target/teams/distribute contexts. We don't need 32 copies of such
variables, just 1. Patch reduces memory use in this case.

llvm-svn: 344273

5 years ago[DAG] Fix Big Endian in Load-Store forwarding
Nirav Dave [Thu, 11 Oct 2018 18:28:59 +0000 (18:28 +0000)]
[DAG] Fix Big Endian in Load-Store forwarding

Summary:
Correct offset calculation in load-store forwarding for big-endian
targets.

Reviewers: rnk, RKSimon, waltl

Subscribers: sdardis, nemanjai, hiraditya, jrtc27, atanasyan, jsji, llvm-commits

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

llvm-svn: 344272

5 years ago[Hexagon] Eliminate potential sources of non-determinism in HCE
Krzysztof Parzyszek [Thu, 11 Oct 2018 18:26:02 +0000 (18:26 +0000)]
[Hexagon] Eliminate potential sources of non-determinism in HCE

Also, avoid comparing GUIDs when ordering global addresses, because
source file location can cause different GUID to be calculated. As a
result, a pair of symbols can compare "less" in one directory, but
"greater" in another.

llvm-svn: 344271

5 years ago[X86] Restore X86ISelDAGToDAG::matchBEXTRFromAnd. Teach address matching to create...
Craig Topper [Thu, 11 Oct 2018 18:06:07 +0000 (18:06 +0000)]
[X86] Restore X86ISelDAGToDAG::matchBEXTRFromAnd. Teach address matching to create a BEXTR pattern from a (shl (and X, mask >> C1) if C1 can be folded into addressing mode.

This is an alternative to D53080 since I think using a BEXTR for a shifted mask is definitely an improvement when the shl can be absorbed into addressing mode. The other cases I'm less sure about.

We already have several tricks for handling an and of a shift in address matching. This adds a new case for BEXTR.

I've moved the BEXTR matching code back to X86ISelDAGToDAG to allow it to match. I suppose alternatively we could directly emit a X86ISD::BEXTR node that isel could pattern match. But I'm trying to view BEXTR matching as an isel concern so DAG combine can see 'and' and 'shift' operations that are well understood. We did lose a couple cases from tbm_patterns.ll, but I think there are ways to recover that.

I've also put back the manual load folding code in matchBEXTRFromAnd that I removed a few months ago in r324939. This gives us some more freedom to make decisions based on the ability to fold a load. I haven't done anything with that yet.

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

llvm-svn: 344270

5 years agoBetter support for POSIX paths in PDBs.
Zachary Turner [Thu, 11 Oct 2018 18:01:55 +0000 (18:01 +0000)]
Better support for POSIX paths in PDBs.

While it doesn't make a *ton* of sense for POSIX paths to be
in PDBs, it's possible to occur in real scenarios involving
cross compilation.

The tools need to be able to handle this, because certain types
of debugging scenarios are possible without a running process
and so don't necessarily require you to be on a Windows system.
These include post-mortem debugging and binary forensics (e.g.
using a debugger to disassemble functions and examine symbols
without running the process).

There's changes in clang, LLD, and lldb in this patch.  After
this the cross-platform disassembly and source-list tests pass
on Linux.

Furthermore, the behavior of LLD can now be summarized by a much
simpler rule than before: Unless you specify /pdbsourcepath and
/pdbaltpath, the PDB ends up with paths that are valid within
the context of the machine that the link is performed on.

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

llvm-svn: 344269

5 years ago[llvm-nm] Fix crash when running with --print-armap on corrupt archives.
Jordan Rupprecht [Thu, 11 Oct 2018 17:55:11 +0000 (17:55 +0000)]
[llvm-nm] Fix crash when running with --print-armap on corrupt archives.

error() in llvm-nm intentionally does not return so that the callee can move on to future files/slices. When printing the archive map, this is not currently handled (the caller assumes that error() returns), so processing continues despite there being an error.

Also, change one return to a break, so that symbols can be printed even if the archive map is corrupt.

llvm-svn: 344268

5 years agoRevert "[Lex] TokenConcatenation now takes const Preprocessor"
Eric Liu [Thu, 11 Oct 2018 17:50:04 +0000 (17:50 +0000)]
Revert "[Lex] TokenConcatenation now takes const Preprocessor"

This reverts commit r344262. This was an unintentional commit.

llvm-svn: 344267

5 years agoclang-cl: set output of lit-test to a tmp file after r344234
Eric Liu [Thu, 11 Oct 2018 17:49:20 +0000 (17:49 +0000)]
clang-cl: set output of lit-test to a tmp file after r344234

Some test frameworks do not allow output file in CWD.

llvm-svn: 344266

5 years ago[COFF] Add and use a Wordsize field in Config. NFCI.
Martin Storsjo [Thu, 11 Oct 2018 17:45:58 +0000 (17:45 +0000)]
[COFF] Add and use a Wordsize field in Config. NFCI.

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

llvm-svn: 344265

5 years ago[COFF] Set proper pointer size alignment for LocalImportChunk
Martin Storsjo [Thu, 11 Oct 2018 17:45:51 +0000 (17:45 +0000)]
[COFF] Set proper pointer size alignment for LocalImportChunk

When these are accessed with load/store instructions on ARM64,
it becomes strictly necessary to have them properly aligned.

This fixes PR39228.

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

llvm-svn: 344264

5 years ago[python] [tests] Retab CMakeLists.txt for consistency (NFC)
Michal Gorny [Thu, 11 Oct 2018 17:45:35 +0000 (17:45 +0000)]
[python] [tests] Retab CMakeLists.txt for consistency (NFC)

llvm-svn: 344263

5 years ago[Lex] TokenConcatenation now takes const Preprocessor
Eric Liu [Thu, 11 Oct 2018 17:35:29 +0000 (17:35 +0000)]
[Lex] TokenConcatenation now takes const Preprocessor

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

llvm-svn: 344262

5 years agoRevert commit r344254; does not work with C++03
Marshall Clow [Thu, 11 Oct 2018 17:28:57 +0000 (17:28 +0000)]
Revert commit r344254; does not work with C++03

llvm-svn: 344261

5 years ago[tests] Remove Python tests from check-all due to breakage
Michal Gorny [Thu, 11 Oct 2018 17:25:05 +0000 (17:25 +0000)]
[tests] Remove Python tests from check-all due to breakage

Remove the Python tests from default target in order to fix two
kinds of breakage uncovered by enabling them: one failing test on Linux,
and problem with the test command on Windows.  Both to be addressed
in followup revisions.

llvm-svn: 344260

5 years agoImprove -Wshadow warnings with enumerators.
Aaron Ballman [Thu, 11 Oct 2018 16:40:18 +0000 (16:40 +0000)]
Improve -Wshadow warnings with enumerators.

Addresses PR24718 by checking for enumerators that shadow other enumerators. Catches issues like:

enum E1{e1};
void f(void) {
  enum E2{e1};
}

llvm-svn: 344259

5 years ago[tests] Include Python binding tests in CMake rules
Michal Gorny [Thu, 11 Oct 2018 16:32:54 +0000 (16:32 +0000)]
[tests] Include Python binding tests in CMake rules

Add a new CMake rule check-clang-python to run the Python bindings'
test suite, and include it in check-all.

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

llvm-svn: 344258

5 years agoSome improvements to the OpenBSD driver.
Brad Smith [Thu, 11 Oct 2018 16:13:44 +0000 (16:13 +0000)]
Some improvements to the OpenBSD driver.

- OpenBSD has switched to compiler_rt / libcxx
- Fix sysroot and lib path handling
- Some cleaning up

llvm-svn: 344257

5 years ago[clang-move] Remove clang:: qualifier
Fangrui Song [Thu, 11 Oct 2018 16:09:26 +0000 (16:09 +0000)]
[clang-move] Remove clang:: qualifier

Summary:
The use sites are enclosed by `namespace clang`, so clang:: is not
necessary. Many unqualified names have already been used, e.g. SourceManager SourceLocation LangOptions. This change makes the code terser and more consistent.

Reviewers: hokein

Reviewed By: hokein

Subscribers: ioeric, cfe-commits

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

llvm-svn: 344256

5 years ago[DAGCombiner] move comment closer to the corresponding code; NFC
Sanjay Patel [Thu, 11 Oct 2018 16:07:25 +0000 (16:07 +0000)]
[DAGCombiner] move comment closer to the corresponding code; NFC

llvm-svn: 344255

5 years agoPrefer to use the __is_XXX compiler intrinsics to the (old, busted) __has_XXX intrins...
Marshall Clow [Thu, 11 Oct 2018 15:38:07 +0000 (15:38 +0000)]
Prefer to use the __is_XXX compiler intrinsics to the (old, busted) __has_XXX intrinsics when implementing type traits. Thanks to Richard Smith for the patch.

llvm-svn: 344254

5 years ago[llvm-mca][BtVer2] Add tests for optimizable GPR register moves. NFC
Andrea Di Biagio [Thu, 11 Oct 2018 14:54:54 +0000 (14:54 +0000)]
[llvm-mca][BtVer2] Add tests for optimizable GPR register moves. NFC

llvm-svn: 344253

5 years ago[lldb] Surpress copy-elison warning.
Eric Liu [Thu, 11 Oct 2018 14:52:33 +0000 (14:52 +0000)]
[lldb] Surpress copy-elison warning.

llvm-svn: 344252

5 years ago[InstCombine] Fix SimplifyLibCalls erasing an instruction while IC still had referenc...
Amara Emerson [Thu, 11 Oct 2018 14:51:11 +0000 (14:51 +0000)]
[InstCombine] Fix SimplifyLibCalls erasing an instruction while IC still had references to it.

InstCombine keeps a worklist and assumes that optimizations don't
eraseFromParent() the instruction, which SimplifyLibCalls violates. This change
adds a new callback to SimplifyLibCalls to let clients specify their own hander
for erasing actions.

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

llvm-svn: 344251

5 years ago[lldb] rename MinOS::minor to MinOS::minor_version etc. NFC
Eric Liu [Thu, 11 Oct 2018 14:44:12 +0000 (14:44 +0000)]
[lldb] rename MinOS::minor to MinOS::minor_version etc. NFC

The constructor initializer minor(...)/major(...) can be confused with system
macros `#define minor(...)` on some platforms.

llvm-svn: 344250

5 years agoAdd support for 'dynamic_allocators' clause on 'requires' directive. Differential...
Patrick Lyster [Thu, 11 Oct 2018 14:41:10 +0000 (14:41 +0000)]
Add support for 'dynamic_allocators' clause on 'requires' directive. Differential Revision: https://reviews.llvm.org/D53079

llvm-svn: 344249

5 years ago[AARCH64][FIX] Emit data symbol for constant pool data
Diogo N. Sampaio [Thu, 11 Oct 2018 14:10:32 +0000 (14:10 +0000)]
[AARCH64][FIX] Emit data symbol for constant pool data

The ARM64 elf emitter would omit printing data
symbol for zero filled constant data. This patch
overrides the emitFill method as to enforce that
the symbol is correctly printed.

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

llvm-svn: 344248

5 years ago[Tooling] Move CompilationDatabasePlugin to the Registry header, where it's useful...
Sam McCall [Thu, 11 Oct 2018 13:42:53 +0000 (13:42 +0000)]
[Tooling] Move CompilationDatabasePlugin to the Registry header, where it's useful. NFC

llvm-svn: 344247

5 years ago[Sema][OpenCL] Improve diagnostics for not viable overloadable function candidates
Andrew Savonichev [Thu, 11 Oct 2018 13:35:34 +0000 (13:35 +0000)]
[Sema][OpenCL] Improve diagnostics for not viable overloadable function candidates

Summary:
Allowed extension name (that ought to be disabled) printing in the note message.

This diagnostic was proposed here: https://reviews.llvm.org/D51341

Reviewers: Anastasia, yaxunl

Reviewed By: Anastasia

Subscribers: cfe-commits, asavonic, bader

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

llvm-svn: 344246

5 years ago[clangd] Remove no-op crash handler, we never set a crash context.
Sam McCall [Thu, 11 Oct 2018 13:06:10 +0000 (13:06 +0000)]
[clangd] Remove no-op crash handler, we never set a crash context.

Summary:
I think this was just copied from somewhere with the belief that it actually
did some crash handling.

Of course the question arises: *should* we set one? I don't think so:
 - clangd used to crash a lot, now it's pretty stable, because we found and
   fixed the crashes. I think the long-term effects of crashing hard are good.
 - the implementation can't do any magic, it just uses longjmp to return without
   running any destructors by default. This is unsafe in general (e.g. mutexes
   won't unlock) and will certainly end up leaking memory. Whatever UB caused
   the crash may still stomp all over global state, etc.

I think there's an argument for isolating the background indexer (autoindex)
because it's not directly under the user's control, the crash surface is larger,
and it doesn't particularly need to interact with the rest of clangd.
But there, fork() and communicate through the FS is safer.

Reviewers: ioeric, ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 344245

5 years agoRevert r344241 as it broke multiple bots.
Aaron Ballman [Thu, 11 Oct 2018 12:57:29 +0000 (12:57 +0000)]
Revert r344241 as it broke multiple bots.

http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/10814
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/20613

llvm-svn: 344244

5 years agoGeneralize an IR verifier check to work with non-zero program address spaces
Dylan McKay [Thu, 11 Oct 2018 12:49:50 +0000 (12:49 +0000)]
Generalize an IR verifier check to work with non-zero program address spaces

This commit modifies an existing IR verifier check that
assumes all functions will be located in the default address
space 0.

Rather than using the default paramater value getPointerTo(AddrSpace=0),
explicitly specify the program memory address space from the data layout.

This only affects targets that specify a nonzero address space
in their data layouts. The only in-tree target that does this
is AVR.

llvm-svn: 344243

5 years ago[analyzer][UninitializedObjectChecker] Reports Loc fields pointing to themselves
Kristof Umann [Thu, 11 Oct 2018 11:58:53 +0000 (11:58 +0000)]
[analyzer][UninitializedObjectChecker] Reports Loc fields pointing to themselves

I've added a new functionality, the checker is now able to
detect and report fields pointing to themselves. I figured
this would fit well into the checker as there's no reason
for a pointer to point to itself instead of being nullptr.

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

llvm-svn: 344242