platform/upstream/llvm.git
8 years agoAMDGPU: WQM cleanups
Matt Arsenault [Wed, 13 Jul 2016 05:55:15 +0000 (05:55 +0000)]
AMDGPU: WQM cleanups

- Add new TTI instruction checks
- Don't use const for blocks that are mutated.
- Checking isBranch and isTerminator should be redundant

llvm-svn: 275252

8 years ago[ConstantFolding] Don't treat negative GEP offsets as positive
David Majnemer [Wed, 13 Jul 2016 05:16:16 +0000 (05:16 +0000)]
[ConstantFolding] Don't treat negative GEP offsets as positive

GEP offsets are signed, don't treat them as huge positive numbers.

llvm-svn: 275251

8 years ago[BFI] Add new LazyBFI analysis pass
Adam Nemet [Wed, 13 Jul 2016 05:01:48 +0000 (05:01 +0000)]
[BFI] Add new LazyBFI analysis pass

Summary:
This is necessary for D21771.  In order to add the hotness attribute to
optimization remarks we need BFI to be available in all passes that emit
optimization remarks.

However we don't want to pay for computing BFI unless the hotness
attribute is requested.

This is achieved by making BFI lazy at the very high-level through a new
analysis pass -- BFI is not calculated unless requested.

I am adding a test to check the laziness under D21771 where the first
user of the analysis is added.

Reviewers: hfinkel, dexonsmith, davidxl

Subscribers: davidxl, dexonsmith, llvm-commits

Differential Revision: http://reviews.llvm.org/D22141

llvm-svn: 275250

8 years ago[ConstantFolding] Cleanups
David Majnemer [Wed, 13 Jul 2016 04:22:12 +0000 (04:22 +0000)]
[ConstantFolding] Cleanups

No functional change is intended, just a minor cleanup.

llvm-svn: 275249

8 years agovim: separate the keywords into one per line
Saleem Abdulrasool [Wed, 13 Jul 2016 03:47:58 +0000 (03:47 +0000)]
vim: separate the keywords into one per line

This achieves the same result as previously by using line wrapping.  This allows
us to have one keyword per line which makes adding a new keyword significantly
easier, especially if they are inserted in a lexicographical sort order as you
no longer need to reflow the content around it.

This only does the keywords as that is the group which changes more often.

llvm-svn: 275248

8 years ago[ThinLTO/gold] ThinLTO internalization fixes
Teresa Johnson [Wed, 13 Jul 2016 03:42:41 +0000 (03:42 +0000)]
[ThinLTO/gold] ThinLTO internalization fixes

Internalization was missing cases where we originally had a local symbol
that was promoted eagerly but not actually exported. This is because we
were only internalizing the set of global (non-local) symbols that were
PREVAILAING_DEF_IRONLY. Instead, collect the set of global symbols that
are referenced outside of a single IR file, and skip internalization for
those.

llvm-svn: 275247

8 years ago[IR] Make getIndexedOffsetInType return a signed result
David Majnemer [Wed, 13 Jul 2016 03:42:38 +0000 (03:42 +0000)]
[IR] Make getIndexedOffsetInType return a signed result

A GEPed offset can go negative, the result of getIndexedOffsetInType
should according be a signed type.

llvm-svn: 275246

8 years agovim: add local_unnamed_addr keyword
Saleem Abdulrasool [Wed, 13 Jul 2016 03:36:05 +0000 (03:36 +0000)]
vim: add local_unnamed_addr keyword

The `local_unnamed_addr` was introduced in SVN r272709.  Update the syntax
highlighting rules.

llvm-svn: 275245

8 years ago[ConstantFold] Don't incorrectly infer inbounds on array GEP
David Majnemer [Wed, 13 Jul 2016 03:24:41 +0000 (03:24 +0000)]
[ConstantFold] Don't incorrectly infer inbounds on array GEP

The many levels of nesting inside the responsible code made it easy for
bugs to sneak in.  Flattening the logic makes it easier to see what's
going on.

llvm-svn: 275244

8 years ago[LoopVectorize] Further cleanups
David Majnemer [Wed, 13 Jul 2016 03:24:38 +0000 (03:24 +0000)]
[LoopVectorize] Further cleanups

No functional change is intended, just a minor cleanup.

llvm-svn: 275243

8 years agoCOFF: drop the dependency on LIB.EXE for implibs
Saleem Abdulrasool [Wed, 13 Jul 2016 03:19:27 +0000 (03:19 +0000)]
COFF: drop the dependency on LIB.EXE for implibs

lld currently relies on lib.exe in order to generate an empty import library.
The "empty" import library consists of 5 members:
  - first linker member
  - second linker member
  - Import Descriptor
  - NULL Import Descriptor
  - NULl Thunk

The first two entries (first and second linker members) are string tables which
are never updated.  Therefore, they may as well as not be present.  A subsequent
change to add that is probably warranted.  However, this does not prevent the
use of the linker.

The Import Descriptor is the content which is most important.  It provides an
Import Name Table entry for the library (as specified by the LIBRARY directive
in the DEF file).  Additionally, it contains undefined references to the NULL
Import Descriptor and the library NULL Thunk Data.  This ensures that the linker
will pull in the subsequent objects from the import library for the link.  The
Import Descriptor has a single symbol (__IMPORT_DESCRIPTOR_<Library>) which
contains 3 relocations, one to the INT (Import Name Table) entry, one to the ILT
(Import Lookup Table) entry, and one to the IAT (Import Address Table) entry.

