platform/upstream/llvm.git
8 years ago[PM/AA] Teach the new pass manager to use pass-by-lambda for registering
Chandler Carruth [Thu, 18 Feb 2016 09:45:17 +0000 (09:45 +0000)]
[PM/AA] Teach the new pass manager to use pass-by-lambda for registering
analysis passes, support pre-registering analyses, and use that to
implement parsing and pre-registering a custom alias analysis pipeline.

With this its possible to configure the particular alias analysis
pipeline used by the AAManager from the commandline of opt. I've updated
the test to show this effectively in use to build a pipeline including
basic-aa as part of it.

My big question for reviewers are around the APIs that are used to
expose this functionality. Are folks happy with pass-by-lambda to do
pass registration? Are folks happy with pre-registering analyses as
a way to inject customized instances of an analysis while still using
the registry for the general case?

Other thoughts of course welcome. The next round of patches will be to
add the rest of the alias analyses into the new pass manager and wire
them up here so that they can be used from opt. This will require
extending the (somewhate limited) functionality of AAManager w.r.t.
module passes.

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

llvm-svn: 261197

8 years ago[CLANG] [AVX512] [BUILTIN] Adding pmovsx{b|d|w}{w|d|q}{128|256|512} builtin to clang
Michael Zuckerman [Thu, 18 Feb 2016 09:09:34 +0000 (09:09 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding pmovsx{b|d|w}{w|d|q}{128|256|512} builtin to clang

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

llvm-svn: 261196

8 years ago[MSVC] Turn C++ EH on my default
David Majnemer [Thu, 18 Feb 2016 08:15:05 +0000 (08:15 +0000)]
[MSVC] Turn C++ EH on my default

Our support for C++ EH is sufficiently good that it makes sense to
enable support for it out of the box.

While we are here, update the MSVCCompatibility doc.

llvm-svn: 261195

8 years agoMake a stub version of MITests, instead of reverting.
NAKAMURA Takumi [Thu, 18 Feb 2016 07:37:17 +0000 (07:37 +0000)]
Make a stub version of MITests, instead of reverting.

Lit tends to find out-of-date unittests in the build tree.

FIXME: It may be reverted several days after.
llvm-svn: 261194

8 years ago[compiler-rt] Return correct size of struct pthread for glibc-2.12.2
Jonas Hahnfeld [Thu, 18 Feb 2016 07:08:26 +0000 (07:08 +0000)]
[compiler-rt] Return correct size of struct pthread for glibc-2.12.2

There seems to be a difference between 2.12.1 and 2.12.2 in 64-bit build.
Tested on Scientific Linux 6.6, based on RHEL.

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

llvm-svn: 261193

8 years agoSema: provide an extension warning for enable_if
Saleem Abdulrasool [Thu, 18 Feb 2016 06:49:31 +0000 (06:49 +0000)]
Sema: provide an extension warning for enable_if

Clang implements an enable_if attribute as an extension.  Hook up `-Wpedantic`
to issue an extension usage warning when __enable_if__ is used.

llvm-svn: 261192

8 years ago[Parse] Make sure we don't forget to diagnose typos in exprs
David Majnemer [Thu, 18 Feb 2016 06:37:44 +0000 (06:37 +0000)]
[Parse] Make sure we don't forget to diagnose typos in exprs

If ActOn*Op fails, we will forget to diagnose typos in the LHS of
expressions.

llvm-svn: 261191

8 years ago[WebAssembly] Don't use setRequiresStructuredCFG(true).
Dan Gohman [Thu, 18 Feb 2016 06:32:53 +0000 (06:32 +0000)]
[WebAssembly] Don't use setRequiresStructuredCFG(true).

While we still do want reducible control flow, the RequiresStructuredCFG
flag imposes more strict structure constraints than WebAssembly wants.
Unsetting this flag enables critical edge splitting and tail merging.

Also, disable TailDuplication explicitly, as it doesn't support virtual
registers, and was previously only disabled by the RequiresStructuredCFG
flag.

llvm-svn: 261190

8 years agoRevert "LiveIntervalAnalysis: Remove LiveVariables requirement" and LiveIntervalTest
Matthias Braun [Thu, 18 Feb 2016 05:21:43 +0000 (05:21 +0000)]
Revert "LiveIntervalAnalysis: Remove LiveVariables requirement" and LiveIntervalTest

The commit breaks stage2 compilation on PowerPC. Reverting for now while
this is analyzed. I also have to revert the LiveIntervalTest for now as
that depends on this commit.

Revert "LiveIntervalAnalysis: Remove LiveVariables requirement"
This reverts commit r260806.
Revert "Remove an unnecessary std::move to fix -Wpessimizing-move warning."
This reverts commit r260931.
Revert "Fix typo in LiveIntervalTest"
This reverts commit r260907.
Revert "Add unittest for LiveIntervalAnalysis::handleMove()"
This reverts commit r260905.

llvm-svn: 261189

8 years ago[TableGen,X86] Add NDEBUG check to a variable initialization that's only used by...
Craig Topper [Thu, 18 Feb 2016 04:54:32 +0000 (04:54 +0000)]
[TableGen,X86] Add NDEBUG check to a variable initialization that's only used by asserts. NFC

llvm-svn: 261188

8 years ago[TableGen,X86] Remove extra optional operand from RawFrm. RawFrm with 2 immediates...
Craig Topper [Thu, 18 Feb 2016 04:54:29 +0000 (04:54 +0000)]
[TableGen,X86] Remove extra optional operand from RawFrm. RawFrm with 2 immediates is handled by RawFrmImm8/RawFrmImm16.

llvm-svn: 261187

8 years ago[AMDGPU] Disassembler: Added basic disassembler for AMDGPU target
Tom Stellard [Thu, 18 Feb 2016 03:42:32 +0000 (03:42 +0000)]
[AMDGPU] Disassembler: Added basic disassembler for AMDGPU target

Changes:

- Added disassembler project
- Fixed all decoding conflicts in .td files
- Added DecoderMethod=“NONE” option to Target.td that allows to
  disable decoder generation for an instruction.
- Created decoding functions for VS_32 and VReg_32 register classes.
- Added stubs for decoding all register classes.
- Added several tests for disassembler

Disassembler only supports:

- VI subtarget
- VOP1 instruction encoding
- 32-bit register operands and inline constants

[Valery]

One of the point that requires to pay attention to is how decoder
conflicts were resolved:

- Groups of target instructions were separated by using different
  DecoderNamespace (SICI, VI, CI) using similar to AssemblerPredicate
  approach.

- There were conflicts in IMAGE_<> instructions caused by two
  different reasons:

1. dmask wasn’t specified for the output (fixed)
2. There are image instructions that differ only by the number of
   the address components but have the same encoding by the HW spec. The
   actual number of address components is determined by the HW at runtime
   using image resource descriptor starting from the VGPR encoded in an
   IMAGE instruction. This means that we should choose only one instruction
   from conflicting group to be the rule for decoder. I didn’t find the way
   to disable decoder generation for an arbitrary instruction and therefore
   made a onelinear fix to tablegen generator that would suppress decoder
   generation when DecoderMethod is set to “NONE”. This is a change that
   should be reviewed and submitted first. Otherwise I would need to
   specify different DecoderNamespace for every instruction in the
   conflicting group. I haven’t checked yet if DecoderMethod=“NONE” is not
   used in other targets.
3. IMAGE_GATHER decoder generation is for now disabled and to be
   done later.

[/Valery]

Patch By: Sam Kolton

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

llvm-svn: 261185

8 years ago[libFuzzer] fix the libFuzzer bot
Kostya Serebryany [Thu, 18 Feb 2016 02:02:40 +0000 (02:02 +0000)]
[libFuzzer] fix the libFuzzer bot

llvm-svn: 261184

8 years agoAdd usage instructions for TypeSystemMap::AddToMap.
Jim Ingham [Thu, 18 Feb 2016 01:28:22 +0000 (01:28 +0000)]
Add usage instructions for TypeSystemMap::AddToMap.

llvm-svn: 261183

8 years ago[sanitizer-coverage] allow -fsanitize-coverage=trace-pc w/o any other sanitizer and...
Kostya Serebryany [Thu, 18 Feb 2016 00:49:23 +0000 (00:49 +0000)]
[sanitizer-coverage] allow -fsanitize-coverage=trace-pc w/o any other sanitizer and w/o ...=[func,bb,edge]. This makes this syntax a superset of the GCC's syntax

llvm-svn: 261182

8 years agoCommit tests missing from r261180.
Eric Fiselier [Thu, 18 Feb 2016 00:21:09 +0000 (00:21 +0000)]
Commit tests missing from r261180.

llvm-svn: 261181

8 years agoGet <ext/hash_map> working again
Eric Fiselier [Thu, 18 Feb 2016 00:20:34 +0000 (00:20 +0000)]
Get <ext/hash_map> working again

llvm-svn: 261180

8 years agoFix Clang-tidy modernize-use-nullptr warnings; other minor fixes.
Eugene Zelenko [Thu, 18 Feb 2016 00:10:17 +0000 (00:10 +0000)]
Fix Clang-tidy modernize-use-nullptr warnings; other minor fixes.

llvm-svn: 261179

8 years ago[sanitizer-coverage] add a deprecation warning for -fsanitize-coverage=[1234]
Kostya Serebryany [Wed, 17 Feb 2016 23:57:17 +0000 (23:57 +0000)]
[sanitizer-coverage] add a deprecation warning for -fsanitize-coverage=[1234]

llvm-svn: 261178

8 years agoAdd upport for bitcast in the C API echo test
Amaury Sechet [Wed, 17 Feb 2016 23:55:59 +0000 (23:55 +0000)]
Add upport for bitcast in the C API echo test

llvm-svn: 261177

8 years ago[WebAssembly] Disable register stackification and coloring when not optimizing
Derek Schuff [Wed, 17 Feb 2016 23:20:43 +0000 (23:20 +0000)]
[WebAssembly] Disable register stackification and coloring when not optimizing

These passes are optimizations, and should be disabled when not
optimizing.
Also create an MCCodeGenInfo so the opt level is correctly plumbed to
the backend pass manager.
Also remove the command line flag for disabling register coloring;
running llc with -O0 should now be useful for debugging, so it's not
necessary.

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

llvm-svn: 261176

8 years agoAArch64: always clear kill flags up to last eliminated copy
Tim Northover [Wed, 17 Feb 2016 23:07:04 +0000 (23:07 +0000)]
AArch64: always clear kill flags up to last eliminated copy

After r261154, we were only clearing flags if the known-zero register was
originally live-in to the basic block, but we have to do it even if not when
more than one COPY has been eliminated, otherwise the user of the first COPY
may still have <kill> marked.

E.g.

BB#N:
    %X0 = COPY %XZR
    STRXui %X0<kill>, <fi#0>
    %X0 = COPY %XZR
    STRXui %X0<kill>, <fi#1>

We can eliminate both copies, X0 is not live-in, but we must clear the kill on
the first store.

Unfortunately, I've been unable to come up with a non-fragile test for this.
I've only seen it in the wild with regalloc-created spills, and attempts to
reproduce that in a reasonable way run afoul of COPY coalescing. Even volatile
asm clobbers were moved around. Should fix the aarch64 bot though.

llvm-svn: 261175

8 years agoAdd support for memory operations (load/store/gep) in C API echo test
Amaury Sechet [Wed, 17 Feb 2016 22:51:03 +0000 (22:51 +0000)]
Add support for memory operations (load/store/gep) in C API echo test

Summary: As per title.

Reviewers: bogner, chandlerc, echristo, dblaikie, joker.eph, Wallbraker

Subscribers: llvm-commits

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

llvm-svn: 261174

8 years ago[DebugInfoPDB] A few cleanups on PDB Variant class.
Zachary Turner [Wed, 17 Feb 2016 22:46:33 +0000 (22:46 +0000)]
[DebugInfoPDB] A few cleanups on PDB Variant class.

Also implements the PDBSymbolCompilandEnv::getValue() method,
which until now had been unimplemented specifically because
variant did not support string values.

llvm-svn: 261173

8 years agoMove LLVMCreateTargetData and LLVMDisposeTargetData together. NFC
Amaury Sechet [Wed, 17 Feb 2016 22:41:09 +0000 (22:41 +0000)]
Move LLVMCreateTargetData and LLVMDisposeTargetData together. NFC

llvm-svn: 261172

8 years agoDon't crash w/ a diagnostic range containing a null byte
David Majnemer [Wed, 17 Feb 2016 22:37:45 +0000 (22:37 +0000)]
Don't crash w/ a diagnostic range containing a null byte

We prematurely ended the line at the null byte which caused us to crash
down stream because we tried to reason about columns beyond the end of
the line.

llvm-svn: 261171

8 years ago[readobj] Remove uneeded braces in case statement.
Michael J. Spencer [Wed, 17 Feb 2016 22:30:41 +0000 (22:30 +0000)]
[readobj] Remove uneeded braces in case statement.

llvm-svn: 261170

8 years agoMake sure functions are generated even there is no global in the C API echo test
Amaury Sechet [Wed, 17 Feb 2016 22:30:05 +0000 (22:30 +0000)]
Make sure functions are generated even there is no global in the C API echo test

llvm-svn: 261169

8 years agoDwarfDebug: Don't drop the DIExpression just because a variable is
Adrian Prantl [Wed, 17 Feb 2016 22:20:08 +0000 (22:20 +0000)]
DwarfDebug: Don't drop the DIExpression just because a variable is
described by an immediate.

Found via http://reviews.llvm.org/D16867
Thanks to Paul Robinson for pointing this out.

<rdar://problem/24456528>

llvm-svn: 261168

8 years agoDbgVariable: Add an accessor for the common case of a single expression
Adrian Prantl [Wed, 17 Feb 2016 22:19:59 +0000 (22:19 +0000)]
DbgVariable: Add an accessor for the common case of a single expression
belonging to a single DBG_VALUE instruction.

NFC

llvm-svn: 261167

8 years agoApple simulator platforms don't have a shared cache to load Objective-C class informa...
Enrico Granata [Wed, 17 Feb 2016 22:14:41 +0000 (22:14 +0000)]
Apple simulator platforms don't have a shared cache to load Objective-C class information from
This code was doing the right thing for the iOS simulator, but not other simulator platforms

Fix it by making the warning not happen for all platforms whose name ends in "-simulator"
Since this code lives in AppleObjCRuntimeV2.cpp, this already only applies to Apple platforms by definition, so I am not too worried about conflicts with other vendors

llvm-svn: 261165

8 years agoAdd support for global variables in the C API echo test
Amaury Sechet [Wed, 17 Feb 2016 22:13:33 +0000 (22:13 +0000)]
Add support for global variables in the C API echo test

Summary: As per title

Reviewers: bogner, chandlerc, echristo, dblaikie, joker.eph, Wallbraker

Subscribers: llvm-commits

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

llvm-svn: 261164

8 years agoAdd 'nopartial' qualifier for availability attributes.
Manman Ren [Wed, 17 Feb 2016 22:05:48 +0000 (22:05 +0000)]
Add 'nopartial' qualifier for availability attributes.

An optional nopartial can be placed after the platform name.
int bar() __attribute__((availability(macosx,nopartial,introduced=10.12))

When deploying back to a platform version prior to when the declaration was
introduced, with 'nopartial', Clang emits an error specifying that the function
is not introduced yet; without 'nopartial', the behavior stays the same: the
declaration is `weakly linked`.

A member is added to the end of AttributeList to save the location of the
'nopartial' keyword. A bool member is added to AvailabilityAttr.

The diagnostics for 'nopartial' not-yet-introduced is handled in the same way as
we handle unavailable cases.

Reviewed by Doug Gregor and Jordan Rose.

rdar://23791325

llvm-svn: 261163

8 years ago[modules] Cache 'acceptable decl' lookups for namespaces. In projects with
Richard Smith [Wed, 17 Feb 2016 21:52:44 +0000 (21:52 +0000)]
[modules] Cache 'acceptable decl' lookups for namespaces. In projects with
thousands of modules, each of which declares the same namespace, linearly
scanning the redecl chain looking for a visible declaration (once for each leaf
module, for each use) performs very poorly. Namespace visibility can only
decrease when we leave a module during a module build step, and we never care
*which* visible declaration of a namespace we find, so we can cache this very
effectively.

This results in a 35x speedup on one of our internal build steps (2m -> 3.5s),
but is hard to unit test because it requires a very large number of modules.
Ideas for a test appreciated! No functionality change intended other than the
speedup.

llvm-svn: 261161

8 years ago[sanitizer-coverage] implement -fsanitize-coverage=trace-pc. This is similar to trace...
Kostya Serebryany [Wed, 17 Feb 2016 21:34:43 +0000 (21:34 +0000)]
[sanitizer-coverage] implement -fsanitize-coverage=trace-pc. This is similar to trace-bb, but has a different API. We already use the equivalent flag in GCC for Linux kernel fuzzing. We may be able to use this flag with AFL too

llvm-svn: 261159

8 years agoPR26606: Make abort_on_error.cc test more portable.
Alexey Samsonov [Wed, 17 Feb 2016 21:25:12 +0000 (21:25 +0000)]
PR26606: Make abort_on_error.cc test more portable.

llvm-svn: 261157

8 years agoNFC: Fix formating
Amaury Sechet [Wed, 17 Feb 2016 21:21:29 +0000 (21:21 +0000)]
NFC: Fix formating

llvm-svn: 261156

8 years agoFix warning on build without asserts
Tim Northover [Wed, 17 Feb 2016 21:16:59 +0000 (21:16 +0000)]
Fix warning on build without asserts

llvm-svn: 261155

8 years agoAArch64: improve redundant copy elimination.
Tim Northover [Wed, 17 Feb 2016 21:16:53 +0000 (21:16 +0000)]
AArch64: improve redundant copy elimination.

Mostly, this fixes the bug that if the CBZ guaranteed Xn but Wn was used, we
didn't sort out the use-def chain properly.

I've also made it check more than just the last instruction for a compatible
CBZ (so it can cope without fallthroughs). I'd have liked to do that
separately, but it's helps writing the test.

Finally, I removed some custom loops in favour of MachineInstr helpers and
refactored the control flow to flatten it and avoid possibly quadratic
iterations in blocks with many copies. NFC for these, just a general tidy-up.

llvm-svn: 261154

8 years ago[DebugInfoPDB] Raise getSymIndexId() up to PDBSymbol
Zachary Turner [Wed, 17 Feb 2016 21:13:34 +0000 (21:13 +0000)]
[DebugInfoPDB] Raise getSymIndexId() up to PDBSymbol

Every symbol, no matter what it's tag is, supports the method
getSymIndexId().  However, this was being forwarded on every
concrete symbol type, so if someone had a PDBSymbol that they
didn't know what type it was (or simply didn't have an instance
of the concrete symbol type), they would not be able to get its
index id.  This patch moves the method up to PDBSymbol, so that
no matter what type of object you have, you can always get its
id.

llvm-svn: 261153

8 years ago[DebugInfoPDB] Teach Variant to support string types.
Zachary Turner [Wed, 17 Feb 2016 21:13:15 +0000 (21:13 +0000)]
[DebugInfoPDB] Teach Variant to support string types.

The IDiaSymbol::getValue() method returns a variant.  Until now,
I had never encountered a string value, so the Variant wrapper
did not support VT_BSTR.  Now we have need to support string
values, so this patch just adds support for one extra type to
Variant.

llvm-svn: 261152

8 years ago[CodeGen] Fix an assert in CodeGenFunction::EmitFunctionEpilog
Akira Hatanaka [Wed, 17 Feb 2016 21:09:50 +0000 (21:09 +0000)]
[CodeGen] Fix an assert in CodeGenFunction::EmitFunctionEpilog

The assert is triggered because isObjCRetainableType() is called on the
canonicalized return type that has been stripped of the typedefs and
attributes attached to it. To fix this assert, this commit gets the
original return type from CurCodeDecl or BlockInfo and uses it instead
of the canoicalized type.

rdar://problem/24470031

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

llvm-svn: 261151

8 years agoFix PR26608: Make sanitizer_common tests more portable.
Alexey Samsonov [Wed, 17 Feb 2016 21:00:50 +0000 (21:00 +0000)]
Fix PR26608: Make sanitizer_common tests more portable.

llvm-svn: 261150

8 years ago[LIR] Avoid turning non-temporal stores into memset
Haicheng Wu [Wed, 17 Feb 2016 21:00:06 +0000 (21:00 +0000)]
[LIR] Avoid turning non-temporal stores into memset

This is to fix PR26645.

llvm-svn: 261149

8 years ago[TSan] PR26609: Fix two test cases.
Alexey Samsonov [Wed, 17 Feb 2016 20:40:10 +0000 (20:40 +0000)]
[TSan] PR26609: Fix two test cases.

llvm-svn: 261148

8 years agoDebug Info: Teach LdStHasDebugValue() (Local.cpp) about DIExpressions.
Adrian Prantl [Wed, 17 Feb 2016 20:02:25 +0000 (20:02 +0000)]
Debug Info: Teach LdStHasDebugValue() (Local.cpp) about DIExpressions.
This function is used to check whether a dbg.value intrinsic has already
been inserted, but without comparing the DIExpression, it would erroneously
fire on split aggregates and only the first scalar would survive.

Found via http://reviews.llvm.org/D16867.
<rdar://problem/24456528>

llvm-svn: 261145

8 years agoAdd static/const qualifiers to methods. NFC.
George Burgess IV [Wed, 17 Feb 2016 19:59:32 +0000 (19:59 +0000)]
Add static/const qualifiers to methods. NFC.

Split out this change as requested in D14933.

llvm-svn: 261144

8 years ago[libFuzzer] don't timeout when loading the corpus. Be a bit more verbose when loading...
Kostya Serebryany [Wed, 17 Feb 2016 19:42:34 +0000 (19:42 +0000)]
[libFuzzer] don't timeout when loading the corpus. Be a bit more verbose when loading large corpus.

llvm-svn: 261143

8 years ago[tests] Slightly improve a fix in r260669.
Alexey Samsonov [Wed, 17 Feb 2016 19:35:51 +0000 (19:35 +0000)]
[tests] Slightly improve a fix in r260669.

llvm-svn: 261142

8 years agoMention 'notail' attribute in 3.9 release notes.
Akira Hatanaka [Wed, 17 Feb 2016 19:35:47 +0000 (19:35 +0000)]
Mention 'notail' attribute in 3.9 release notes.

llvm-svn: 261141

8 years agoCreate masked gather and scatter intrinsics in Loop Vectorizer.
Elena Demikhovsky [Wed, 17 Feb 2016 19:23:04 +0000 (19:23 +0000)]
Create masked gather and scatter intrinsics in Loop Vectorizer.
Loop vectorizer now knows to vectorize GEP and create masked gather and scatter intrinsics for random memory access.

The feature is enabled on AVX-512 target.
Differential Revision: http://reviews.llvm.org/D15690

llvm-svn: 261140

8 years agoFix load alignement when unpacking aggregates structs
Amaury Sechet [Wed, 17 Feb 2016 19:21:28 +0000 (19:21 +0000)]
Fix load alignement when unpacking aggregates structs

Summary: Store and loads unpacked by instcombine do not always have the right alignement. This explicitely compute the alignement and set it.

Reviewers: dblaikie, majnemer, reames, hfinkel, joker.eph

Subscribers: llvm-commits

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

llvm-svn: 261139

8 years agoRevert "Reapply commit r258404 with fix."
David Majnemer [Wed, 17 Feb 2016 19:02:36 +0000 (19:02 +0000)]
Revert "Reapply commit r258404 with fix."

This reverts commit r259357, it caused PR26629.

llvm-svn: 261137

8 years agoEnable SafeStack for CloudABI.
Ed Schouten [Wed, 17 Feb 2016 18:56:20 +0000 (18:56 +0000)]
Enable SafeStack for CloudABI.

Summary:
I've got a patchset in my home directory to integrate support for
SafeStack into CloudABI's C library. All of the CloudABI unit tests
still seem to pass. Pretty sweet!

This change adds the necessary changes to Clang to make
-fsanitize=safe-stack work on CloudABI. Without it, passing this command
line flag throws an error.

Reviewers: eugenis, samsonov

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

llvm-svn: 261135

8 years ago[ObjCARC] Handle ARCInstKind::ClaimRV in OptimizeIndividualCalls.
Frederic Riss [Wed, 17 Feb 2016 18:51:27 +0000 (18:51 +0000)]
[ObjCARC] Handle ARCInstKind::ClaimRV in OptimizeIndividualCalls.

When support for objc_unsafeClaimAutoreleasedReturnValue has been added to the
ARC optimizer in r258970, one case was missed which would lead the optimizer
to execute an llvm_unreachable. In this case, just handle ClaimRV in the same
way we handle RetainRV.

llvm-svn: 261134

8 years ago[Hexagon] Replacing reference/dereference with reference cast.
Colin LeMahieu [Wed, 17 Feb 2016 18:50:21 +0000 (18:50 +0000)]
[Hexagon] Replacing reference/dereference with reference cast.

llvm-svn: 261133

8 years agoRemove superfluous semicolon.
Nico Weber [Wed, 17 Feb 2016 18:48:08 +0000 (18:48 +0000)]
Remove superfluous semicolon.

llvm-svn: 261128

8 years agoRevert r261070, it caused PR26652 / PR26653.
Nico Weber [Wed, 17 Feb 2016 18:47:29 +0000 (18:47 +0000)]
Revert r261070, it caused PR26652 / PR26653.

llvm-svn: 261127

8 years ago[WinEH] Optimize WinEH state stores
David Majnemer [Wed, 17 Feb 2016 18:37:11 +0000 (18:37 +0000)]
[WinEH] Optimize WinEH state stores

32-bit x86 Windows targets use a linked-list of nodes allocated on the
stack, referenced to via thread-local storage.  The personality routine
interprets one of the fields in the node as a 'state number' which
indicates where the personality routine should transfer control.

State transitions are possible only before call-sites which may throw
exceptions.  Our previous scheme had us update the state number before
all call-sites which may throw.

Instead, we can try to minimize the number of times we need to store by
reasoning about the nearest store which dominates the current call-site.
If the last store agrees with the current call-site, then we know that
the state-update is redundant and can be elided.

This is largely straightforward: an RPO walk of the blocks allows us to
correctly forward propagate the information when the function is a DAG.
Currently, loops are not handled optimally and may trigger superfluous
state stores.

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

llvm-svn: 261122

8 years ago[tsan] Fix signal number definitions for FreeBSD
Ed Maste [Wed, 17 Feb 2016 18:25:27 +0000 (18:25 +0000)]
[tsan] Fix signal number definitions for FreeBSD

The change in r253983 for OS X also applies to FreeBSD.

llvm-svn: 261121

8 years ago[tsan] Fix build warnings on FreeBSD
Ed Maste [Wed, 17 Feb 2016 18:22:50 +0000 (18:22 +0000)]
[tsan] Fix build warnings on FreeBSD

The change in r252165 for OS X applies to FreeBSD as well.

llvm-svn: 261120

8 years agoAdd a profile summary class specific to instrumentation profiles.
Easwaran Raman [Wed, 17 Feb 2016 18:18:47 +0000 (18:18 +0000)]
Add a profile summary class specific to instrumentation profiles.

Modify ProfileSummary class to make it not instrumented profile specific.
Add a new InstrumentedProfileSummary class that inherits from ProfileSummary.

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

llvm-svn: 261119

8 years ago[Hexagon] Loop instructions don't need special processing. Extension and fitting...
Colin LeMahieu [Wed, 17 Feb 2016 18:14:05 +0000 (18:14 +0000)]
[Hexagon] Loop instructions don't need special processing.  Extension and fitting is performed by generic code and the comment is incorrect, loops don't have a separate extended opcode.

llvm-svn: 261118

8 years ago[NVPTX] Annotate convergent intrinsics as convergent.
Justin Lebar [Wed, 17 Feb 2016 17:46:54 +0000 (17:46 +0000)]
[NVPTX] Annotate convergent intrinsics as convergent.

Summary:
Previously the machine instructions for bar.sync &co. were not marked as
convergent.  This resulted in some MI passes (such as TailDuplication,
fixed in an upcoming patch) doing unsafe things to these instructions.

Reviewers: jingyue

Subscribers: llvm-commits, tra, jholewinski, hfinkel

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

llvm-svn: 261115

8 years ago[NVPTX] Test that MachineSink won't sink across llvm.cuda.syncthreads.
Justin Lebar [Wed, 17 Feb 2016 17:46:52 +0000 (17:46 +0000)]
[NVPTX] Test that MachineSink won't sink across llvm.cuda.syncthreads.

Summary:
The syncthreads MI is modeled as mayread/maywrite -- convergence doesn't
even come into play here.  Nonetheless this property is highly implicit
in the tablegen files, so a test seems appropriate.

Reviewers: jingyue

Subscribers: llvm-commits, jholewinski

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

llvm-svn: 261114

8 years ago[NVPTX] Annotate call machine instructions as calls.
Justin Lebar [Wed, 17 Feb 2016 17:46:50 +0000 (17:46 +0000)]
[NVPTX] Annotate call machine instructions as calls.

Summary:
Otherwise we'll try to do unsafe optimizations on these MIs, such as
sinking loads below calls.

(I suspect that this is not the only bug in the NVPTX instruction
tablegen files; I need to comb through them.)

Reviewers: jholewinski, tra

Subscribers: jingyue, jhen, llvm-commits

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

llvm-svn: 261113

8 years ago[IR] Add {is,set,setNot}Convergent() functions to CallSite, CallInstr, and InvokeInstr.
Justin Lebar [Wed, 17 Feb 2016 17:46:47 +0000 (17:46 +0000)]
[IR] Add {is,set,setNot}Convergent() functions to CallSite, CallInstr, and InvokeInstr.

Summary:
(CallSite already has isConvergent() and setConvergent().)

No functional changes.

Reviewers: reames

Subscribers: llvm-commits, jingyue, arsenm

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

llvm-svn: 261112

8 years agoUpdate langref to indicate that calls may be convergent.
Justin Lebar [Wed, 17 Feb 2016 17:46:41 +0000 (17:46 +0000)]
Update langref to indicate that calls may be convergent.

Summary:
As previously written, only functions could be convergent.  But calls
need to have a notion of convergence as well.

To see why this is important, consider an indirect call.  We may or may
not want to disable optimizations around it and behave as though we're
calling a convergent function -- it depends on the semantics of the
language we're compiling.  Thus the need for this attr on the call.

Reviewers: jingyue, joker.eph

Subscribers: llvm-commits, tra, jhen, arsenm, chandlerc, hfinkel, resistor

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

llvm-svn: 261111

8 years agoFix typo in comment.
Justin Lebar [Wed, 17 Feb 2016 17:46:39 +0000 (17:46 +0000)]
Fix typo in comment.

llvm-svn: 261110

8 years agoCorrect more typos in conditional expressions
David Majnemer [Wed, 17 Feb 2016 17:19:00 +0000 (17:19 +0000)]
Correct more typos in conditional expressions

We didn't correctly handle some edge cases, causing us to bail out
before correcting all the typos.

llvm-svn: 261109

8 years ago[CMake] [NFC] Move macro definitions out of config-ix.cmake
Chris Bieneman [Wed, 17 Feb 2016 16:57:38 +0000 (16:57 +0000)]
[CMake] [NFC] Move macro definitions out of config-ix.cmake

This change should have no functional impact, it just moves some macro definitions out of config-ix.cmake into CompilerRTUtils.cmake.

This step will allow these macros to be re-used by the separated builtin build.

llvm-svn: 261108

8 years agoRepresent the dynamic table itself with a DynRegionInfo.
Rafael Espindola [Wed, 17 Feb 2016 16:48:00 +0000 (16:48 +0000)]
Represent the dynamic table itself with a DynRegionInfo.

The dynamic table is also an array of a fixed structure, so it can be
represented with a DynReginoInfo.

No major functionality change. The extra error checking is covered by
existing tests with a broken dynamic program header.

Idea extracted from r260488. I did the extra cleanups.

llvm-svn: 261107

8 years ago[CMake] Push the dependency on AddLLVM into the test and unites layers
Chris Bieneman [Wed, 17 Feb 2016 16:38:54 +0000 (16:38 +0000)]
[CMake] Push the dependency on AddLLVM into the test and unites layers

Compiler-rt only relies on LLVM for lit support. Pushing this dependency down into the test and unitest layers will allow builtin libraries to be built without LLVM.

llvm-svn: 261105

8 years agoFix some erroneous lit test failures due to unlucky name of working directory.
Mitch Bodart [Wed, 17 Feb 2016 16:35:18 +0000 (16:35 +0000)]
Fix some erroneous lit test failures due to unlucky name of working directory.

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

llvm-svn: 261104

8 years agoAdd a unwrapOrError utility and use it to simplify ELFDumper.cpp.
Rafael Espindola [Wed, 17 Feb 2016 16:21:49 +0000 (16:21 +0000)]
Add a unwrapOrError utility and use it to simplify ELFDumper.cpp.

Utility extracted from r260488.

llvm-svn: 261103

8 years ago[clang-tidy] Match the type against the get() method we are calling,
Samuel Benzaquen [Wed, 17 Feb 2016 16:13:14 +0000 (16:13 +0000)]
[clang-tidy] Match the type against the get() method we are calling,
instead of a get() method we find in the class.

The duck typed smart pointer class could have overloaded get() methods
and we should only skip the one that matches.

llvm-svn: 261102

8 years ago[X86][SSE] Update pshufb mask tests.
Simon Pilgrim [Wed, 17 Feb 2016 15:52:39 +0000 (15:52 +0000)]
[X86][SSE] Update pshufb mask tests.

We are getting better at combining constant pshufb masks - use a real input instead of undef.

Add test for decoding multi-use bitcasted masks as well (actual support will come soon).

llvm-svn: 261101

8 years ago[Refactor] Move isl_ctx into Scop.
Hongbin Zheng [Wed, 17 Feb 2016 15:49:21 +0000 (15:49 +0000)]
[Refactor] Move isl_ctx into Scop.

  After we moved isl_ctx into Scop, we need to free the isl_ctx after
  freeing all isl objects, which requires the ScopInfo pass to be freed
  at last. But this is not guaranteed by the PassManager, and we need
  extra code to free the isl_ctx at the right time.

  We introduced a shared pointer to manage the isl_ctx, and distribute
  it to all analyses that create isl objects. As such, whenever we free
  an analyses with the shared_ptr (and also free the isl objects which
  are created by the analyses), we decrease the (shared) reference
  counter of the shared_ptr by 1. Whenever the reference counter reach
  0 in the releaseMemory function of an analysis, that analysis will
  be the last one that hold any isl objects, and we can safely free the
  isl_ctx with that analysis.

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

llvm-svn: 261100

8 years agoChange how readobj stores info about dynamic symbols.
Rafael Espindola [Wed, 17 Feb 2016 15:38:21 +0000 (15:38 +0000)]
Change how readobj stores info about dynamic symbols.

We used to keep both a section and a pointer to the first symbol.

The oddity of keeping a section for dynamic symbols is because there is
a DT_SYMTAB but no DT_SYMTABZ, so to print the table we have to find the
size via a section table.

The reason for still keeping a pointer to the first symbol is because we
want to be able to print relocation tables even if the section table is
missing (it is mandatory only for files used in linking).

With this patch we keep just a DynRegionInfo. This then requires
changing a few places that were asking for a Elf_Shdr but actually just
needed the first symbol.

The test change is to delete the program header pointer.
Now that we use the information of both DT_SYMTAB and .dynsym, we don't
depend on the sh_entsize of .dynsym if we see DT_SYMTAB.

Note: It is questionable if it is worth it putting the effort to report
broken sh_entsize given that in files with no section table we have to
assume it is sizeof(Elf_Sym), but that is for another change.

Extracted from r260488.

llvm-svn: 261099

8 years ago[OPENMP] Fix tests incompatibility with ARM buildbots.
Alexey Bataev [Wed, 17 Feb 2016 15:36:39 +0000 (15:36 +0000)]
[OPENMP] Fix tests incompatibility with ARM buildbots.

llvm-svn: 261098

8 years ago[Hexagon] Fold object construction into map::insert
Krzysztof Parzyszek [Wed, 17 Feb 2016 15:02:07 +0000 (15:02 +0000)]
[Hexagon] Fold object construction into map::insert

llvm-svn: 261096

8 years ago[X86][SSE] Update pshufb mask test to use a real input instead of undef
Simon Pilgrim [Wed, 17 Feb 2016 14:56:58 +0000 (14:56 +0000)]
[X86][SSE] Update pshufb mask test to use a real input instead of undef

We are getting better at combining constant pshufb masks - this test would've failed once we decode bitcasted masks as well.

llvm-svn: 261095

8 years agoTypo.
Chad Rosier [Wed, 17 Feb 2016 14:45:36 +0000 (14:45 +0000)]
Typo.

llvm-svn: 261093

8 years agoAVX512: Fix LowerMSCATTER() return value.
Igor Breger [Wed, 17 Feb 2016 14:04:33 +0000 (14:04 +0000)]
AVX512: Fix LowerMSCATTER() return value.
Bug description:
  The bug was discovered when test was compiled with -O0.
  In case scatter result is DAG root , VectorLegalizer failed (assert) due to LowerMSCATTER() return kmask as result.
Change LowerMSCATTER() to return chain as original node do.

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

llvm-svn: 261090

8 years ago[OPENMP 4.5] Codegen support for data members in 'firstprivate' clause.
Alexey Bataev [Wed, 17 Feb 2016 13:19:37 +0000 (13:19 +0000)]
[OPENMP 4.5] Codegen support for data members in 'firstprivate' clause.

Added codegen for captured data members in non-static member functions.

llvm-svn: 261089

8 years ago[libcxx] Fix definition of regex_traits::__regex_word on big-endian glibc systems
Daniel Sanders [Wed, 17 Feb 2016 13:16:31 +0000 (13:16 +0000)]
[libcxx] Fix definition of regex_traits::__regex_word on big-endian glibc systems

Summary:
On glibc, the bits used for the various character classes is endian dependant
(see _ISbit() in ctypes.h) but __regex_word does not account for this and uses
a spare bit that isn't spare on big-endian. On big-endian, it overlaps with the
bit for graphic characters which causes '-', '@', etc. to be considered a word
character.

Fixed this by defining the value using _ISbit(15) on MIPS glibc systems. We've
restricted this to MIPS for now to avoid the risk of introducing failures in
other targets.

Fixes PR26476.

Reviewers: hans, mclow.lists

Subscribers: dsanders, cfe-commits

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

llvm-svn: 261088

8 years ago[ELF][MIPS] Update test case expectations due changes in MIPS/MC
Simon Atanasyan [Wed, 17 Feb 2016 12:49:43 +0000 (12:49 +0000)]
[ELF][MIPS] Update test case expectations due changes in MIPS/MC

llvm-svn: 261085

8 years ago[OpenCL] Added half type literal with suffix h.
Anastasia Stulova [Wed, 17 Feb 2016 11:34:37 +0000 (11:34 +0000)]
[OpenCL] Added half type literal with suffix h.

OpenCL Extension v1.2 s9.5 allows half precision floating point
type literals with suffices h or H when cl_khr_fp16 is enabled.

Example:  half x = 1.0h;

Patch by Liu Yaxun (Sam)!

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

llvm-svn: 261084

8 years ago[mips] Removed the SHF_ALLOC flag and the SHT_REL flag from the .pdr section.
Scott Egerton [Wed, 17 Feb 2016 11:15:16 +0000 (11:15 +0000)]
[mips] Removed the SHF_ALLOC flag and the SHT_REL flag from the .pdr section.

This section is used for debug information and has no need to be
in memory at runtime. This patch also fixes an error when compiling
the Linux kernel. The error is that there are relocations within the
.pdr section in a VDSO. SHT_REL was removed as it is a section type
and not a section flag, therefore it does not make sense for it to
be there. With this patch, LLVM now emits the same flags as
the GNU assembler.

llvm-svn: 261083

8 years ago[X86][AVX] Support bit-blend integer shuffles for 256-bit integer vectors
Simon Pilgrim [Wed, 17 Feb 2016 10:50:06 +0000 (10:50 +0000)]
[X86][AVX] Support bit-blend integer shuffles for 256-bit integer vectors

AVX1 doesn't support the shuffling of 256-bit integer vectors. For 32/64-bit elements we get around this by shuffling as float/double but for 8/16-bit elements (assuming they can't widen) we currently just split, shuffle as 128-bit vectors and concatenate the results back.

This patch adds the ability to lower using the bit-blend patterns before defaulting to the splitting behaviour.

Part 2 of 2

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

llvm-svn: 261082

8 years ago[X86][AVX] Support bit-mask integer shuffles for 256-bit integer vectors
Simon Pilgrim [Wed, 17 Feb 2016 10:37:49 +0000 (10:37 +0000)]
[X86][AVX] Support bit-mask integer shuffles for 256-bit integer vectors

AVX1 doesn't support the shuffling of 256-bit integer vectors. For 32/64-bit elements we get around this by shuffling as float/double but for 8/16-bit elements (assuming they can't widen) we currently just split, shuffle as 128-bit vectors and concatenate the results back.

