OSDN Git Service
Hemant Kulkarni [Tue, 29 Mar 2016 02:41:49 +0000 (02:41 +0000)]
[llvm-readobj] Support GNU style dyn-relocations
http://reviews.llvm.org/D18534
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264693
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 29 Mar 2016 01:36:01 +0000 (01:36 +0000)]
[PowerPC] Refactor popcnt[dw] target features
Instead of using two feature bits, one to indicate the availability of the
popcnt[dw] instructions, and another to indicate whether or not they're fast,
use a single enum. This allows more consistent control via target attribute
strings, and via Clang's command line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264690
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Tue, 29 Mar 2016 00:23:41 +0000 (00:23 +0000)]
[Codegen] Decrease minimum jump table density.
Minimum density for both optsize and non optsize are now options
-sparse-jump-table-density (default 10) for non optsize functions
-dense-jump-table-density (default 40) for optsize functions, which
matches the current default. This improves several benchmarks at google
at the cost of a small codesize increase. For code compiled with -Os,
the old behavior continues
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264689
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Mon, 28 Mar 2016 23:14:29 +0000 (23:14 +0000)]
Sample profile summary cleanup
Replace references to MaxHeadSamples with MaxFunctionCount
Differential Revision: http://reviews.llvm.org/D18522
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264686
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 28 Mar 2016 22:52:20 +0000 (22:52 +0000)]
[WebAssembly] Remove duplicate disabling of passes
Also put all the disabled passes together
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264684
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 28 Mar 2016 22:39:35 +0000 (22:39 +0000)]
[PowerPC] Clarify a comment in PPCTTI about vector loads
This should say that we could do unaligned vector loads on the P7 using VSX
instructions, not that we should.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264683
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 22:16:01 +0000 (22:16 +0000)]
[docs] Corrections w.r.t V2 of the coverage mapping format
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264679
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 28 Mar 2016 22:15:15 +0000 (22:15 +0000)]
[PGO] More comments how function pointers for indirect calls are mapped
to function names
Summary:
Hopefully this will make it easier for the next person to figure all
this out...
Reviewers: bogner, davidxl
Subscribers: davidxl, cfe-commits
Differential Revision: http://reviews.llvm.org/D18489
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264678
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 22:12:21 +0000 (22:12 +0000)]
regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264677
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 22:11:06 +0000 (22:11 +0000)]
fix checks: *_DAG -> *-DAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264676
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 22:10:40 +0000 (22:10 +0000)]
[Coverage] Fix the expected counts in instrprof-comdat.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264675
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 22:03:07 +0000 (22:03 +0000)]
fix CHECK_NEXT -> CHECK-NEXT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264674
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 22:00:38 +0000 (22:00 +0000)]
fix CHECK_DAG -> CHECK-DAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264673
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 21:58:27 +0000 (21:58 +0000)]
fix CHECK_NEXT -> CHECK-NEXT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264672
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 21:56:48 +0000 (21:56 +0000)]
fix CHECK_LABEL -> CHECK-LABEL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264671
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 21:52:53 +0000 (21:52 +0000)]
trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264670
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 28 Mar 2016 21:38:35 +0000 (21:38 +0000)]
Move use of scoped enum in MachineFunctionProperties after its declaration
This should fix the build with MSVC 2013
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264668
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 28 Mar 2016 21:37:02 +0000 (21:37 +0000)]
Remove personality for declarations in CloneModule.
Personality is copied as part of copyFunctionAttributes, but it is
invalid on a declaration. Remove the personality attribute it the
function body is not cloned.
Also add a verifier run over output modules in the llvm-split tool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264667
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 28 Mar 2016 21:33:52 +0000 (21:33 +0000)]
[X86][SSE] Vectorize a bit (AND/XOR/OR) op if a BUILD_VECTOR has the same op for all their scalar elements.
If all a BUILD_VECTOR's source elements are the same bit (AND/XOR/OR) operation type and each has one constant operand, lower to a pair of BUILD_VECTOR and just apply the bit operation to the vectors.
The constant operands will form a constant vector meaning that we still only have a single BUILD_VECTOR to lower and we will have replaced all the scalarized operations with a single SSE equivalent.
Its not in our interest to start make a general purpose vectorizer from this, but I'm seeing enough of these scalar bit operations from the later legalization/scalarization stages to support them at least.
Differential Revision: http://reviews.llvm.org/D18492
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264666
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 28 Mar 2016 21:24:46 +0000 (21:24 +0000)]
docs: Fix footnote after r260042.
r260042 removed a footnote referring to autoconf, but it left
around one item still referring to that footnote (libtool), and
it didn't renumber the later footnote reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264663
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 28 Mar 2016 21:14:24 +0000 (21:14 +0000)]
fix CHECK_NEXT -> CHECK-NEXT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264661
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 21:06:42 +0000 (21:06 +0000)]
Reapply (2x) "[PGO] Fix name encoding for ObjC-like functions"
Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.
I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).
What's changed since the original commit?
- I fixed up the covmap-V2 binary format tests using a linux VM.
- I weakened the CHECK lines in instrprof-comdat.h to account for the
fact that there have been bugfixes to clang coverage. These will be
fixed up in a follow-up.
- I added an assert to make sure we don't get bitten by this again.
- I constructed the c-general.profraw file without name compression
enabled to appease some bots.
Differential Revision: http://reviews.llvm.org/D18516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264658
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 28 Mar 2016 21:06:26 +0000 (21:06 +0000)]
Add an IR Verifier check for orphaned DICompileUnits.
A DICompileUnit that is not listed in llvm.dbg.cu will cause assertion
failures and/or crashes in the backend. The Verifier should reject this.
rdar://problem/
25369499
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264657
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 28 Mar 2016 21:04:13 +0000 (21:04 +0000)]
[LVers] Change CHECK_LABEL to CHECK-LABEL (underscore->dash)
Thanks to Sanjoy for catching this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264656
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 28 Mar 2016 21:00:21 +0000 (21:00 +0000)]
docs: Try to remove weird linebreak from generated html.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264654
91177308-0d34-0410-b5e6-
96231b3b80d8
Ryan Govostes [Mon, 28 Mar 2016 20:42:56 +0000 (20:42 +0000)]
[asan] Fix testcase for r264645
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264652
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 20:39:41 +0000 (20:39 +0000)]
Explicitly test BitstreamReader::setArtificialByteLimit, NFC
Explicitly check that artificial byte limit is rounded correctly by
exposing BitstreamReader::Size through a new accessor, getSizeIfKnown.
The original code for rounding (from r264547) wasn't obviously correct,
and even though r264623 cleaned it up (by calling llvm::alignTo) I think
it's worth testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264650
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 28 Mar 2016 20:36:28 +0000 (20:36 +0000)]
Handle section vs global name conflict.
This is a fix for PR26941.
When there is both a section and a global definition with the same
name, the global wins.
Section symbols are not added to the symbol table; section references
are left undefined and fixed up in the object writer unless they've
been satisfied by some other definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264649
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 28 Mar 2016 20:32:38 +0000 (20:32 +0000)]
docs: Update Ninja link, also fix link syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264648
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 20:30:15 +0000 (20:30 +0000)]
Remove accidentally duplicated test
This was identical to setArtificialByteLimitNotWordBoundary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264646
91177308-0d34-0410-b5e6-
96231b3b80d8
Ryan Govostes [Mon, 28 Mar 2016 20:28:57 +0000 (20:28 +0000)]
[asan] Support dead code stripping on Mach-O platforms
On OS X El Capitan and iOS 9, the linker supports a new section
attribute, live_support, which allows dead stripping to remove dead
globals along with the ASAN metadata about them.
With this change __asan_global structures are emitted in a new
__DATA,__asan_globals section on Darwin.
Additionally, there is a __DATA,__asan_liveness section with the
live_support attribute. Each entry in this section is simply a tuple
that binds together the liveness of a global variable and its ASAN
metadata structure. Thus the metadata structure will be alive if and
only if the global it references is also alive.
Review: http://reviews.llvm.org/D16737
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264645
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 20:20:40 +0000 (20:20 +0000)]
Revert "Reapply "[PGO] Fix name encoding for ObjC-like functions""
This reverts commit r264641 to investigate why c-general.test is failing
on the bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264643
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 20:12:07 +0000 (20:12 +0000)]
Reapply "[PGO] Fix name encoding for ObjC-like functions"
Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.
I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).
This reverts the revert commit
beaf3d18. What's changed?
- I fixed up the covmap-V2 binary format tests using a linux VM.
- I updated the expected counts in instrprof-comdat.h to account for
the fact that there have been bugfixes to clang coverage.
- I added an assert to make sure we don't get bitten by this again.
Differential Revision: http://reviews.llvm.org/D18516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264641
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 28 Mar 2016 19:23:51 +0000 (19:23 +0000)]
Simplify how we represent relocation iterators.
Instead of using a bit to detect if they are "dynamic", just look at
sh_link.
This is a simplification on its own, and will help with using
llvm-objdump in dynamic objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264624
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Mon, 28 Mar 2016 19:23:23 +0000 (19:23 +0000)]
Use 'alignTo' instead of re-inventing it. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264623
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Spertus [Mon, 28 Mar 2016 19:06:17 +0000 (19:06 +0000)]
Submitted new file with wrong line endings. Correcting...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264620
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Mon, 28 Mar 2016 18:58:05 +0000 (18:58 +0000)]
Profile summary cleanup.
Differential Revision: http://reviews.llvm.org/D18468
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264619
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Mon, 28 Mar 2016 18:54:58 +0000 (18:54 +0000)]
Fix builds on Windows broken in r264598.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264618
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 28 Mar 2016 18:45:30 +0000 (18:45 +0000)]
[PGO] Update r264611 to use C-style comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264614
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 28 Mar 2016 18:27:44 +0000 (18:27 +0000)]
[PGO] Comment how function pointers for indirect calls are mapped to function names
Summary:
Hopefully this will make it easier for the next person to figure all
this out...
Reviewers: bogner, davidxl
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D18490
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264611
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 28 Mar 2016 18:19:32 +0000 (18:19 +0000)]
dos2unix CMakeLists.txt
The sign now reads "0 days since the last line ending confusion"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264609
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 28 Mar 2016 18:18:46 +0000 (18:18 +0000)]
MIRParser: Add %subreg.xxx syntax for subregister index operands
Differential Revision: http://reviews.llvm.org/D18279
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264608
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 28 Mar 2016 18:18:41 +0000 (18:18 +0000)]
CodeGen: Correct specification of PHI nodes
They do have a def machine operand.
Fixing the definition is necessary for an upcoming patch.
Differential Revision: http://reviews.llvm.org/D18384
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264607
91177308-0d34-0410-b5e6-
96231b3b80d8
Haicheng Wu [Mon, 28 Mar 2016 18:17:07 +0000 (18:17 +0000)]
[AArch64] Do not lower scalar sdiv/udiv to a shifts + mul sequence when optimizing for minsize
Mimic what x86 does when optimizing sdiv/udiv for minsize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264606
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 28 Mar 2016 18:07:40 +0000 (18:07 +0000)]
Revert "[SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops"
This reverts commit r264596.
It does not compile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264604
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Spertus [Mon, 28 Mar 2016 17:59:40 +0000 (17:59 +0000)]
Forgot to commit this file in revision 264601
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264602
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Spertus [Mon, 28 Mar 2016 17:58:38 +0000 (17:58 +0000)]
Use VS2015 Project Support for Natvis to eliminate the need to manually install natvis files
When using Visual Studio 2015, cmake now puts the native visualizers in llvm.sln, so the developer automatically sees custom visualizations.
Much thanks to ariccio who provided extensive help on this change. (manual installation still needed on VS2013)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264601
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 28 Mar 2016 17:52:08 +0000 (17:52 +0000)]
[PowerPC] On the A2, popcnt[dw] are very slow
The A2 cores support the popcntw/popcntd instructions, but they're microcoded,
and slower than our default software emulation. Specifically, popcnt[dw] take
approximately 74 cycles, whereas our software emulation takes only 24-28
cycles.
I've added a new target feature to indicate a slow popcnt[dw], instead of just
removing the existing target feature from the a2/a2q processor models, because:
1. This allows us to return more accurate information via the TTI interface
(I recognize that this currently makes no practical difference)
2. Is hopefully easier to understand (it allows the core's features to match
its manual while still having the desired effect).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264600
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 28 Mar 2016 17:45:48 +0000 (17:45 +0000)]
Remove else after return
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264599
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Mon, 28 Mar 2016 17:40:08 +0000 (17:40 +0000)]
Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes.
Differential revision: http://reviews.llvm.org/D18469
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264598
91177308-0d34-0410-b5e6-
96231b3b80d8
Hyojin Sung [Mon, 28 Mar 2016 17:22:25 +0000 (17:22 +0000)]
[SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops
When eliminating or merging almost empty basic blocks, the existence of non-trivial PHI nodes
is currently used to recognize potential loops of which the block is the header and keep the block.
However, the current algorithm fails if the loops' exit condition is evaluated only with volatile
values hence no PHI nodes in the header. Especially when such a loop is an outer loop of a nested
loop, the loop is collapsed into a single loop which prevent later optimizations from being
applied (e.g., transforming nested loops into simplified forms and loop vectorization).
The patch augments the existing PHI node-based check by adding a pre-test if the BB actually
belongs to a set of loop headers and not eliminating it if yes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264596
91177308-0d34-0410-b5e6-
96231b3b80d8
Hemant Kulkarni [Mon, 28 Mar 2016 17:20:23 +0000 (17:20 +0000)]
[llvm-readobj] NFC Replace case by macros for PT_* enums
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264595
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Mon, 28 Mar 2016 17:08:56 +0000 (17:08 +0000)]
[PGO] Don't set the function hotness attribute when populating counters
Don't set the function hotness attribute on the fly. This changes the CFG
branch probability of the caller function, which leads to inconsistent BB
ordering. This patch moves the attribute setting to a separated loop after
the counts in all functions are populated.
Fixes PR27024 - PGO instrumentation profile data is not reflected in correct
basic blocks.
Differential Revision: http://reviews.llvm.org/D18491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264594
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 28 Mar 2016 17:05:30 +0000 (17:05 +0000)]
Introduce MachineFunctionProperties and the AllVRegsAllocated property
MachineFunctionProperties represents a set of properties that a MachineFunction
can have at particular points in time. Existing examples of this idea are
MachineRegisterInfo::isSSA() and MachineRegisterInfo::tracksLiveness() which
will eventually be switched to use this mechanism.
This change introduces the AllVRegsAllocated property; i.e. the property that
all virtual registers have been allocated and there are no VReg operands
left.
With this mechanism, passes can declare that they require a particular property
to be set, or that they set or clear properties by implementing e.g.
MachineFunctionPass::getRequiredProperties(). The MachineFunctionPass base class
verifies that the requirements are met, and handles the setting and clearing
based on the delcarations. Passes can also directly query and update the current
properties of the MF if they want to have conditional behavior.
This change annotates the target-independent post-regalloc passes; future
changes will also annotate target-specific ones.
Reviewers: qcolombet, hfinkel
Differential Revision: http://reviews.llvm.org/D18421
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264593
91177308-0d34-0410-b5e6-
96231b3b80d8
Hemant Kulkarni [Mon, 28 Mar 2016 16:48:10 +0000 (16:48 +0000)]
[llvm-size] Implement --common option
Differential Revision: http://reviews.llvm.org/D16820
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264591
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 16:14:07 +0000 (16:14 +0000)]
Revert "[PGO] Fix name encoding for ObjC-like functions"
This reverts commit r264587. Reverting to investigate 6 unexpected
failures on the ppc bot:
http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/2822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264590
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 28 Mar 2016 16:10:13 +0000 (16:10 +0000)]
AMDGPU/SI: Limit load clustering to 16 bytes instead of 4 instructions
Summary:
This helps prevent load clustering from drastically increasing register
pressure by trying to cluster 4 SMRDx8 loads together. The limit of 16
bytes was chosen, because it seems like that was the original intent
of setting the limit to 4 instructions, but more analysis could show
that a different limit is better.
This fixes yields small decreases in register usage with shader-db, but
also helps avoid a large increase in register usage when lane mask
tracking is enabled in the machine scheduler, because lane mask tracking
enables more opportunities for load clustering.
shader-db stats:
2379 shaders in 477 tests
Totals:
SGPRS: 49744 -> 48600 (-2.30 %)
VGPRS: 34120 -> 34076 (-0.13 %)
Code Size:
1282888 ->
1283184 (0.02 %) bytes
LDS: 28 -> 28 (0.00 %) blocks
Scratch: 495616 -> 492544 (-0.62 %) bytes per wave
Max Waves: 6843 -> 6853 (0.15 %)
Wait states: 0 -> 0 (0.00 %)
Reviewers: nhaehnle, arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18451
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264589
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 28 Mar 2016 15:54:01 +0000 (15:54 +0000)]
[SimplifyLibCalls] Transform printf("%s", "a") -> putchar('a').
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264588
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 15:52:08 +0000 (15:52 +0000)]
[PGO] Fix name encoding for ObjC-like functions
Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.
I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).
Differential Revision: http://reviews.llvm.org/D18516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264587
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 15:49:08 +0000 (15:49 +0000)]
[Coverage] Strip <unknown> from PGO names if no filenames are available
Patch suggested by David Li!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264586
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 28 Mar 2016 15:43:03 +0000 (15:43 +0000)]
[Hexagon] Improve handling of unaligned vector loads and stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264584
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 28 Mar 2016 15:05:30 +0000 (15:05 +0000)]
NFC: skip FenceInst up-front in AtomicExpandPass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264583
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 28 Mar 2016 14:52:21 +0000 (14:52 +0000)]
[Hexagon] Only use restore functions for single register at -Oz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264581
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 28 Mar 2016 14:42:03 +0000 (14:42 +0000)]
[Hexagon] Speed up frame lowering when no optimizations are enabled
- Do not optimize stack slots in optnone functions.
- Get aligned-base register from HexagonMachineFunctionInfo instead of
looking for ALIGNA instruction in the function's body.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264580
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Mon, 28 Mar 2016 14:00:11 +0000 (14:00 +0000)]
Sparc: silently ignore .proc assembler directive
Differential Revision: http://reviews.llvm.org/D18463
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264579
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Mon, 28 Mar 2016 13:09:54 +0000 (13:09 +0000)]
[lanai] Add Lanai backend.
Add the Lanai backend to lib/Target.
General Lanai backend discussion on llvm-dev thread "[RFC] Lanai backend" (http://lists.llvm.org/pipermail/llvm-dev/2016-February/095118.html).
Differential Revision: http://reviews.llvm.org/D17011
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264578
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 28 Mar 2016 11:23:21 +0000 (11:23 +0000)]
[SROA] Fix typo in comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264573
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 28 Mar 2016 11:13:03 +0000 (11:13 +0000)]
C++11 is required, remove some preprocessor checks for it
We require C++11 to build, so remove a few remaining preprocessor checks for
'__cplusplus >= 201103L'. This should always be true.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264572
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuang-Yu Cheng [Mon, 28 Mar 2016 09:04:23 +0000 (09:04 +0000)]
[Power9] Implement new altivec instructions: bcd* series
This patch implements the following altivec instructions:
- Decimal Convert From/to National/Zoned/Signed-QWord:
bcdcfn. bcdcfz. bcdctn. bcdctz. bcdcfsq. bcdctsq.
- Decimal Copy-Sign/Set-Sign:
bcdcpsgn. bcdsetsgn.
- Decimal Shift/Unsigned-Shift/Shift-and-Round:
bcds. bcdus. bcdsr.
- Decimal (Unsigned) Truncate:
bcdtrunc. bcdutrunc.
Total 13 instructions
Thanks Amehsan's advice! Thanks Kit's great help!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan
http://reviews.llvm.org/D17838
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264568
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuang-Yu Cheng [Mon, 28 Mar 2016 08:34:28 +0000 (08:34 +0000)]
[Power9] Implement new vsx instructions: insert, extract, test data class, min/max, reverse, permute, splat
This change implements the following vsx instructions:
- Scalar Insert/Extract
xsiexpdp xsiexpqp xsxexpdp xsxsigdp xsxexpqp xsxsigqp
- Vector Insert/Extract
xviexpdp xviexpsp xvxexpdp xvxexpsp xvxsigdp xvxsigsp
xxextractuw xxinsertw
- Scalar/Vector Test Data Class
xststdcdp xststdcsp xststdcqp
xvtstdcdp xvtstdcsp
- Maximum/Minimum
xsmaxcdp xsmaxjdp
xsmincdp xsminjdp
- Vector Byte-Reverse/Permute/Splat
xxbrd xxbrh xxbrq xxbrw
xxperm xxpermr
xxspltib
30 instructions
Thanks Nemanja for invaluable discussion! Thanks Kit's great help!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan
http://reviews.llvm.org/D16842
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264567
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 28 Mar 2016 07:47:58 +0000 (07:47 +0000)]
AVX-512: Fixed ICMP instruction selection for i1 operands
ICMP instruction selection fails on SKX and KNL for i1 operand.
I use XOR to resolve:
(A == B) is equivalent to (A xor B) == 0
Differential Revision: http://reviews.llvm.org/D18511
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264566
91177308-0d34-0410-b5e6-
96231b3b80d8
Chuang-Yu Cheng [Mon, 28 Mar 2016 07:38:01 +0000 (07:38 +0000)]
[Power9] Implement new vsx instructions: quad-precision move, fp-arithmetic
This change implements the following vsx instructions:
- quad-precision move
xscpsgnqp, xsabsqp, xsnegqp, xsnabsqp
- quad-precision fp-arithmetic
xsaddqp(o) xsdivqp(o) xsmulqp(o) xssqrtqp(o) xssubqp(o)
xsmaddqp(o) xsmsubqp(o) xsnmaddqp(o) xsnmsubqp(o)
22 instructions
Thanks Nemanja and Kit for careful review and invaluable discussion!
Reviewers: hal, nemanja, kbarton, tjablin, amehsan
http://reviews.llvm.org/D16110
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264565
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 28 Mar 2016 02:14:49 +0000 (02:14 +0000)]
llvm/test/Transforms/FunctionImport/funcimport.ll: -stats REQUIRES +Asserts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264561
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 28 Mar 2016 01:16:12 +0000 (01:16 +0000)]
[Coverage] Fix the way we load "<unknown>:func" records
When emitting coverage mappings for functions with local linkage and an
unknown filename, we use "<unknown>:func" for the PGO function name. The
problem is that we don't strip "<unknown>" from the name when loading
coverage data, like we do for other file names. Fix that and add a test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264559
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 28 Mar 2016 00:03:12 +0000 (00:03 +0000)]
BitcodeWriter: Replace dead code with an assertion, NFC
The caller of ValueEnumerator::EnumerateOperandType never sends in
metadata. Assert that, and remove the unnecessary logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264558
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:59:32 +0000 (23:59 +0000)]
BitcodeWriter: Reuse writeMetadataRecords, NFC
Change writeFunctionMetadata to call writeMetadataRecords. For now
there's no functionality change, but makes it easy to serialize other
types of metadata in the function block in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264557
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:56:04 +0000 (23:56 +0000)]
BitcodeWriter: Rename some functions for consistency, NFC
To match writeMetadataRecords, writeNamedMetadata and
writeMetadataStrings, change:
WriteModuleMetadata => writeModuleMetadata
WriteFunctionLocalMetadata => writeFunctionMetadata
Write##CLASS => write##CLASS
The only major change is "FunctionLocal" => "Function". The point is to
be less specific, in preparation for emitting normal metadata records
inside function metadata blocks (currently we only emit
`LocalAsMetadata` there).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264556
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:53:30 +0000 (23:53 +0000)]
BitcodeWriter: Split out writeMetadataRecords, NFC
Besides being a nice cleanup, this is preparation for reusing the code
in function metadata blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264555
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:38:36 +0000 (23:38 +0000)]
BitcodeWriter: Restructure WriteFunctionLocalMetadata, NFC
Use an early return to simplify logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264554
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:36:55 +0000 (23:36 +0000)]
Bitcode: Fix MSVC bot failure from r264549
make_unique => llvm::make_unique
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264553
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:22:31 +0000 (23:22 +0000)]
BitcodeWriter: Simplify tracking of function-local metadata, NFC
We don't really need a separate vector here; instead, point at a range
inside the main MDs array. This matches how r264551 references the
ranges of strings and non-strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264552
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:17:54 +0000 (23:17 +0000)]
Reapply ~"Bitcode: Collect all MDString records into a single blob"
Spiritually reapply commit r264409 (reverted in r264410), albeit with a
bit of a redesign.
Firstly, avoid splitting the big blob into multiple chunks of strings.
r264409 imposed an arbitrary limit to avoid a massive allocation on the
shared 'Record' SmallVector. The bug with that commit only reproduced
when there were more than "chunk-size" strings. A test for this would
have been useless long-term, since we're liable to adjust the chunk-size
in the future.
Thus, eliminate the motivation for chunk-ing by storing the string sizes
in the blob. Here's the layout:
vbr6: # of strings
vbr6: offset-to-blob
blob:
[vbr6]: string lengths
[char]: concatenated strings
Secondly, make the output of llvm-bcanalyzer readable.
I noticed when debugging r264409 that llvm-bcanalyzer was outputting a
massive blob all in one line. Past a small number, the strings were
impossible to split in my head, and the lines were way too long. This
version adds support in llvm-bcanalyzer for pretty-printing.
<STRINGS abbrevid=4 op0=3 op1=9/> num-strings = 3 {
'abc'
'def'
'ghi'
}
From the original commit:
Inspired by Mehdi's similar patch, http://reviews.llvm.org/D18342, this
should (a) slightly reduce bitcode size, since there is less record
overhead, and (b) greatly improve reading speed, since blobs are super
cheap to deserialize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264551
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:04:04 +0000 (23:04 +0000)]
BitcodeWriter: Simplify and test writing blobs, NFC
Split helper out of EmitRecordWithAbbrevImpl called emitBlob to reduce
code duplication, and add a few tests for it.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264550
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 23:00:59 +0000 (23:00 +0000)]
Support: Implement StreamingMemoryObject::getPointer
The implementation is fairly obvious. This is preparation for using
some blobs in bitcode.
For clarity (and perhaps future-proofing?), I moved the call to
JumpToBit in BitstreamCursor::readRecord ahead of calling
MemoryObject::getPointer, since JumpToBit can theoretically (a) read
bytes, which (b) invalidates the blob pointer.
This isn't strictly necessary the two memory objects we have:
- The return of RawMemoryObject::getPointer is valid until the memory
object is destroyed.
- StreamingMemoryObject::getPointer is valid until the next chunk is
read from the stream. Since the JumpToBit call is only going ahead
to a word boundary, we'll never load another chunk.
However, reordering makes it clear by inspection that the blob returned
by BitstreamCursor::readRecord will be valid.
I added some tests for StreamingMemoryObject::getPointer and
BitstreamCursor::readRecord.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264549
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:55:19 +0000 (22:55 +0000)]
Support: Move StreamingMemoryObject{,Test}.cpp, NFC
Change the filename to indicate this is a test, rename the tests, move
them into an anonymous namespace, and rename some variables. All to
match our usual style before making further changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264548
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:49:32 +0000 (22:49 +0000)]
Bitcode: Add SimpleBitstreamCursor::setArtificialByteLimit
Allow users of SimpleBitstreamCursor to limit the number of bytes
available to the cursor. This is preparation for instantiating a cursor
that isn't allowed to load more bytes from a StreamingMemoryObject (just
move around the ones already-loaded).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264547
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:45:25 +0000 (22:45 +0000)]
Bitcode: Add SimpleBitstreamCursor::getPointerToByte, etc.
Add API to SimpleBitstreamCursor to allow users to translate between
byte addresses and pointers.
- jumpToPointer: move the bit position to a particular pointer.
- getPointerToByte: get the pointer for a particular byte.
- getPointerToBit: get the pointer for the byte of the current bit.
- getCurrentByteNo: convenience function for assertions and tests.
Mainly adds unit tests (getPointerToBit/Byte already has a use), but
also preparation for eventually using jumpToPointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264546
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Sun, 27 Mar 2016 22:40:55 +0000 (22:40 +0000)]
Bitcode: Split out SimpleBitstreamCursor
Split out SimpleBitstreamCursor from BitstreamCursor, which is a
lower-level cursor with no knowledge of bitcode blocks, abbreviations,
or records. It just knows how to read bits and navigate the stream.
This is mainly organizational, to separate the API for manipulating raw
bits from that for bitcode concepts like Record and Block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264545
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Sun, 27 Mar 2016 20:50:05 +0000 (20:50 +0000)]
Revert "isPodLike: more precise"
This reverts commit
c45f2afac5d6855a4804456a0f718563dc47ada0.
Looks like it may be causing a failure, I'll revert for now.
from
lib/CodeGen/AsmPrinter/DwarfDebug.cpp:14:
/usr/include/c++/4.9.2/bits/stl_pair.h: In instantiation of
'std::pair<_T1, _T2>& std::pair<_T1,
_T2>::operator=(const std::pair<_T1, _T2>&) [with _T1 =
std::unique_ptr<llvm::DwarfTypeUnit>; _T2 = const
llvm::DICompositeType*]':
/usr/include/c++/4.9.2/bits/stl_pair.h:160:8: error: use of deleted
function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp,
_Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp =
llvm::DwarfTypeUnit; _Dp = std::default_delete<llvm::DwarfTypeUnit>]'
first = __p.first;
^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264544
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 27 Mar 2016 20:44:35 +0000 (20:44 +0000)]
workaround for an IR variable named %.
(which SimplifyCFG can produce...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264543
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 27 Mar 2016 20:43:02 +0000 (20:43 +0000)]
add scrubber for excessive leading whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264542
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Sun, 27 Mar 2016 20:32:21 +0000 (20:32 +0000)]
isPodLike: more precise
I tried to use isPodLike in:
http://reviews.llvm.org/D18483
That failed because !is_class is too strict on platforms which don't yet
have is_trivially_copyable. This update tries to make isPodLike smarter
for platforms which don't have is_trivially_copyable, and AFAICT it
Should Just Work on all of them. I'll revert if the bots disagree with
me.
I'll also rename isPodLike to isTriviallyCopyable if this all works out,
since that's what the standard calls it now and one day we'll be rid of
isPodLike.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264541
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 27 Mar 2016 15:36:43 +0000 (15:36 +0000)]
Use DAG check to try to appease bot
Try to appease
http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/34772. This was
the only check that didn't use DAG and it wasn't found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264538
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 27 Mar 2016 15:27:30 +0000 (15:27 +0000)]
[ThinLTO] Add optional import message and statistics
Summary:
Add a statistic to count the number of imported functions. Also, add a
new -print-imports option to emit a trace of imported functions, that
works even for an NDEBUG build.
Note that emitOptimizationRemark does not work for the above printing as
it expects a Function object and DebugLoc, neither of which we have
with summary-based importing.
This is part 2 of D18487, the first part was committed separately as
r264536.
Reviewers: joker.eph
Subscribers: llvm-commits, joker.eph
Differential Revision: http://reviews.llvm.org/D18487
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264537
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 27 Mar 2016 15:01:11 +0000 (15:01 +0000)]
[ThinLTO] Don't try to import alias unless aliasee can be imported
With r264503, aliases are now being added to the GlobalsToImport set
even when their aliasees can't be imported due to their linkage type.
While the importing worked correctly (the aliases imported as
declarations) due to the logic in doImportAsDefinition, there is no
point to adding them to the GlobalsToImport set.
Additionally, with D18487 it was resulting in incorrectly printing a
message indicating that the alias was imported.
To avoid this, delay adding aliases to the GlobalsToImport set until
after the linkage type of the aliasee is checked.
This patch is part of D18487.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264536
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sun, 27 Mar 2016 05:40:56 +0000 (05:40 +0000)]
[PowerPC] Map max/minnum intrinsics and fmax/fmin to ISD nodes for CTR-based loop legality
Intrinsic::maxnum and Intrinsic::minnum, along with the associated libc
function calls (fmax[f], etc.) generally map to function calls after lowering.
For some vector types with QPX at least, however, we can legally lower these,
and we don't need to prohibit CTR-based loops on their account.
It turned out, however, that the logic that checked the opcodes associated with
intrinsics was broken (it would set the Opcode variable, but that variable was
later checked only if set for some otherwise-external function call.
This fixes the latter problem and adds the FMAX/MINNUM mappings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264532
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kruse [Sat, 26 Mar 2016 23:32:57 +0000 (23:32 +0000)]
[Verifier] Reject PHIs using defs from own block.
Reject the following IR as malformed (assuming that %entry, %next are
not in a loop):
next:
%y = phi i32 [ 0, %entry ]
%x = phi i32 [ %y, %entry ]
Such PHI nodes came up in PR26718. While there was no consensus on
whether or not this is valid IR, most opinions on that bug and in a
discussion on the llvm-dev mailing list tended towards a
"strict interpretation" (term by Joseph Tremoulet) of PHI node uses.
Also, the language reference explicitly states that "the use of each
incoming value is deemed to occur on the edge from the corresponding
predecessor block to the current block" and
`DominatorTree::dominates(Instruction*, Use&)` uses this definition as
well.
For the code mentioned in PR15384, clang does not compile to such PHIs
(anymore?). The test case still hangs when replacing `%tmp6` with `%tmp`
in revisions before r176366 (where PR15384 has been fixed). The
occurrence of %tmp6 therefore was probably unintentional. Its value is
not used except in other PHIs.
Reviewers: majnemer, reames, JosephTremoulet, bkramer, grosser, jdoerfert, kparzysz, sanjoy
Differential Revision: http://reviews.llvm.org/D18443
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264528
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 26 Mar 2016 23:30:50 +0000 (23:30 +0000)]
[SimplifyCFG] propagate branch metadata when creating select (PR26636)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264527
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 26 Mar 2016 23:09:25 +0000 (23:09 +0000)]
minimize test cases
These are tests for store transforms.
The loads, adds, and geps were irrelevant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264526
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sat, 26 Mar 2016 20:32:14 +0000 (20:32 +0000)]
llvm-dwp: Include the dwo name (if available) when diagnosing duplicate CU IDs from dwp input files
If you're building dwps from other dwps, it can be hard to track down a
duplicate CU ID if it comes from two compilations of the same file in
different modes, etc. By including the .dwo path (which is hopefully
more unique than the file path) it can help track down where the
duplicates came from.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264520
91177308-0d34-0410-b5e6-
96231b3b80d8