The NULL Import Descriptor is the last import descriptor and terminates the
import descriptor array.  It contains a single symbol
(__NULL_IMPORT_DESCRIPTOR).

The NULL Thunk contains a single symbol (\x7f<Library>_NULL_THUNK_DATA) and
provides the terminator for the ILT and IAT.

These files are currently constructed manually following the example of the
Short Import Library format.  This is arguably less than ideal, and it may be
possible to use MCAssembler and feed it the fragments to construct the object.

The major difference between the LIB (LINK) generated objects and the ones
generated here is that they are all one section shorter (.debug$S) as they do
not contain the debug information and one symbol shorter (@comp.id) as they do
not contain the RICH signature.

Move the logic related to the librarian into a new source file (Librarian.cpp).

llvm-svn: 275242

8 years agoCodeGen: minor cleanup, NFC
Saleem Abdulrasool [Wed, 13 Jul 2016 02:58:44 +0000 (02:58 +0000)]
CodeGen: minor cleanup, NFC

Initialise more members in initializer lists.  Invert the condition that had
grown to be pretty confusing.  The `_objc_empty_vtable` is only used on macOS
<10.9.  This simplifies the code.  NFC.

llvm-svn: 275241

8 years ago[X86] Remove some seemingly unnecessary patterns that supported vector zext/sext...
Craig Topper [Wed, 13 Jul 2016 02:21:25 +0000 (02:21 +0000)]
[X86] Remove some seemingly unnecessary patterns that supported vector zext/sext with 256-bit source types producing a 256-bit result.

These patterns just extracted the source down to 128-bits to use the instructions. AVX512 seems to have blindly copied them over for VLX, but did not create similar patterns for 512-bit sources. So I'm hoping the backend can't actually produce these cases.

llvm-svn: 275240

8 years agoFix ScalarEvolutionExpander step scaling bug
Keno Fischer [Wed, 13 Jul 2016 01:28:12 +0000 (01:28 +0000)]
Fix ScalarEvolutionExpander step scaling bug

The expandAddRecExprLiterally function incorrectly transforms
`[Start + Step * X]` into `Step * [Start + X]` instead of the correct
transform of `[Step * X] + Start`.

This caused https://github.com/JuliaLang/julia/issues/14704#issuecomment-174126219
due to what appeared to be sufficiently complicated loop interactions.

Patch by Jameson Nash (jameson@juliacomputing.com).

Reviewers: sanjoy
Differential Revision: http://reviews.llvm.org/D16505

llvm-svn: 275239

8 years agoRemove another unused variable from r275216
Teresa Johnson [Tue, 12 Jul 2016 23:49:17 +0000 (23:49 +0000)]
Remove another unused variable from r275216

Remove another variable added in r275216 that was only used in debug
mode.

llvm-svn: 275238

8 years agoRevert r275223, which committed the wrong thing.
Sean Callanan [Tue, 12 Jul 2016 23:31:42 +0000 (23:31 +0000)]
Revert r275223, which committed the wrong thing.

llvm-svn: 275237

8 years agoAdd -m elf32_x86_64.
Rui Ueyama [Tue, 12 Jul 2016 23:28:33 +0000 (23:28 +0000)]
Add -m elf32_x86_64.

Patch by H.J. Lu.

This patch adds -m elf32_x86_64 to lld. But it doesn't generate working
x32 binaries.

Differential Revision: http://reviews.llvm.org/D22268

llvm-svn: 275236

8 years agoAdd ILP32 support to X86_64TargetInfo.
Rui Ueyama [Tue, 12 Jul 2016 23:28:31 +0000 (23:28 +0000)]
Add ILP32 support to X86_64TargetInfo.

Patch by H.J. Lu.

As x86-64 psABI supports both LP64 and ILP32, this patch adds <ELFT>
template to X86_64TargetInfo.

Differential Revision: http://reviews.llvm.org/D22287

llvm-svn: 275235

8 years agoSimplify. NFC.
Rui Ueyama [Tue, 12 Jul 2016 23:28:30 +0000 (23:28 +0000)]
Simplify. NFC.

Config->Pic is true if (Config->Pie || Config->Shared) is true,
so this extra check was redundant.

llvm-svn: 275234

8 years ago[CUDA] Use the multi-element remove function in EraseUnwantedCUDAMatches.
Justin Lebar [Tue, 12 Jul 2016 23:23:13 +0000 (23:23 +0000)]
[CUDA] Use the multi-element remove function in EraseUnwantedCUDAMatches.

Summary:
Bug pointed out by Benjamin Kramer in r264008.  I think the bug is
benign because by the time this is called, we should only have at most
two overloads to consider (either a host and a device overload, or a
host+device overload, but not all three).

Reviewers: tra

Subscribers: cfe-commits, bkramer

Differential Revision: http://reviews.llvm.org/D21914

llvm-svn: 275233

8 years ago[CUDA] Add additional testcases for EraseUnwantedCUDAMatches.
Justin Lebar [Tue, 12 Jul 2016 23:23:12 +0000 (23:23 +0000)]
[CUDA] Add additional testcases for EraseUnwantedCUDAMatches.