This patch adds the ability to lower using the bit-mask patterns before defaulting to the splitting behaviour. In some cases this ends up matching what AVX2 would do anyhow or what AVX1 does on the split vectors.

Part 1 of 2

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

llvm-svn: 261081

8 years ago[OPENMP] Fix handling loop-based directives with arrays.
Alexey Bataev [Wed, 17 Feb 2016 10:29:05 +0000 (10:29 +0000)]
[OPENMP] Fix handling loop-based directives with arrays.
Patch fixes possible problems with correct handling arrays as
expressions in initialization, conditions etc in loop-based constructs.

llvm-svn: 261080

8 years ago[X86][SSE] Tidyup BUILD_VECTOR operand collection. NFCI.
Simon Pilgrim [Wed, 17 Feb 2016 10:12:30 +0000 (10:12 +0000)]
[X86][SSE] Tidyup BUILD_VECTOR operand collection. NFCI.

Avoid reuse of operand variables, keep them local to a particular lowering - the operand collection is unique to each case anyhow.

Renamed from V to Ops to more closely match their purpose.

llvm-svn: 261078

8 years ago[Hexagon] cast<> a reference instead of referencing + dereferencing.
Benjamin Kramer [Wed, 17 Feb 2016 09:28:45 +0000 (09:28 +0000)]
[Hexagon] cast<> a reference instead of referencing + dereferencing.

