133778 Commits

Author SHA1 Message Date
Igor Laevsky
afaddb4d86 [MCContext] Don't use getenv inside class constructor
Differential Revision: http://reviews.llvm.org/D21471



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273005 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 15:19:41 +00:00
Simon Pilgrim
649d92ad2f [X86][SSE4A] Remove the GCCBuiltins from the movntsd/movntss intrinsic defs so we can emit native IR from clang.
Clang-side sibling commit to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273002 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 14:27:38 +00:00
Benjamin Kramer
5bd9b03645 [ARM] Strength reduce vectors to arrays.
No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273001 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 14:14:29 +00:00
Benjamin Kramer
db2bf1e6f9 [PPC] Strength-reduce SmallVectors into arrays.
No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272999 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 13:15:10 +00:00
Kostya Serebryany
ee71b6abb0 [libFuzzer] make the single-run output more reliable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272998 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 13:07:06 +00:00
Craig Topper
95f474f922 [X86] Pre-size several SmallVectors instead of calling push_back in a loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272997 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 12:20:50 +00:00
Craig Topper
27e2482790 [X86] Fix formatting. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272996 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 12:20:48 +00:00
Adam Nemet
2554aeaa7d [LLE] Don't hard-code the name of the preheader in test
Turns out a didn't get this right because symbolic stride versioning
changes the name.  Relax the matching.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272992 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 09:13:15 +00:00
Chandler Carruth
bd6882c677 [PM] Run clang-format over various parts of the new pass manager code
prior to some very substantial patches to isolate any formatting-only
changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272991 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 07:15:29 +00:00
Matt Arsenault
12e9f5cf93 Revert "InstCombine: Reduce trunc (shl x, K) width."
This reverts commit r272987.

This might be causing crashes on some bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272990 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 06:28:53 +00:00
Qin Zhao
4e01f2cc2f [esan|cfrag] Add the struct field size array in StructInfo
Summary:
Adds the struct field size array in struct StructInfo.

Updates test struct_field_count_basic.ll.

Reviewers: aizatsky

Subscribers: vitalybuka, zhaoqin, kcc, eugenis, bruening, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272989 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 04:50:20 +00:00
Matt Arsenault
28ae6d84be InstCombine: Reduce trunc (shl x, K) width.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272987 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 04:43:22 +00:00
Ranjeet Singh
e5b666f4cf [ARM] Add support for mrrc/mrrc2 intrinsics.
Reapplying patch as it was reverted when it was first
committed because of an assertion failure when the
mrrc2 intrinsic was called in ARM mode. The failure
was happening because the instruction was being built
in ARMISelDAGToDAG.cpp and the tablegen description for
mrrc2 instruction doesn't allow you to use a predicate.

The ARM architecture manuals do say that mrrc2 in ARM
mode can be predicated with AL in assembly but this has
no effect on the encoding of the instruction as the top
4 bits will always be 1111 not 1110 which is the encoding
for the condition AL.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272982 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 00:52:41 +00:00
Sanjoy Das
78628d1ea7 [RS4GC] Pass CallSite by value instead of const ref; NFC
That's the idiomatic LLVM pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272981 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 00:45:00 +00:00
Chandler Carruth
04d0fe9c10 [PM] Remove support for omitting the AnalysisManager argument to new
pass manager passes' `run` methods.

This removes a bunch of SFINAE goop from the pass manager and just
requires pass authors to accept `AnalysisManager<IRUnitT> &` as a dead
argument. This is a small price to pay for the simplicity of the system
as a whole, despite the noise that changing it causes at this stage.

This will also helpfull allow us to make the signature of the run
methods much more flexible for different kinds af passes to support
things like intelligently updating the pass's progression over IR units.

While this touches many, many, files, the changes are really boring.
Mostly made with the help of my trusty perl one liners.

Thanks to Sean and Hal for bouncing ideas for this with me in IRC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272978 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 00:11:01 +00:00
Chuang-Yu Cheng
5e71c1e0a7 Use m_APInt in SimplifyCFG
Switch from m_Constant to m_APInt per David's request. NFC.

Author: Thomas Jablin (tjablin)
Reviewers: majnemer cycheng

http://reviews.llvm.org/D21440

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272977 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-17 00:04:39 +00:00
Adam Nemet
d448b5e945 [LV] Move management of symbolic strides to LAA. NFCI
This is still NFCI, so the list of clients that allow symbolic stride
speculation does not change (yes: LV and LoopVersioningLICM, no: LLE,
LDist).  However since the symbolic strides are now managed by LAA
rather than passed by client a new bool parameter is used to enable
symbolic stride speculation.

The existing test Transforms/LoopVectorize/version-mem-access.ll checks
that stride speculation is performed for LV.

The previously added test Transforms/LoopLoadElim/symbolic-stride.ll
ensures that no speculation is performed for LLE.