Summary:
Specifically, this patch adds testcases for all three calls to
EraseUnwantedCUDAMatches.  The addr-of-overloaded-fn test I accidentally
neutered in r264207, which moved much of
CodeGenCUDA/function-overload.cu into SemaCUDA/function-overload.cu.
The coverage from overloaded-delete test is new.

Reviewers: tra

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D21913

llvm-svn: 275232

8 years ago[CUDA] Don't assume that destructors can't be overloaded.
Justin Lebar [Tue, 12 Jul 2016 23:23:01 +0000 (23:23 +0000)]
[CUDA] Don't assume that destructors can't be overloaded.

Summary:
You can overload a destructor in CUDA, and SemaOverload needs to be
tweaked not to crash when it sees an explicit call to an overloaded
destructor.

Reviewers: rsmith

Subscribers: cfe-commits, tra

Differential Revision: http://reviews.llvm.org/D21912

llvm-svn: 275231

8 years ago[LV] Do not invalidate use-lists we're iterating over.
Michael Kuperstein [Tue, 12 Jul 2016 23:11:34 +0000 (23:11 +0000)]
[LV] Do not invalidate use-lists we're iterating over.

Should make sanitizers happier.

llvm-svn: 275230

8 years agoRemove assert since it was crashing the mutli process driver tests. Made the code...
Greg Clayton [Tue, 12 Jul 2016 23:07:50 +0000 (23:07 +0000)]
Remove assert since it was crashing the mutli process driver tests. Made the code behave correctly when indexes are out of range or the collection is empty and is "log enable lldb unwind" is enabled, log an error message.

llvm-svn: 275226

8 years agoThis doesn't compiler on Darwin. Skipping it.
Greg Clayton [Tue, 12 Jul 2016 23:06:28 +0000 (23:06 +0000)]
This doesn't compiler on Darwin. Skipping it.

llvm-svn: 275225

8 years agoAdd missing files for r275222
Dehao Chen [Tue, 12 Jul 2016 22:42:24 +0000 (22:42 +0000)]
Add missing files for r275222

New pass manager for LICM.

Summary: Port LICM to the new pass manager.

Reviewers: davidxl, silvas

Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini

Differential Revision: http://reviews.llvm.org/D21772

llvm-svn: 275224

8 years agoMark TagDecls as having external visible storage, like ContainerDecls.
Sean Callanan [Tue, 12 Jul 2016 22:42:07 +0000 (22:42 +0000)]
Mark TagDecls as having external visible storage, like ContainerDecls.

The lookup tables can get out of date during the lifetime of the object so we
need to preserve LLDB's ability to answer questions about TagDecls' contents.

<rdar://problem/20751935>

llvm-svn: 275223

8 years agoNew pass manager for LICM.
Dehao Chen [Tue, 12 Jul 2016 22:37:48 +0000 (22:37 +0000)]
New pass manager for LICM.

Summary: Port LICM to the new pass manager.

Reviewers: davidxl, silvas

Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini

Differential Revision: http://reviews.llvm.org/D21772

llvm-svn: 275222

8 years agoGlobalISel: freeze reserved regs after IRTranslator.
Tim Northover [Tue, 12 Jul 2016 22:23:42 +0000 (22:23 +0000)]
GlobalISel: freeze reserved regs after IRTranslator.

We can freeze the registers after the MachineFrameInfo has been configured (by
telling it about calls, inline asm, ...). This doesn't happen at all yet, but
will be part of IR translation.

Fixes -verify-machineinstrs assertion.

llvm-svn: 275221

8 years agoAMDGPU: Follow up to r275203
Matt Arsenault [Tue, 12 Jul 2016 21:41:32 +0000 (21:41 +0000)]
AMDGPU: Follow up to r275203

I meant to squash this into it.

llvm-svn: 275220

8 years agoRemove unused variable to fix bot failure from r275216
Teresa Johnson [Tue, 12 Jul 2016 21:29:05 +0000 (21:29 +0000)]
Remove unused variable to fix bot failure from r275216

Remove unused variable added in r275216. Should fix bot failure:
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/24665

llvm-svn: 275219

8 years agoThe test case I added is PowerPC specific but I accidentally
Nemanja Ivanovic [Tue, 12 Jul 2016 21:24:08 +0000 (21:24 +0000)]
The test case I added is PowerPC specific but I accidentally
had it in the wrong directory. Moved it to CodeGen/PowerPC.

Sorry about the noise.

llvm-svn: 275218

8 years ago[LV] Remove wrong assumption about LCSSA
Michael Kuperstein [Tue, 12 Jul 2016 21:24:06 +0000 (21:24 +0000)]
[LV] Remove wrong assumption about LCSSA

The LCSSA pass itself will not generate several redundant PHI nodes in a single
exit block. However, such redundant PHI nodes don't violate LCSSA form, and may
be introduced by passes that preserve LCSSA, and/or preserved by the LCSSA pass
itself. So, assuming a single PHI node per exit block is not safe.

llvm-svn: 275217

8 years agoRefactor indirect call promotion profitability analysis (NFC)
Teresa Johnson [Tue, 12 Jul 2016 21:13:44 +0000 (21:13 +0000)]
Refactor indirect call promotion profitability analysis (NFC)

Summary:
Refactored the profitability analysis out of the IC promotion pass and
into lib/Analysis so that it can be accessed by the summary index
builder in a follow-on patch to enable IC promotion in ThinLTO (D21932).