llvm-svn: 261077

8 years ago[compiler-rt][msan] Ensure initialisation before calling __msan_unpoison
Jonas Hahnfeld [Wed, 17 Feb 2016 07:12:18 +0000 (07:12 +0000)]
[compiler-rt][msan] Ensure initialisation before calling __msan_unpoison

__msan_unpoison uses intercepted memset which currently leads to a SEGV
when linking with libc++ under CentOS 7.

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

llvm-svn: 261073

8 years agollvm-dwp: Support for type units when merging DWPs into larger DWPs
David Blaikie [Wed, 17 Feb 2016 07:00:24 +0000 (07:00 +0000)]
llvm-dwp: Support for type units when merging DWPs into larger DWPs

llvm-svn: 261072

8 years agoFix the hash function.
David Blaikie [Wed, 17 Feb 2016 07:00:22 +0000 (07:00 +0000)]
Fix the hash function.

llvm-svn: 261071

8 years agoDetecte vector reduction operations just before instruction selection.
Cong Hou [Wed, 17 Feb 2016 06:37:04 +0000 (06:37 +0000)]
Detecte vector reduction operations just before instruction selection.

This patch detects vector reductions before instruction selection. Vector
reductions are vectorized reduction operations, and for such operations we have
freedom to reorganize the elements of the result as long as the reduction of them
stay unchanged. This will enable some reduction pattern recognition during
instruction combine such as SAD/dot-product on X86. A flag is added to
SDNodeFlags to mark those vector reduction nodes to be checked during instruction
combine.

To detect those vector reductions, we search def-use chains starting from the
given instruction, and check if all uses fall into two categories:

1. Reduction with another vector.
2. Reduction on all elements.

in which 2 is detected by recognizing the pattern that the loop vectorizer
generates to reduce all elements in the vector outside of the loop, which
includes several ShuffleVector and one ExtractElement instructions.

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

llvm-svn: 261070

8 years agoMake getOffset a member function of DynamicReloc<ELFT>.
Rui Ueyama [Wed, 17 Feb 2016 06:08:42 +0000 (06:08 +0000)]
Make getOffset a member function of DynamicReloc<ELFT>.

Logically it belongs to DynamicReloc, and it is more readable to
be a member of the class.

llvm-svn: 261069

8 years agoUse shorter names for the .gnu.hash class.
Rui Ueyama [Wed, 17 Feb 2016 05:40:03 +0000 (05:40 +0000)]
Use shorter names for the .gnu.hash class.

llvm-svn: 261067