The next patch will change the functionality and turn on symbolic stride
speculation in all of LAA's clients and remove the bool parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272970 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:57:55 +00:00
Evgeniy Stepanov
f268616d77 [safestack] Sink unsafe address computation to each use.
This is a fix for PR27844.
When replacing uses of unsafe allocas, emit the new location
immediately after each use. Without this, the pointer stays live from
the function entry to the last use, while it's usually cheaper to
recalculate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272969 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:34:04 +00:00
Evgeniy Stepanov
fd0154041b [safestack] Fixup llvm.dbg.value when rewriting unsafe allocas.
When moving unsafe allocas to the unsafe stack, dbg.declare intrinsics are
updated to refer to the new location.

This change does the same to dbg.value intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272968 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:34:00 +00:00
Adrian McCarthy
3e5651782c Properly handle short file names on the command line in Windows
Some build systems use the short (8.3) file names on Windows, especially if the path has spaces in it. The shortening made it impossible for clang to distinguish between clang.exe, clang++.exe, and clang-cl.exe.  So this expands short names in the first argument and does wildcard expansion for the rest.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272967 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 22:07:55 +00:00
Adam Nemet
8b651e60d7 [LV] Make getSymbolicStrides return a pointer rather than a reference. NFC
Turns out SymbolicStrides is actually used in canVectorizeWithIfConvert
before it gets set up in canVectorizeMemory.

This works fine as long as SymbolicStrides resides in LV since we just
have an empty map.  Based on this the conclusion is made that there are
no symbolic strides which is conservatively correct.

However once SymbolicStrides becomes part of LAI, LAI is nullptr at this
point so we need to differentiate the uninitialized state by returning a
nullptr for SymbolicStrides.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272966 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:55:10 +00:00
Evgeniy Stepanov
57ba611520 Fix BitVector move ctor/assignment.
Current implementation leaves the object in an invalid state.

This reverts commit bf0c389ac683cd6c0e5959b16537e59e5f4589e3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272965 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:45:13 +00:00
Matt Arsenault
6d25c4fea6 TTI: Add hook for memory width to vectorize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272964 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:43:12 +00:00
David Majnemer
5dd02f3333 [CodeView] Implement support for enums
MSVC handles enums differently from structs and classes: a forward
declaration is not emitted unconditionally.  MSVC does not emit an S_UDT
record for the enum.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272960 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:32:16 +00:00
Matt Arsenault
dc9478ac13 AArch64: Fix range loop contradicting comment above it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272959 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:21:49 +00:00
Changpeng Fang
a3e290966a AMDGPU/SI: Propagate the Kill flag in storeRegToStackSlot and eliminateFrameIndex
Reviewers: arsenm, tstellarAMD

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272958 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:20:47 +00:00
Nirav Dave
afacc9421f Revert "Refactor and cleanup Assembly Parsing / Lexing"
Reverting for unexpected crashes on various platforms.

This reverts commit r272953.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272957 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:19:23 +00:00
Matt Arsenault
f3108f6961 AMDGPU: Fix maximum instruction size for amdgcn
This was causing the conservative estimate of inline asm
size to be twice as big as expected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272956 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:14:05 +00:00
Sanjoy Das
7d80f210a6 [EarlyCSE] Minor cosmetic NFC changes
- Avoid implicit conversion from pointer to bool
 - Add a comment when passing in a boolean value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272955 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 21:00:57 +00:00
Sanjoy Das
60eee05a65 [EarlyCSE] Fold invariant loads
Redundant invariant loads can be CSE'ed with very little extra effort
over what early-cse already tracks, so it looks reasonable to make
early-cse handle this case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272954 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 20:47:57 +00:00
Nirav Dave
e0348ce1ac Refactor and cleanup Assembly Parsing / Lexing
Add explicit Comment Token in Assembly Lexing for future support for
outputting explicit comments from inline assembly. As part of this,
CPPHash Directives are now explicitly distinguished from Hash line
comments in Lexer.

Line comments are recorded as EndOfStatement tokens, not Comment tokens
to simplify compatibility with current TargetParsers. This slightly
complicates comment output.

This remove all lexing tasks out of the parser, does minor cleanup
to remove extraneous newlines Asm Output, and some improvements white
space handling.

Reviewers: rtrieu, dwmw2, rnk

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272953 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 20:34:22 +00:00
Kostya Serebryany
c0e47a82c1 [libFuzzer] use the new chainable malloc hooks instead of the old un-chainable ones, use atomic for malloc/free counters instead of a thread local counter in the main thread. This should make on-the-spot leak detection in libFuzzer more reliable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272948 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 20:17:41 +00:00
Justin Lebar
47367896f1 Fix strip-dead-debug-info test if path contains "bar".
This test checks that the string 'bar' (no quotes) doesn't exist in the
output after running opt.  But opt embeds the absolute path to the
filename, and on my machine, the filename contains the string 'jlebar',
causing the test to fail.