Reviewers: davidxl, xur

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D22182

llvm-svn: 275216

8 years ago[Power9] Add codegen for VSX word insert/extract instructions
Nemanja Ivanovic [Tue, 12 Jul 2016 21:00:10 +0000 (21:00 +0000)]
[Power9] Add codegen for VSX word insert/extract instructions

This patch corresponds to review:
http://reviews.llvm.org/D20239

It adds exploitation of XXINSERTW and XXEXTRACTUW instructions that
are useful in some cases for inserting and extracting vector elements of
v4[if]32 vectors.

llvm-svn: 275215

8 years agoReview fixes to lit documentation
Piotr Padlewski [Tue, 12 Jul 2016 20:59:17 +0000 (20:59 +0000)]
Review fixes to lit documentation

Reviewers: mehdi_amini

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D22245

llvm-svn: 275214

8 years ago[LoopAccessAnalysis] Some minor cleanups
David Majnemer [Tue, 12 Jul 2016 20:31:46 +0000 (20:31 +0000)]
[LoopAccessAnalysis] Some minor cleanups

Use range-base for loops.
Use auto when appropriate.

No functional change is intended.

llvm-svn: 275213

8 years ago[X86][AVX] Add support for target shuffle combining to VPERM2F128/VPERM2I128
Simon Pilgrim [Tue, 12 Jul 2016 20:27:32 +0000 (20:27 +0000)]
[X86][AVX] Add support for target shuffle combining to VPERM2F128/VPERM2I128

llvm-svn: 275212

8 years agoAdd more tests for LWG#2582. No code changes needed, just tests.
Marshall Clow [Tue, 12 Jul 2016 20:15:46 +0000 (20:15 +0000)]
Add more tests for LWG#2582. No code changes needed, just tests.

llvm-svn: 275211

8 years agolibc++: name anonymous structs
JF Bastien [Tue, 12 Jul 2016 20:14:52 +0000 (20:14 +0000)]
libc++: name anonymous structs

As discussed in http://reviews.llvm.org/D22073

llvm-svn: 275210

8 years ago[sanitizers] Allocate 12MB for stack instead of 134MB
Reid Kleckner [Tue, 12 Jul 2016 20:10:28 +0000 (20:10 +0000)]
[sanitizers] Allocate 12MB for stack instead of 134MB

The thread registry test was failing to allocate 25 threads with stack
size 134MB, which is pretty reasonable.

Also print the error code in our pthread wrappers in case this happens
again.

llvm-svn: 275209

8 years ago[SCCP] Constant fold structs if all the lattice value are constant.
Davide Italiano [Tue, 12 Jul 2016 19:54:19 +0000 (19:54 +0000)]
[SCCP] Constant fold structs if all the lattice value are constant.

Differential Revision:   http://reviews.llvm.org/D22269

llvm-svn: 275208

8 years ago[asan] Fix interception unittest on Windows64.
Etienne Bergeron [Tue, 12 Jul 2016 19:39:07 +0000 (19:39 +0000)]
[asan] Fix interception unittest on Windows64.

mov edi,edi is _not_ NOP in 64-bit, use 66,90h instead.
This bug was causing interception unittest to crash on
Windows64 (windows 8 and windows 10).

Credits to etienneb for finding the root cause.

Patch by: Wei Wang
Differential Revision: http://reviews.llvm.org/D22274

llvm-svn: 275207

8 years ago[ELF] Support for setting the base address
Petr Hosek [Tue, 12 Jul 2016 19:37:53 +0000 (19:37 +0000)]
[ELF] Support for setting the base address

The -image-base option allows for overriding the base address.

Differential Revision: http://reviews.llvm.org/D22116

llvm-svn: 275206

8 years ago[LoopVectorize] Assorted cleanups
David Majnemer [Tue, 12 Jul 2016 19:35:15 +0000 (19:35 +0000)]
[LoopVectorize] Assorted cleanups

Use range-based for loops instead of doing everything manually.
Use auto when appropriate.

No functional change is intended.

llvm-svn: 275205

8 years agoX86FixupBWInsts: No need for forward liveness analysis.
Matthias Braun [Tue, 12 Jul 2016 19:04:30 +0000 (19:04 +0000)]
X86FixupBWInsts: No need for forward liveness analysis.

With r274952 and r275201 in place there are no cases left where a
forward liveness analysis yields different results than a backward one.
So we can remove the forward stepping logic.

Differential Revision: http://reviews.llvm.org/D22083

llvm-svn: 275204

8 years agoAMDGPU: Fix verifier error with kill intrinsic
Matt Arsenault [Tue, 12 Jul 2016 19:01:23 +0000 (19:01 +0000)]
AMDGPU: Fix verifier error with kill intrinsic

Don't create a terminator in the middle of the block.
We should probably get rid of this intrinsic.

llvm-svn: 275203

8 years ago[PM] Port LoopIdiomRecognize Pass to new PM
Dehao Chen [Tue, 12 Jul 2016 18:45:51 +0000 (18:45 +0000)]
[PM] Port LoopIdiomRecognize Pass to new PM

Summary: Port LoopIdiomRecognize Pass to new PM

Reviewers: davidxl

Subscribers: davide, sanjoy, mzolotukhin, llvm-commits

Differential Revision: http://reviews.llvm.org/D22250

