OSDN Git Service
Hal Finkel [Wed, 25 May 2016 16:50:22 +0000 (16:50 +0000)]
[SDAG] Add a fallback multiplication expansion
LegalizeIntegerTypes does not have a way to expand multiplications for large
integer types (i.e. larger than twice the native bit width). There's no
standard runtime call to use in that case, and so we'd just assert.
Unfortunately, as it turns out, it is possible to hit this case from
standard-ish C code in rare cases. A particular case a user ran into yesterday
involved an __int128 induction variable and a loop with a quadratic (not
linear) recurrence which triggered some backend logic using SCEVExpander. In
this case, the BinomialCoefficient code in SCEV generates some i129 variables,
which get widened to i256. At a high level, this is not actually good (i.e. the
underlying optimization, PPCLoopPreIncPrep, should not be transforming the loop
in question for performance reasons), but regardless, the backend shouldn't
crash because of cost-modeling issues in the optimizer.
This is a straightforward implementation of the multiplication expansion, based
on the algorithm in Hacker's Delight. I validated it against the code for the
mul256b function from http://locklessinc.com/articles/256bit_arithmetic/ using
random inputs. There should be no functional change for previously-working code
(the new expansion code only replaces an assert).
Fixes PR19797.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270720
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 25 May 2016 16:45:08 +0000 (16:45 +0000)]
[ThinLTO] Fix test check prefix so that intended prefix tested
There aren't any checks with prefix PROMOTE, should be PROMOTE_MOD1
which wasn't being tested (but works as expected).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270719
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 25 May 2016 16:39:47 +0000 (16:39 +0000)]
[x86, AVX] allow explicit calls to VZERO* to modify state in VZeroUpperInserter pass (PR27823)
As noted in the review, there are still problems, so this doesn't the bug completely.
Differential Revision: http://reviews.llvm.org/D20529
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270718
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 25 May 2016 16:23:59 +0000 (16:23 +0000)]
[RuntimeDyld] Call the SymbolResolver::findSymbolInLogicalDylib method when
searching for external symbols, and fall back to the SymbolResolver::findSymbol
method if the former returns null.
This makes RuntimeDyld behave more like a static linker: Symbol definitions
from within the current module's "logical dylib" will be preferred to
external definitions. We can build on this behavior in the future to properly
support weak symbol handling.
Custom symbol resolvers that override the findSymbolInLogicalDylib method may
notice changes due to this patch. Clients who have not overridden this method
should generally be unaffected, however users of the OrcMCJITReplacement class
may notice changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270716
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 25 May 2016 16:22:14 +0000 (16:22 +0000)]
Clarify that we match BSwap in InstCombine and BitReverse in CGP. NFC.
Also, rename recognizeBitReverseOrBSwapIdiom to recognizeBSwapOrBitReverseIdiom,
so the ordering of the MatchBSwaps and MatchBitReversals arguments are
consistent with the function name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270715
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 15:30:08 +0000 (15:30 +0000)]
[X86][AVX] Sync with clang/test/CodeGen/avx2-builtins.c
Only tests for the gather intrinsic are still to be added
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270710
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 25 May 2016 14:03:11 +0000 (14:03 +0000)]
[ThinLTO] Refactor ODR resolution and internalization (NFC)
Move the now index-based ODR resolution and internalization routines out
of ThinLTOCodeGenerator.cpp and into either LTO.cpp (index-based
analysis) or FunctionImport.cpp (index-driven optimizations).
This is to enable usage by other linkers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270698
91177308-0d34-0410-b5e6-
96231b3b80d8
Oleg Ranevskyy [Wed, 25 May 2016 13:01:33 +0000 (13:01 +0000)]
[SCEV] No-wrap flags are not propagated when folding "{S,+,X}+T ==> {S+T,+,X}"
Summary:
**Description**
This makes `WidenIV::widenIVUse` (IndVarSimplify.cpp) fail to widen narrow IV uses in some cases. The latter affects IndVarSimplify which may not eliminate narrow IV's when there actually exists such a possibility, thereby producing ineffective code.
When `WidenIV::widenIVUse` gets a NarrowUse such as `{(-2 + %inc.lcssa),+,1}<nsw><%for.body3>`, it first tries to get a wide recurrence for it via the `getWideRecurrence` call.
`getWideRecurrence` returns recurrence like this: `{(sext i32 (-2 + %inc.lcssa) to i64),+,1}<nsw><%for.body3>`.
Then a wide use operation is generated by `cloneIVUser`. The generated wide use is evaluated to `{(-2 + (sext i32 %inc.lcssa to i64))<nsw>,+,1}<nsw><%for.body3>`, which is different from the `getWideRecurrence` result. `cloneIVUser` sees the difference and returns nullptr.
This patch also fixes the broken LLVM tests by adding missing <nsw> entries introduced by the correction.
**Minimal reproducer:**
```
int foo(int a, int b, int c);
int baz();
void bar()
{
int arr[20];
int i = 0;
for (i = 0; i < 4; ++i)
arr[i] = baz();
for (; i < 20; ++i)
arr[i] = foo(arr[i - 4], arr[i - 3], arr[i - 2]);
}
```
**Clang command line:**
```
clang++ -mllvm -debug -S -emit-llvm -O3 --target=aarch64-linux-elf test.cpp -o test.ir
```
**Expected result:**
The ` -mllvm -debug` log shows that all the IV's for the second `for` loop have been eliminated.
Reviewers: sanjoy
Subscribers: atrick, asl, aemerson, mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D20058
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270695
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 25 May 2016 12:02:33 +0000 (12:02 +0000)]
[AArch64] Adding a TargetParser for AArch64
There's already a ARMTargetParser,now adding a similar one for aarch64.
so we can use it to do ARCH/CPU/FPU parsing in clang and llvm, instead of
string comparison.
Patch by Jojo Ma.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270687
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 10:56:23 +0000 (10:56 +0000)]
[X86][AVX2] Added more fast-isel tests to match clang/test/CodeGen/avx2-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270685
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 10:15:06 +0000 (10:15 +0000)]
[X86][AVX2] Begun adding fast-isel tests to match clang/test/CodeGen/avx2-builtins.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270683
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 09:42:29 +0000 (09:42 +0000)]
[X86][SSE2] Use storeu intrinsics for _mm_storeu_pd/_mm_storeu_pd tests
Also fixed name of _mm_store1_pd test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270681
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 09:28:06 +0000 (09:28 +0000)]
[X86][SSE] Use storeu intrinsics for _mm_storeu_ps test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270680
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 May 2016 08:59:18 +0000 (08:59 +0000)]
[X86][SSE] Replace (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) lossless conversion intrinsics with generic IR
Followup to D20528 clang patch, this removes the (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) llvm intrinsics and auto-upgrades to sitofp/fpext instead.
Differential Revision: http://reviews.llvm.org/D20568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270678
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 25 May 2016 06:56:32 +0000 (06:56 +0000)]
[X86] Remove the llvm.x86.sse2.storel.dq intrinsic. It hasn't been used in a long time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270677
91177308-0d34-0410-b5e6-
96231b3b80d8
Gerolf Hoflehner [Wed, 25 May 2016 06:23:45 +0000 (06:23 +0000)]
[Support] Reapply cleanup r270643
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270674
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 25 May 2016 05:53:04 +0000 (05:53 +0000)]
[FunctionAttrs] Volatile loads should disable readonly
A volatile load has side effects beyond what callers expect readonly to
signify. For example, it is not safe to reorder two function calls
which each perform a volatile load to the same memory location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270671
91177308-0d34-0410-b5e6-
96231b3b80d8
Gerolf Hoflehner [Wed, 25 May 2016 05:51:05 +0000 (05:51 +0000)]
[Support] revert previous commit r270643
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270670
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 05:49:48 +0000 (05:49 +0000)]
[llvm-pdbdump] Decipher the remaining PDB streams.
We know at least know the meaning of every stream of the
PDB file. Yay!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270669
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 May 2016 05:45:02 +0000 (05:45 +0000)]
Revert "llvm-objdump: support dumping AUX records for weak externals"
Revert it until we can figure out the endianness issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270667
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 May 2016 05:23:02 +0000 (05:23 +0000)]
Object: ensure that structures are fully defined
Ensure that the unused fields are explicitly stated when defining the types.
Add some compile time assertions about the size requirements for the structure
types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270663
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 04:35:22 +0000 (04:35 +0000)]
[llvm-pdbdump] Dump the IPI stream and all records.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270661
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Wed, 25 May 2016 04:07:17 +0000 (04:07 +0000)]
pdbdump: fix bug in name hash table.
name_ids() did not return all IDs but only the first NameCount items.
The number of non-zero entries in IDs vector is NameCount, but it
does not mean that all non-zero entries are at the beginning of IDs
vector.
Differential Revision: http://reviews.llvm.org/D20611
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270656
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 03:53:16 +0000 (03:53 +0000)]
[llvm-pdbdump] Stream 0 isn't actually the MSF superblock.
Oddly enough, I realized we don't actually know what stream
0 is (if anything).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270655
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 May 2016 03:48:07 +0000 (03:48 +0000)]
test: use a binary file instead
Generate the obj rather than use yaml2obj. Hopefully, this fixes the PPC64 test
failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270654
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 03:43:17 +0000 (03:43 +0000)]
[llvm-pdbdump] Dump stream summary list.
Try to figure out what each stream is, and dump its name.
This gives us a better picture of what streams we still don't
understand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270653
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 May 2016 01:59:36 +0000 (01:59 +0000)]
Support: remove outdated comment
This information is in the latest version of the specification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270649
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 May 2016 01:59:32 +0000 (01:59 +0000)]
llvm-objdump: support dumping AUX records for weak externals
This is a support COFF feature. Ensure that we can display the weak externals
auxiliary symbol. It contains useful information (such as the default binding
and how to resolve the symbol).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270648
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 25 May 2016 01:57:04 +0000 (01:57 +0000)]
[PM] Port BDCE to the new pass manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270647
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Wed, 25 May 2016 01:45:42 +0000 (01:45 +0000)]
Soften assertion in AMDGPU emitPrologue.
[AMDGPU] emitPrologue looks for an unused unallocated SGPR that is not
the scratch descriptor. Continue search if unused register found fails
other requirements.
Reviewers: arsenm, tstellarAMD, nhaehnle
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: http://reviews.llvm.org/D20526
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270646
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 25 May 2016 01:18:36 +0000 (01:18 +0000)]
Fix some Include What You Use warnings in examples; other minor fixes.
Differential revision: http://reviews.llvm.org/D20607
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270645
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 25 May 2016 01:18:00 +0000 (01:18 +0000)]
ScheduleDAGInstrs: Fix memory corruption
We have to modify V2SU before inserting new elements into the
CurrentVRegDefs set because that may move V2SU in memory invalidating
the reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270644
91177308-0d34-0410-b5e6-
96231b3b80d8
Gerolf Hoflehner [Wed, 25 May 2016 00:54:39 +0000 (00:54 +0000)]
[Support] Cleanup of an ancient Darwin work-around in Signals.inc (PR26174)
Patch by Jeremy Huddleston Sequoia
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270643
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Bruening [Wed, 25 May 2016 00:17:24 +0000 (00:17 +0000)]
[esan|wset] EfficiencySanitizer working set tool fastpath
Summary:
Adds fastpath instrumentation for esan's working set tool. The
instrumentation for an intra-cache-line load or store consists of an
inlined write to shadow memory bits for the corresponding cache line.
Adds a basic test for this instrumentation.
Reviewers: aizatsky
Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits
Differential Revision: http://reviews.llvm.org/D20483
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270640
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 25 May 2016 00:15:36 +0000 (00:15 +0000)]
[libFuzzer] print stats if we crash on empty input
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270639
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Wed, 25 May 2016 00:14:12 +0000 (00:14 +0000)]
Revert r270569 (teach llvm-mc to generate compressed debug sections in zlib
style). It appears that current ELF linkers are not ready for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270638
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 00:12:48 +0000 (00:12 +0000)]
[codeview] Add support for new types and symbols.
This patch adds support for:
S_EXPORT
LF_BITFIELD
With this patch, I have run through a couple of gigabytes of PDB
files and cannot find a type or symbol that we do not understand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270637
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 May 2016 00:12:40 +0000 (00:12 +0000)]
[codeview] Add support for S_EXPORT symbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270636
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 24 May 2016 23:47:41 +0000 (23:47 +0000)]
[WebAssembly] Put __stack_pointer in the offset field of loads and stores.
Instead of this:
i32.const $push10=, __stack_pointer
i32.load $push11=, 0($pop10)
Emit this:
i32.const $push10=, 0
i32.load $push11=, __stack_pointer($pop10)
It's not currently clear which is better, though there's a chance the second
form may be better at overall compression. We can revisit this when we have
more data; for now it makes sense to make PEI consistent with isel.
Differential Revision: http://reviews.llvm.org/D20411
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270635
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Tue, 24 May 2016 23:14:29 +0000 (23:14 +0000)]
[libfuzzer] Trying random unit prefixes during corpus load.
Differential Revision: http://reviews.llvm.org/D20301
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270632
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 24 May 2016 23:00:05 +0000 (23:00 +0000)]
Re-enable "[LoopUnroll] Enable advanced unrolling analysis by default" one more time.
This reverts commit r270577.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270630
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 24 May 2016 22:59:58 +0000 (22:59 +0000)]
[LoopUnrollAnalyzer] Fix a crash in UnrolledInstAnalyzer::visitCastInst.
This fixes PR27847. Now for real.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270629
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 22:58:46 +0000 (22:58 +0000)]
[codeview] Add support for new type records.
This adds support for parsing and dumping the following
symbol types:
S_LPROCREF
S_ENVBLOCK
S_COMPILE2
S_REGISTER
S_COFFGROUP
S_SECTION
S_THUNK32
S_TRAMPOLINE
As of this patch, the test PDB files no longer have any unknown
symbol types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270628
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Bruening [Tue, 24 May 2016 22:48:24 +0000 (22:48 +0000)]
[esan] Add calls from the ctor/dtor to the runtime library
Summary:
Adds createEsanInitToolGV for creating a tool-specific variable passed
to the runtime library.
Adds dtor "esan.module_dtor" and inserts calls from the dtor to
"__esan_exit" in the runtime library.
Updates the EfficiencySanitizer test.
Patch by Qin Zhao.
Reviewers: aizatsky
Subscribers: bruening, kcc, vitalybuka, eugenis, llvm-commits
Differential Revision: http://reviews.llvm.org/D20488
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270627
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Tue, 24 May 2016 22:25:46 +0000 (22:25 +0000)]
[libfuzzer][doc] documenting running libfuzzer tests.
Differential Revision: http://reviews.llvm.org/D20594
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270626
91177308-0d34-0410-b5e6-
96231b3b80d8
Haicheng Wu [Tue, 24 May 2016 22:16:14 +0000 (22:16 +0000)]
[MBP] Factor out the optimizations on branch conditions and unanalyzable branches. NFCI.
The benefits of this patch are
-- We call AnalyzeBranch() to optimize unanalyzable branches, but the result of
AnalyzeBranch() is not used. Now the result is useful.
-- Before the layout of all the MBBs is set, the result of AnalyzeBranch() is
not correct and needs to be fixed before using it to optimize the branch
conditions. Now this optimization is called after the layout, the code used
to fix the result of AnalyzeBranch() is not needed.
-- The branch condition of the last block is not optimized before. Now it is
optimized.
Differential Revision: http://reviews.llvm.org/D20177
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270623
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 24 May 2016 22:15:54 +0000 (22:15 +0000)]
There's no reason to use _ to name variables different just for construction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270622
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 24 May 2016 21:54:01 +0000 (21:54 +0000)]
LiveIntervalAnalysis: Fix handleMove() re-using the wrong value number
This fixes http://llvm.org/PR27856
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270619
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 May 2016 21:19:28 +0000 (21:19 +0000)]
DWARF: Omit DW_AT_APPLE attributes (except ObjC ones) when not targeting LLDB
These attributes aren't used by other debuggers (& may be confused with
other DWARF extensions) so they just waste space (about 1.5% on .dwo
file size on a random large program I tested).
We could remove the ObjC property ones too, but I figured they were
probably more necessary when trying to understand ObjC (I could be wrong
though) & so any debugger interested in working with ObjC would use
them, perhaps? (also, there are some legacy tests in Clang that test for
them - making it one of those annoying cross-project commits and/or
cleanup to refactor those tests)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270613
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 24 May 2016 20:54:45 +0000 (20:54 +0000)]
[GuardWidening] Tighten the interface of the RangeCheck struct; NFC
Make `GuardWideningImpl::RangeCheck` into a class and add accessors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270611
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 20:48:18 +0000 (20:48 +0000)]
Remove unused global variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270610
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 20:31:48 +0000 (20:31 +0000)]
[llvm-pdbdump] Rework command line options.
When dumping huge PDB files, too many of the options were grouped
together so you would get neverending spew of output. This patch
introduces more granular display options so you can only dump the
fields you actually care about.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270607
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 24 May 2016 20:19:05 +0000 (20:19 +0000)]
Add libxar to LLVM_SYSTEM_LIBS if available
This should fix PR27855. We have some terrible hacks in the CMake to add linking SYSTEM_LIBS to all tools. I think we need a better way to do this in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270605
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 24 May 2016 20:13:46 +0000 (20:13 +0000)]
Add FIXMEs to all derived classes of std::error_category.
This helps make clear that we're moving away from std::error_code.
Differential Revision: http://reviews.llvm.org/D20592
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270604
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 24 May 2016 19:12:48 +0000 (19:12 +0000)]
[ThinLTO] Handle empty exports list for module.
We might have an empty exports list for a module and shouldn't assert
when checking if a symbol is exported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270600
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 24 May 2016 19:05:25 +0000 (19:05 +0000)]
[libFuzzer] add a license header to afl/afl_driver.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270598
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 18:55:14 +0000 (18:55 +0000)]
[codeview, pdb] Dump symbol records in publics stream
Differential Revision: http://reviews.llvm.org/D20580
Reviewed By: ruiu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270597
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 24 May 2016 18:47:38 +0000 (18:47 +0000)]
[profile] Fix runtime hook linkage bug for COFF
Patch by: Johan Engelen
the user hook has linkonceODR linkage and it needs to be
in comdatAny group.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270596
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 24 May 2016 18:44:01 +0000 (18:44 +0000)]
[ThinLTO] Fix bot failures by avoiding threaded map modifications
Ensure multiple threads won't have to modify map, probable cause of
bot failures from r270584 such as:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/13095
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270595
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Tue, 24 May 2016 18:37:18 +0000 (18:37 +0000)]
[AMDGPU][NFC] Rename ReserveTrapVGPRs -> ReserveRegs
Differential Revision: http://reviews.llvm.org/D20081
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270594
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 17:44:29 +0000 (17:44 +0000)]
Fix build errors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270587
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 24 May 2016 17:35:49 +0000 (17:35 +0000)]
[InstCombine] Clean up and FileCheckize test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270586
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 17:30:25 +0000 (17:30 +0000)]
Dump symbol record details in llvm-pdbdump
This makes use of the newly introduced `CVSymbolVisitor` to dump details
of each type of symbol record in the symbol streams. Future patches will
bring this visitor based dumping to the publics stream, as well as
creating a `SymbolDumpDelegate` to print more information about
relocations etc.
Differential Revision: http://reviews.llvm.org/D20545
Reviewed By: ruiu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270585
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 24 May 2016 17:24:25 +0000 (17:24 +0000)]
[ThinLTO] Change ODR resolution and internalization to be index-based
Summary:
This patch changes the ODR resolution and internalization to be based on
updates to the Index, which are consumed by the backend portion of the
transformations.
It will be followed by an NFC change to move these out of libLTO's
ThinLTOCodeGenerator so that it can be used by other linkers
(gold and lld) and by ThinLTO distributed backends.
The global summary-based portions use callbacks so that the client can
determine the prevailing copy and other information in a client-specific
way. Eventually, with the API being developed in D20268, these may be
modified to use information such as symbol resolutions, supplied by the
clients to the API.
Reviewers: joker-eph
Subscribers: joker.eph, pcc, llvm-commits
Differential Revision: http://reviews.llvm.org/D20290
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270584
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 24 May 2016 17:19:56 +0000 (17:19 +0000)]
[IRCE] Return a Value*, not SCEV* from parseRangeCheck; NFC
This is better layering, since the caller needs to check if the index
was an add-rec anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270582
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 May 2016 16:51:26 +0000 (16:51 +0000)]
fix typos; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270579
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 24 May 2016 16:10:12 +0000 (16:10 +0000)]
Revert r270518, which re-enabled "[LoopUnroll] Enable advanced unrolling analysis by default.
Chromium builds are still hitting the assert in PR27874.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270577
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 15:19:35 +0000 (15:19 +0000)]
Recommit r270070 ([llvm-mc] - Teach llvm-mc to generate compressed debug sections in zlib style.)
Now, after landing r270560, r270557, r270320 it is a proper time.
Original commit message:
[llvm-mc] - Teach llvm-mc to generate compressed debug sections in zlib style.
Before this patch llvm-mc generated zlib-gnu styled sections.
That means no SHF_COMPRESSED flag was set, magic 'zlib' signature
was used in combination with full size field. Sections were renamed to "*.z*".
This patch reimplements the compression style to zlib one as zlib-gnu looks
to be depricated everywhere.
Differential revision: http://reviews.llvm.org/D20331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270569
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 May 2016 14:18:49 +0000 (14:18 +0000)]
[ValueTracking, InstSimplify] extend isKnownNonZero() to handle vector constants
Similar in spirit to D20497 :
If all elements of a constant vector are known non-zero, then we can say that the
whole vector is known non-zero.
It seems like we could extend this to FP scalar/vector too, but isKnownNonZero()
says it only works for integers and pointers for now.
Differential Revision: http://reviews.llvm.org/D20544
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270562
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 24 May 2016 13:52:44 +0000 (13:52 +0000)]
[InstCombine][X86][SSE41] The SSE41 PMOVSX intrinsics are auto upgraded now and aren't handled by InstCombine any more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270561
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 13:45:29 +0000 (13:45 +0000)]
[MC/ELF] - Fixed insufficient compression.s test
Main problem that .debug_info
section was used to check that llvm-dwarfdump is able to decompress
data that was compressed with llvm-mc tool. This section was not compressed
actually, because consumes more space in compressed view.
I changed testcase to use .debug_str section which is one that
is really compressed. So currently test do what is probably was expected to do:
checks that "data"->llvm-mc->llvm-dwarfdump->dumps back initial "data".
Differential revision: http://reviews.llvm.org/D20466
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270560
91177308-0d34-0410-b5e6-
96231b3b80d8
Than McIntosh [Tue, 24 May 2016 13:23:44 +0000 (13:23 +0000)]
Rework/enhance stack coloring data flow analysis.
Replace bidirectional flow analysis to compute liveness with forward
analysis pass. Treat lifetimes as starting when there is a first
reference to the stack slot, as opposed to starting at the point of the
lifetime.start intrinsic, so as to increase the number of stack
variables we can overlap.
Reviewers: gbiv, qcolumbet, wmi
Differential Revision: http://reviews.llvm.org/D18827
Bug: 25776
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270559
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 24 May 2016 13:07:23 +0000 (13:07 +0000)]
[X86][SSE] Added vector sitofp/uitofp folded load tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270558
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 12:48:46 +0000 (12:48 +0000)]
Recommit r270547 ([llvm-dwarfdump] - Teach dwarfdump to decompress debug sections in zlib style.)
Fix was:
1) Had to regenerate dwarfdump-test-zlib.elf-x86-64, dwarfdump-test-zlib-gnu.elf-x86-64
(because llvm-symbolizer-zlib.test uses that inputs for its purposes and failed).
2) Updated llvm-symbolizer-zlib.test (updated used call function address to match new files +
added one more check for newly created dwarfdump-test-zlib-gnu.elf-x86-64 binary input).
3) Updated comment in dwarfdump-test-zlib.cc.
Original commit message:
[llvm-dwarfdump] - Teach dwarfdump to decompress debug sections in zlib style.
Before this llvm-dwarfdump only recognized zlib-gnu compression style of headers,
this patch adds support for zlib style.
It looks reasonable to support both styles for dumping,
even if we are not going to suport generating of deprecated gnu one.
Differential revision: http://reviews.llvm.org/D20470
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270557
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Kolton [Tue, 24 May 2016 12:38:33 +0000 (12:38 +0000)]
[AMDGPU] Assembler: rework parsing of optional operands.
Summary:
Change process of parsing of optional operands. All optional operands use same parsing method - parseOptionalOperand().
No default values are added to OperandsVector.
Get rid of WORKAROUND_USE_DUMMY_OPERANDS_INSTEAD_MUTIPLE_DEFAULT_OPERANDS.
Reviewers: tstellarAMD, vpykhtin, artem.tamazov, nhaustov
Subscribers: arsenm, kzhuravl
Differential Revision: http://reviews.llvm.org/D20527
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270556
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Tue, 24 May 2016 12:05:16 +0000 (12:05 +0000)]
[AMDGPU][llvm-mc] Disassembler: support for TTMP/TBA/TMA registers.
Differential Revision: http://reviews.llvm.org/D20476
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270552
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Tue, 24 May 2016 11:06:22 +0000 (11:06 +0000)]
[llvm][AVX512][intrinsics] Fix vperm{b|w|d|q|ps|pd} intrinsics. Index is second argument to buildin function but it is first instruction operand.
Differential Revision: http://reviews.llvm.org/D20515
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270548
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 11:03:10 +0000 (11:03 +0000)]
Revert r270543 ("Recommit r270540")
Failed build bot in another test.
I am sorry for noise.
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/23679/testReport/junit/LLVM/DebugInfo/llvm_symbolizer_zlib_test/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270547
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 10:46:43 +0000 (10:46 +0000)]
Recommit r270540
fix: forgot to commit the updated dwarfdump-test-zlib.elf-x86-64
Original commit message:
[llvm-dwarfdump] - Teach dwarfdump to decompress debug sections in zlib style.
Before this llvm-dwarfdump only recognized zlib-gnu compression style of headers,
this patch adds support for zlib style.
It looks reasonable to support both styles for dumping,
even if we are not going to suport generating of deprecated gnu one.
Differential revision: http://reviews.llvm.org/D20470
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270543
91177308-0d34-0410-b5e6-
96231b3b80d8
Sagar Thakur [Tue, 24 May 2016 09:57:10 +0000 (09:57 +0000)]
[MIPS][LLVM-MC] Fix Disassemble of Negative Offset
Patch by Nitesh Jain.
Summary: The type of Imm in MipsDisassembler.cpp was incorrect since SignExtend64 return int64_t type.As per the MIPSr6 doc ,the offset is added to the address of the instruction following the branch (not the branch itself), to form a PC-relative effective target address hence “4” is added to the offset. The offset of some test case are update to reflect the changes due to “ + 4 ” offset and new test case for negative offset are added.
Reviewers: dsanders, vkalintiris
Differential Revision: http://reviews.llvm.org/D17540
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270542
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 09:44:44 +0000 (09:44 +0000)]
Revert r270540 "[llvm-dwarfdump] - Teach dwarfdump to decompress debug sections in zlib style."
it broked bot:
http://lab.llvm.org:8011/builders/clang-s390x-linux/builds/5036
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270541
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 24 May 2016 09:28:36 +0000 (09:28 +0000)]
[llvm-dwarfdump] - Teach dwarfdump to decompress debug sections in zlib style.
Before this llvm-dwarfdump only recognized zlib-gnu compression style of headers,
this patch adds support for zlib style.
It looks reasonable to support both styles for dumping,
even if we are not going to suport generating of deprecated gnu one.
Differential revision: http://reviews.llvm.org/D20470
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270540
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 24 May 2016 08:17:50 +0000 (08:17 +0000)]
[CostModel][X86][XOP] Added XOP costmodel for BITREVERSE
Now that we have a nice fast VPPERM solution. Added framework for future intrinsic costs as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270537
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 03:32:34 +0000 (03:32 +0000)]
Remove unused variable breaking -Werror builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270529
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 24 May 2016 01:22:20 +0000 (01:22 +0000)]
Revert "Revert r270478 "[LoopUnroll] Enable advanced unrolling analysis by default.""
This reverts commit r270512 and reapplies r270478. Originally it caused
PR27847, but it was fixed in r270517.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270518
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 24 May 2016 00:51:01 +0000 (00:51 +0000)]
[LoopUnrollAnalyzer] Fix a crash in UnrolledInstAnalyzer::visitCastInst.
This fixes PR27847.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270517
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 24 May 2016 00:06:04 +0000 (00:06 +0000)]
Remove unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270516
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Tue, 24 May 2016 00:04:23 +0000 (00:04 +0000)]
[msan] Add a test for vector compare x86 intrinsics.
This was actually meant to go in with r267966, but I forgot to
git add the file. Better late than never.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270515
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 23 May 2016 23:52:04 +0000 (23:52 +0000)]
Fix build error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270513
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 23 May 2016 23:42:35 +0000 (23:42 +0000)]
Revert r270478 "[LoopUnroll] Enable advanced unrolling analysis by default."
This caused PR27847.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270512
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 23 May 2016 23:41:13 +0000 (23:41 +0000)]
Make a symbol visitor and use it to dump CV symbols.
Differential Revision: http://reviews.llvm.org/D20534
Reviewed By: rnk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270511
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Mon, 23 May 2016 23:02:11 +0000 (23:02 +0000)]
test: Be consistent with clang's sanitizer lit config
The logic that sets up lit features for sanitizers is largely copied
between here and clang, except clang's was fixed some time ago to
handle multiple sanitizers (ie, Asan + Ubsan). This just makes the
code in LLVM consistent with how it's done in clang to avoid any
gotchas by users of this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270510
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Mon, 23 May 2016 22:54:06 +0000 (22:54 +0000)]
[ThinLTO] Refactor module loader handling into new LTO file (NFC)
Moved the ModuleLoader and supporting helper loadModuleFromBuffer out of
ThinLTOCodeGenerator and into new LTO.h/LTO.cpp files. This is in
preparation for a patch that will utilize these in the gold-plugin.
Note that there are some other pending patches (D20268 and D20290) that
also plan to refactor common interfaces and functionality into this same
pair of new files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270509
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 May 2016 22:47:07 +0000 (22:47 +0000)]
[WebAssembly] Basic TargetTransformInfo support for SIMD128.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270508
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 23 May 2016 22:38:06 +0000 (22:38 +0000)]
llvm-dwp: Reduce indentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270507
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 23 May 2016 22:21:10 +0000 (22:21 +0000)]
llvm-dwp: Split out processing of input sections to improve readability
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270503
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 23 May 2016 22:18:59 +0000 (22:18 +0000)]
Tweak to change in r270491 to deal with the lld-x86_64-darwin13 bot having a old xar.h header.
Reviewed the change with Chris Bieneman and Pete Cooper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270502
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 23 May 2016 22:17:36 +0000 (22:17 +0000)]
[X86][SSE] Updated (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) fast-isel codegen to match D20528
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270501
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 23 May 2016 22:16:45 +0000 (22:16 +0000)]
[IRCE] Optimize "uses" not branches; NFCI
This changes IRCE to optimize uses, and not branches. This change is
NFCI since the uses we do inspect are in practice only ever going to be
the condition use in conditional branches; but this flexibility will
later allow us to analyze more complex expressions than just a direct
branch on a range check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270500
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 23 May 2016 22:09:04 +0000 (22:09 +0000)]
[InstSimplify] add vector tests for isKnownNonZero
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270498
91177308-0d34-0410-b5e6-
96231b3b80d8