This patch changes the test to look for the string '"bar"' instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272941 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 19:39:55 +00:00
Paul Robinson
18105824ee Make check lines not match themselves.
Noticed during review of the recent FileCheck change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272940 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 19:38:48 +00:00
Rafael Espindola
4029bd9503 Refactor more duplicated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272939 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 19:30:55 +00:00
Sanjoy Das
394afc7ae2 NFC; refactor getFrameIndexReferenceFromSP
Summary:
... into getFrameIndexReferencePreferSP.  This change folds the
fail-then-retry logic into getFrameIndexReferencePreferSP.

There is a non-functional but behaviorial change in WinException --
earlier if `getFrameIndexReferenceFromSP` failed we'd trip an assert,
but now we'll silently use the (wrong) offset from the base pointer.  I
could not write the assert I'd like to write ("FrameReg ==
StackRegister", like I've done in X86FrameLowering) since there is no
easy way to get to the stack register from WinException (happy to be
proven wrong here).  One solution to this is to add a `bool
OnlyStackPointer` parameter to `getFrameIndexReferenceFromSP` that
asserts if it could not satisfy its promise of returning an offset from
a stack pointer, but that seems overkill.

Reviewers: rnk

Subscribers: sanjoy, mcrosier, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272938 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:54:06 +00:00
Rafael Espindola
a49d9c3777 Refactor duplicated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272936 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:50:12 +00:00
Sanjay Patel
a240c3eb0e [x86] autoupgrade and remove AVX2 integer min/max intrinsics
This will (hopefully very temporarily) break clang.
The clang side of this should be the next commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272932 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:44:20 +00:00
Rui Ueyama
6b7e0cc92c [codeview] Use hashBufferV8 to verify all type records.
Differential Revision: http://reviews.llvm.org/D21393

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272930 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:39:17 +00:00
Zachary Turner
e8d381d02c Resubmit "[pdb] Change type visitor pattern to be dynamic."
There was a regression introduced during type stream merging when
visiting a field list record.  This has been fixed in this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272929 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:22:27 +00:00
Rafael Espindola
1f4afa2405 dos2unix this test. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272928 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:21:11 +00:00
Zachary Turner
575a9fbcc9 Revert "[pdb] Change type visitor pattern to be dynamic."
This reverts commit fb0dd311e1ad945827b8ffd5354f4810e2be1579.

This breaks some llvm-readobj tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272927 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:09:04 +00:00
Zachary Turner
fb0dd311e1 [pdb] Change type visitor pattern to be dynamic.
This allows better catching of compiler errors since we can use
the override keyword to verify that methods are actually
overridden.

Also in this patch I've changed from storing a boolean Error
code everywhere to returning an llvm::Error, to propagate richer
error information up the call stack.

Reviewed By: ruiu, rnk
Differential Revision: http://reviews.llvm.org/D21410

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272926 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 18:00:28 +00:00
Davide Italiano
705956ea8f [PM] Revert the port of MergeLoadStoreMotion to the new pass manager.
Daniel Berlin expressed some real concerns about the port and proposed
and alternative approach. I'll revert this for now while working on a
new patch, which I hope to put up for review shortly. Sorry for the churn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272925 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 17:40:53 +00:00
Chad Rosier
8e662dc4d5 [DSE] Minor style cleanup. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272922 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 17:06:04 +00:00
Sanjay Patel
255484c723 remove old FileCheck lines that are no longer used
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272921 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 17:04:16 +00:00
Sanjay Patel
f449b0e944 [DAG] Remove redundant FMUL in Newton-Raphson SQRT code
When calculating a square root using Newton-Raphson with two constants,
a naive implementation is to use five multiplications (four muls to calculate
reciprocal square root and another one to calculate the square root itself).
However, after some reassociation and CSE the same result can be obtained
with only four multiplications. Unfortunately, there's no reliable way to do
such a reassociation in the back-end. So, the patch modifies NR code itself
so that it directly builds optimal code for SQRT and doesn't rely on any
further reassociation.

Patch by Nikolai Bozhenov!

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272920 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 16:58:54 +00:00
Wei Ding
4edb79d2d9 AMDGPU: Add v_mad 16-bit instructions definition.
Differential Revision: http://reviews.llvm.org/D21362

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272919 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 16:50:04 +00:00
Adam Nemet
b4b586ba9c [LLE] New test to check that no versioning for symbolic strides occurs. NFC
This is currently only performed in the Vectorizer.  I will change this
as symbolic stride collection is moved to LAA.

This test will track when the actual functional change occurs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272918 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 16:45:29 +00:00
Matt Arsenault
ce9eebb1ec LangRef: Note expectations when loading with extra alignment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272914 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-16 16:33:41 +00:00