llvm-svn: 275202

8 years agoBranchFolding: Use LivePhysReg to update live in lists.
Matthias Braun [Tue, 12 Jul 2016 18:44:33 +0000 (18:44 +0000)]
BranchFolding: Use LivePhysReg to update live in lists.

Use LivePhysRegs with a backwards walking algorithm to update live in
lists, this way the results do not depend on the presence of kill flags
anymore.

This patch also reduces the number of registers added as live-in.
Previously all pristine registers as well as all sub registers of a
super register were added resulting in unnecessarily large live in
lists. This fixed https://llvm.org/PR25263.

Differential Revision: http://reviews.llvm.org/D22027

llvm-svn: 275201

8 years agoAMDGPU: Set isConvergent on v_cmpx* instructions
Matt Arsenault [Tue, 12 Jul 2016 18:41:03 +0000 (18:41 +0000)]
AMDGPU: Set isConvergent on v_cmpx* instructions

No test since these aren't used now, except for one place
in a pre-emit pass.

llvm-svn: 275200

8 years agoTweaks to the NSIndexPath formatter to enhance stability
Enrico Granata [Tue, 12 Jul 2016 18:33:52 +0000 (18:33 +0000)]
Tweaks to the NSIndexPath formatter to enhance stability

rdar://problem/25767901

llvm-svn: 275199

8 years agoAdd logging to Linux Host::GetProcessAndStatInfo.
Oleksiy Vyalov [Tue, 12 Jul 2016 18:14:27 +0000 (18:14 +0000)]
Add logging to Linux Host::GetProcessAndStatInfo.

llvm-svn: 275198

8 years agoAMDGPU: Add LLVM IR Intrinsic for v_lerp_u8
Wei Ding [Tue, 12 Jul 2016 18:02:14 +0000 (18:02 +0000)]
AMDGPU: Add LLVM IR Intrinsic for v_lerp_u8

Differential Revision: http://reviews.llvm.org/D22239

llvm-svn: 275197

8 years agoFix printing of debugging information in LiveIntervals::shrinkToUses
Krzysztof Parzyszek [Tue, 12 Jul 2016 17:55:28 +0000 (17:55 +0000)]
Fix printing of debugging information in LiveIntervals::shrinkToUses

Print VNI->def before calling VNI->markUnused(), since markUnused makes
the def invalid.

llvm-svn: 275196

8 years agoAArch64: fix return type of vqmovun_high_*.
Tim Northover [Tue, 12 Jul 2016 17:38:50 +0000 (17:38 +0000)]
AArch64: fix return type of vqmovun_high_*.

These should be returning an unsigned quantity.

llvm-svn: 275195

8 years agoAdd print/dump routines to LiveInterval::SubRange
Krzysztof Parzyszek [Tue, 12 Jul 2016 17:37:44 +0000 (17:37 +0000)]
Add print/dump routines to LiveInterval::SubRange

llvm-svn: 275194

8 years ago[PGO] Don't include full file path in static function profile counter names
Xinliang David Li [Tue, 12 Jul 2016 17:14:51 +0000 (17:14 +0000)]
[PGO] Don't include full file path in static function profile counter names

Patch by Jake VanAdrighem
Differential Revision: http://reviews.llvm.org/D22028

llvm-svn: 275193

8 years agoadd tests for missing DeMorgan's Law folds
Sanjay Patel [Tue, 12 Jul 2016 17:05:04 +0000 (17:05 +0000)]
add tests for missing DeMorgan's Law folds

llvm-svn: 275192

8 years agoFix for the mingw builder
David Majnemer [Tue, 12 Jul 2016 16:56:33 +0000 (16:56 +0000)]
Fix for the mingw builder

llvm-svn: 275191

8 years ago[ItaniumMangle] Correctly mangle BuiltinTemplateDecls
David Majnemer [Tue, 12 Jul 2016 16:48:17 +0000 (16:48 +0000)]
[ItaniumMangle] Correctly mangle BuiltinTemplateDecls

A BuiltinTemplateDecl has no underlying templated decl and as such they
cannot be relied upon for mangling.  The ItaniumMangler had some bugs
here which lead to crashes.

This fixes PR28519.

llvm-svn: 275190

8 years agoAdd CHECK line to test case. NFC.
Michael Kruse [Tue, 12 Jul 2016 16:37:50 +0000 (16:37 +0000)]
Add CHECK line to test case. NFC.

Check not only that the compiler is not crashing, but also whether the
probablematic part (The sequence of instructions simplified to '4') is reflected
in the output.

Thanks to Tobias for the hint.

llvm-svn: 275189

8 years agoauto-generate checks
Sanjay Patel [Tue, 12 Jul 2016 16:21:55 +0000 (16:21 +0000)]
auto-generate checks

llvm-svn: 275188

8 years agoauto-generate checks
Sanjay Patel [Tue, 12 Jul 2016 16:17:30 +0000 (16:17 +0000)]
auto-generate checks

llvm-svn: 275187

8 years agoauto-generate checks
Sanjay Patel [Tue, 12 Jul 2016 16:13:04 +0000 (16:13 +0000)]
auto-generate checks

llvm-svn: 275186

8 years agoIncrease "process load" timeout
Pavel Labath [Tue, 12 Jul 2016 16:06:31 +0000 (16:06 +0000)]
Increase "process load" timeout

Loading a dynamic library can take quite a long time, since it triggers a number of
shared-library-event stops for dependent libraries. This is especially true for remote targets
due to communication latency. Increase the default 500ms timeout to account for that.

Committing as obvious.

llvm-svn: 275185

8 years agoAdd tests for the meta.unary.props that do not require a complete type. This is part...
Marshall Clow [Tue, 12 Jul 2016 15:50:53 +0000 (15:50 +0000)]
Add tests for the meta.unary.props that do not require a complete type. This is part of LWG#2582

llvm-svn: 275184

8 years agoclang-format: [JS] Allow top-level conditionals again.
Daniel Jasper [Tue, 12 Jul 2016 15:45:53 +0000 (15:45 +0000)]
clang-format: [JS] Allow top-level conditionals again.

I am not sure exactly which test breakage Martin was trying to fix in
r273694. For now, fix the behavior for top-level conditionals, which
(surprisingly) are actually used somewhat commonly.

llvm-svn: 275183

8 years agoDisable the "gcd-io-race.mm" test to investigate bot hangs due to the test being...
Kuba Brecka [Tue, 12 Jul 2016 15:41:14 +0000 (15:41 +0000)]
Disable the "gcd-io-race.mm" test to investigate bot hangs due to the test being deadlocked.

llvm-svn: 275182

8 years ago[compiler-rt] Disable a test failing on windows.
Etienne Bergeron [Tue, 12 Jul 2016 15:33:25 +0000 (15:33 +0000)]
[compiler-rt] Disable a test failing on windows.

Summary:
The unittest is not working on windows. The "regexp.h" is not available and
gtest-port won't support regexp with operator '|'.

The test wasn't failing on 32-bits because of this check:
```
  if (SANITIZER_WORDSIZE != 64 || ASAN_AVOID_EXPENSIVE_TESTS) return;
```

```
[ RUN      ] AddressSanitizer.HugeMallocTest
C:/src/llvm/llvm/utils/unittest/googletest\src/gtest-port.cc(272): error: Failed
Syntax error at index 30 in simple regular expression "is located 1 bytes to the left|AddressSanitizer failed to allocate": '|' is unsupported.
C:/src/llvm/llvm/projects/compiler-rt/lib/asan/tests/asan_test.cc(308): error: Death test: Ident((char*)malloc(n_megs << 20))[-1] = 0
    Result: died but not with expected error.
  Expected: is located 1 bytes to the left|AddressSanitizer failed to allocate
```

See gtest-port.h:
```
  #elif GTEST_OS_WINDOWS

// <regex.h> is not available on Windows.  Use our own simple regex
// implementation instead.
# define GTEST_USES_SIMPLE_RE 1
```

Reviewers: rnk

Subscribers: llvm-commits, wang0109, kubabrecka, chrisha

Differential Revision: http://reviews.llvm.org/D22257

llvm-svn: 275181

8 years ago[compiler-rt] Enhance function padding detection for function interception
Etienne Bergeron [Tue, 12 Jul 2016 15:33:04 +0000 (15:33 +0000)]
[compiler-rt] Enhance function padding detection for function interception

Summary:
Many CRT (64-bits) functions contains a "hint-nop". The current padding
detection is not able to recognize the 10-bytes padding and the HotPatch
hooking technique cannot be used.

Other patterns may be discover and may be added later.

Reviewers: rnk

Subscribers: llvm-commits, wang0109, chrisha

Differential Revision: http://reviews.llvm.org/D22258

llvm-svn: 275180

8 years ago[MC] Flip llc's assembly comment preservation flag to have consistent
Nirav Dave [Tue, 12 Jul 2016 15:32:36 +0000 (15:32 +0000)]
[MC] Flip llc's assembly comment preservation flag to have consistent
orientation with llvm-mc.

llvm-svn: 275179

8 years ago[AArch64] Set FMOVS0 and FMOVD0 as isAsCheapAsAMove when needed.
Haicheng Wu [Tue, 12 Jul 2016 15:31:41 +0000 (15:31 +0000)]
[AArch64] Set FMOVS0 and FMOVD0 as isAsCheapAsAMove when needed.

If a subtarget has both ZCZeroing and CustomCheapAsMoveHandling features (now
only Kryo has both), set FMOVS0 and FMOVD0 isAsCheapAsAMove.

Differential Revision: http://reviews.llvm.org/D22256

llvm-svn: 275178

8 years agomark issue #2422 as complete; this was just a wording clarification
Marshall Clow [Tue, 12 Jul 2016 15:29:35 +0000 (15:29 +0000)]
mark issue #2422 as complete; this was just a wording clarification

llvm-svn: 275177

8 years agomark issue #2181 as complete; this was just a wording clarification
Marshall Clow [Tue, 12 Jul 2016 15:15:55 +0000 (15:15 +0000)]
mark issue #2181 as complete; this was just a wording clarification

llvm-svn: 275176

8 years ago[NPL] Increase ETXTBSY workaround sleep
Pavel Labath [Tue, 12 Jul 2016 15:13:11 +0000 (15:13 +0000)]
[NPL] Increase ETXTBSY workaround sleep

10ms does not seem to be enough all the time, go to 50.

llvm-svn: 275175

8 years ago[SCEVAffinator] Fix assertion checking for constant divisor.
Michael Kruse [Tue, 12 Jul 2016 15:08:47 +0000 (15:08 +0000)]
[SCEVAffinator] Fix assertion checking for constant divisor.

An assertion in visitSDivInstruction() checked whether the divisor is constant
by checking whether the argument is a ConstantInt. However, SCEVValidator allows
the divisor to be simplified to a constant by ScalarEvolution.

We synchronize the implementation of SCEVValidator and SCEVAffinator to both
accept simplified SCEV expressions.

llvm-svn: 275174

8 years ago[test] Fix category-based skipping
Pavel Labath [Tue, 12 Jul 2016 15:07:18 +0000 (15:07 +0000)]
[test] Fix category-based skipping

Summary:
LLDBTestResult.hardMarkAsSkipped marked the whole class as skipped when the first class in the
test failed the category check. This meant that subsequent tests in the same class did not run
even if they were passing the category filter. Fix that.

Reviewers: tfiala

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D22213

llvm-svn: 275173

8 years agoAdd option to disable __deallocate #warning
Saleem Abdulrasool [Tue, 12 Jul 2016 14:39:13 +0000 (14:39 +0000)]
Add option to disable __deallocate #warning

From r229162:
  Visual Studio's SAL extension uses a macro named __deallocate. This
  macro is used pervasively
Using -Werror when building for Windows can force the use of -Wno-#warnings
specifically because of this __deallocate #warning. Instead of forcing
builds to disable all #warnings, this option allows libc++ to be built
without this particular warning, while leaving other #warnings enabled.

Patch by Dave Lee!

llvm-svn: 275172

8 years agoPut the status in the right column
Marshall Clow [Tue, 12 Jul 2016 14:38:59 +0000 (14:38 +0000)]
Put the status in the right column

llvm-svn: 275171

8 years agoMark P0067 as 'postponed', because it will be revised before the next meeting
Marshall Clow [Tue, 12 Jul 2016 14:37:39 +0000 (14:37 +0000)]
Mark P0067 as 'postponed', because it will be revised before the next meeting

llvm-svn: 275170

8 years ago[Clang][AVX512] Making cosmetic changes
Michael Zuckerman [Tue, 12 Jul 2016 12:42:27 +0000 (12:42 +0000)]
[Clang][AVX512] Making cosmetic changes

llvm-svn: 275169

8 years ago[PowerPC] Cannonicalize applicable vector shift immediates as swaps
Nemanja Ivanovic [Tue, 12 Jul 2016 12:16:27 +0000 (12:16 +0000)]
[PowerPC] Cannonicalize applicable vector shift immediates as swaps

This patch corresponds to review:
http://reviews.llvm.org/D21358

Vector shifts that have the same semantics as a vector swap are cannonicalized
as such to provide additional opportunities for swap removal optimization to
remove unnecessary swaps.

llvm-svn: 275168

8 years ago[codeview] Improved array type support.
Amjad Aboud [Tue, 12 Jul 2016 12:06:34 +0000 (12:06 +0000)]
[codeview] Improved array type support.

Added support for:
1. Multi dimension array.
2. Array of structure type, which previously was declared incompletely.
3. Dynamic size array.
4. Array where element type is a typedef, volatile or constant (this should resolve PR28311).

Differential Revision: http://reviews.llvm.org/D21526

llvm-svn: 275167

8 years agoRecommit r275161 "[ELF] - Move section factory out from writer to make it reusable."
George Rimar [Tue, 12 Jul 2016 09:49:43 +0000 (09:49 +0000)]
Recommit r275161 "[ELF] - Move section factory out from writer to make it reusable."

With fix:
* fixed compilation error under linux:

template <class ELFT> class OutputSectionFactory {
...
  typedef typename SectionKey<ELFT::Is64Bits> Key;

changed to:
template <class ELFT> class OutputSectionFactory {
...
  typedef typename elf::SectionKey<ELFT::Is64Bits> Key;

llvm-svn: 275166

8 years agoFix a race on process exit
Pavel Labath [Tue, 12 Jul 2016 09:37:55 +0000 (09:37 +0000)]
Fix a race on process exit

Summary:
Process::SetExitStatus was popping the process io handler and resetting m_process_input_reader
shared pointer, which is not a safe thing to do as the function is called asynchronously and
other threads may be accessing the member variable. (E.g. if the process terminates really
quickly, the private state thread might only be in the process of pushing the handler on the
stack. Sometimes, this leads to deadlock, as the shared pointer's state gets corrupted by the
concurrent access.

Since the IOHandler will be popped anyway in Process:HandleProcessStateChangedEvent when the
exited event gets processed, doing the same in SetExitStatus seems to be unnecessary.

Reviewers: clayborg

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D22209

llvm-svn: 275165

8 years agoDwarf parser: don't lookup void typedefs in the DWO
Pavel Labath [Tue, 12 Jul 2016 09:26:30 +0000 (09:26 +0000)]
Dwarf parser: don't lookup void typedefs in the DWO

Summary:
void typedefs do not have a DW_AT_type attribute, so we end up with an empty encoding_uid
variable. These don't need to be looked up and trying to look that will assert in a debug build.

Reviewers: clayborg

Subscribers: lldb-commits, tberghammer

Differential Revision: http://reviews.llvm.org/D22218

llvm-svn: 275164

8 years agoRevert r275161 "[ELF] - Move section factory out from writer to make it reusable."
George Rimar [Tue, 12 Jul 2016 09:11:13 +0000 (09:11 +0000)]
Revert r275161 "[ELF] - Move section factory out from writer to make it reusable."

It broke build bot:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast/builds/39652

llvm-svn: 275163

8 years ago[ELF] - Make few members of Writer to be global and export them for reuse
George Rimar [Tue, 12 Jul 2016 08:50:42 +0000 (08:50 +0000)]
[ELF] - Make few members of Writer to be global and export them for reuse

Creating sections on linkerscript side requires some methods
that can be reused if are exported from writer.

Patch implements that change.

Differential revision: http://reviews.llvm.org/D20104

llvm-svn: 275162

8 years ago[ELF] - Move section factory out from writer to make it reusable.
George Rimar [Tue, 12 Jul 2016 08:38:04 +0000 (08:38 +0000)]
[ELF] - Move section factory out from writer to make it reusable.

Since linkerscript should create sections by itself
(if SECTIONS command is present),
then we might want to reuse the OutputSectionFactory (D19976 already do that now),
so this patch moves it out from writer cpp file for that purpose.

Differential revision: http://reviews.llvm.org/D19977

llvm-svn: 275161

8 years agoAMDGPU: Unify MOVRELSOffset and MOVRELDOffset
Nicolai Haehnle [Tue, 12 Jul 2016 08:12:16 +0000 (08:12 +0000)]
AMDGPU: Unify MOVRELSOffset and MOVRELDOffset

Summary:
Previously, constant index insertelements would be turned into SI_INDIRECT_DST,
which is bound to prevent some optimization opportunities. Worse, it mislead
the heuristic that decides whether immediates should be lowered to S_MOV_B32
or V_MOV_B32 in a way that resulted in unnecessary v_readfirstlanes.

Reviewers: arsenm, tstellarAMD

Subscribers: arsenm, kzhuravl, llvm-commits

Differential Revision: http://reviews.llvm.org/D22217

llvm-svn: 275160

8 years ago[ELF] - Add Id field to Version struct.
George Rimar [Tue, 12 Jul 2016 07:44:40 +0000 (07:44 +0000)]
[ELF] - Add Id field to Version struct.

That helps to avoid expressions like I + 2 in code
that assigns version number to symbols.

Change was suggested by Rui Ueyama.

Differential revision: http://reviews.llvm.org/D22086

llvm-svn: 275159

8 years ago[ELF] Support for symbol assignment in linker scripts within SECTIONS {} block
Eugene Leviant [Tue, 12 Jul 2016 06:39:48 +0000 (06:39 +0000)]
[ELF] Support for symbol assignment in linker scripts within SECTIONS {} block

llvm-svn: 275158

8 years ago[ASTMatchers] isSignedInteger() and isUnsignedInteger()
Clement Courbet [Tue, 12 Jul 2016 06:36:00 +0000 (06:36 +0000)]
[ASTMatchers] isSignedInteger() and isUnsignedInteger()

Complementary to isInteger(), these match signed and unsigned integers
respectively.

Review: http://reviews.llvm.org/D21989
llvm-svn: 275157

8 years agoRevert "New pass manager for LICM."
Vitaly Buka [Tue, 12 Jul 2016 06:25:32 +0000 (06:25 +0000)]
Revert "New pass manager for LICM."

Summary: This reverts commit r275118.

Subscribers: sanjoy, mehdi_amini

Differential Revision: http://reviews.llvm.org/D22259

llvm-svn: 275156

8 years ago[AVX512] Remove masked logic op intrinsics and autoupgrade them to native IR.
Craig Topper [Tue, 12 Jul 2016 05:27:53 +0000 (05:27 +0000)]
[AVX512] Remove masked logic op intrinsics and autoupgrade them to native IR.

llvm-svn: 275155

8 years ago[MS ABI] Support throwing/catching __unaligned types
David Majnemer [Tue, 12 Jul 2016 04:42:50 +0000 (04:42 +0000)]
[MS ABI] Support throwing/catching __unaligned types

We need to mark the appropriate bits in ThrowInfo and HandlerType so
that the personality routine can correctly handle qualification
conversions.

llvm-svn: 275154

8 years agoRemove unused parameters.
Rui Ueyama [Tue, 12 Jul 2016 03:49:41 +0000 (03:49 +0000)]
Remove unused parameters.

llvm-svn: 275153

8 years agoDump enum unique names.
Rui Ueyama [Tue, 12 Jul 2016 03:33:48 +0000 (03:33 +0000)]
Dump enum unique names.

llvm-svn: 275152

8 years agoAdd some safety checks to Platform::GetRemoteSharedModule so if it
Jason Molenda [Tue, 12 Jul 2016 03:25:22 +0000 (03:25 +0000)]
Add some safety checks to Platform::GetRemoteSharedModule so if it
is passed a ModuleSpec with a UUID, it won't accept a file it finds
with a matching FileSpec & ArchSpec, but with a different UUID.

<rdar://problem/27258864>

llvm-svn: 275151

8 years agoRe-enable TPI hash verification for enum records.
Rui Ueyama [Tue, 12 Jul 2016 03:25:03 +0000 (03:25 +0000)]
Re-enable TPI hash verification for enum records.

We didn't read unique names correctly. As a result, we computed
hashes on (non-)unique names instead of unique names.

llvm-svn: 275150