OSDN Git Service
Francis Ricci [Fri, 9 Jun 2017 20:31:53 +0000 (20:31 +0000)]
[ADT] Make iterable SmallVector template overrides more specific
Summary:
This prevents the iterator overrides from being selected in
the case where non-iterator types are used as arguments, which
is of particular importance in cases where other overrides with
identical types exist.
Reviewers: dblaikie, bkramer, rafael
Subscribers: llvm-commits, efriedma
Differential Revision: https://reviews.llvm.org/D33919
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305105
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Fri, 9 Jun 2017 19:31:10 +0000 (19:31 +0000)]
[Sink] Fix predicate in legality check
Summary:
isSafeToSpeculativelyExecute is the wrong predicate to use here.
All that checks for is whether it is safe to hoist a value due to
unaligned/un-dereferencable accesses. However, not only are we doing
sinking rather than hoisting, our concern is that the location
we're loading from may have been modified. Instead forbid sinking
any load across a critical edge.
Reviewers: majnemer
Subscribers: davide, llvm-commits
Differential Revision: https://reviews.llvm.org/D33179
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305102
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 9 Jun 2017 19:18:07 +0000 (19:18 +0000)]
I guess /dev/null is a bad idea on windows. Use a temp file instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305100
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 9 Jun 2017 19:03:00 +0000 (19:03 +0000)]
[AMDGPU] Add intrinsics for alignbit and alignbyte instructions
Differential Revision: https://reviews.llvm.org/D34046
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305098
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 9 Jun 2017 18:44:10 +0000 (18:44 +0000)]
[llvm-cvtres] Don't polute the test directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305097
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 9 Jun 2017 18:04:02 +0000 (18:04 +0000)]
Fix -Wreorder-fields warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305095
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 9 Jun 2017 17:54:36 +0000 (17:54 +0000)]
Allow VarStreamArray to use stateful extractors.
Previously extractors tried to be stateless with any additional
context information needed in order to parse items being passed
in via the extraction method. This led to quite cumbersome
implementation challenges and awkwardness of use. This patch
brings back support for stateful extractors, making the
implementation and usage simpler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305093
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Fri, 9 Jun 2017 17:34:30 +0000 (17:34 +0000)]
Implement COFF emission for parsed Windows Resource ( .res) files.
Summary: Add the WindowsResourceCOFFWriter class for producing the final COFF after all parsing is done.
Reviewers: hiraditya!, zturner, ruiu
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34020
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305092
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 9 Jun 2017 17:29:52 +0000 (17:29 +0000)]
[X86][SSE] Add support for PACKSS nodes to faux shuffle extraction
If the inputs won't saturate during packing then we can treat the PACKSS as a truncation shuffle
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305091
91177308-0d34-0410-b5e6-
96231b3b80d8
Vassil Vassilev [Fri, 9 Jun 2017 16:37:39 +0000 (16:37 +0000)]
We do not need google test utils if we disabled LLVM_INCLUDE_TESTS
Fixes embedded uses of llvm where google testing framework is provided outside.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305088
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 9 Jun 2017 16:16:20 +0000 (16:16 +0000)]
[LazyValueInfo] Don't run the more complex predicate handling code for EQ and NE in getPredicateResult
Summary:
Unless I'm mistaken, the special handling for EQ/NE should cover everything and there is no reason to fallthrough to the more complex code. For that matter I'm not sure there's any reason to special case EQ/NE other than avoiding creating temporary ConstantRanges.
This patch moves the complex code into an else so we only do it when we are handling a predicate other than EQ/NE.
Reviewers: anna, reames, resistor, Farhana
Reviewed By: anna
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34000
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305086
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 9 Jun 2017 15:26:21 +0000 (15:26 +0000)]
[Hexagon] Fixes and updates to the selection patterns
- Add some missing patterns.
- Use C4_cmplte in branch patterns.
- Fix signedness of immediate operand in M2_accii.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305085
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Fri, 9 Jun 2017 14:53:45 +0000 (14:53 +0000)]
SelectionDAG: Remove deleted nodes from legalized set to avoid clash with newly created nodes
Summary:
During DAG legalization loop in SelectionDAG::Legalize(),
bookkeeping of the SDNodes that were already legalized is implemented
with SmallPtrSet (LegalizedNodes). This kind of set stores only pointers
to objects, not the objects themselves. Unfortunately, if SDNode is
deleted during legalization for some reason, LegalizedNodes set is not
informed about this fact. This wouldn’t be so bad, if SelectionDAG wouldn’t reuse
space deallocated after deletion of unused nodes, for creation of new
ones. Because of this, new nodes, created during legalization often can
have pointers identical to ones that have been previously legalized,
added to the LegalizedNodes set, and deleted afterwards. This in turn
causes, that newly created nodes, sharing the same pointer as deleted
old ones, are present in LegalizedNodes *already at the moment of
creation*, so we never call Legalize on them.
The fix facilitates the fact, that DAG notifies listeners about each
modification. I have registered DAGNodeDeletedListener inside
SelectionDAG::Legalize, with a callback function that removes any
pointer of any deleted SDNode from the LegalizedNodes set. With this
modification, LegalizeNodes set does not contain pointers to nodes that
were deleted, so newly created nodes can always be inserted to it, even
if they share pointers with old deleted nodes.
Patch by pawel.szczerbuk@intel.com
The issue this patch addresses causes failures in an out-of-tree target,
and i was not able to create a reproducer for an in-tree target, hence
there is no test-case.
Reviewers: delena, spatel, RKSimon, hfinkel, davide, qcolombet
Reviewed By: delena
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33891
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305084
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Fri, 9 Jun 2017 14:37:08 +0000 (14:37 +0000)]
Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns"
By target hookifying getRegisterType, getNumRegisters, getVectorBreakdown,
backends can request that LLVM to scalarize vector types for calls
and returns.
The MIPS vector ABI requires that vector arguments and returns are passed in
integer registers. With SelectionDAG's new hooks, the MIPS backend can now
handle LLVM-IR with vector types in calls and returns. E.g.
'call @foo(<4 x i32> %4)'.
Previously these cases would be scalarized for the MIPS O32/N32/N64 ABI for
calls and returns if vector types were not legal. If vector types were legal,
a single 128bit vector argument would be assigned to a single 32 bit / 64 bit
integer register.
By teaching the MIPS backend to inspect the original types, it can now
implement the MIPS vector ABI which requires a particular method of
scalarizing vectors.
Previously, the MIPS backend relied on clang to scalarize types such as "call
@foo(<4 x float> %a) into "call @foo(i32 inreg %1, i32 inreg %2, i32 inreg %3,
i32 inreg %4)".
This patch enables the MIPS backend to take either form for vector types.
The previous version of this patch had a "conditional move or jump depends on
uninitialized value".
Reviewers: zoran.jovanovic, jaydeep, vkalintiris, slthakur
Differential Revision: https://reviews.llvm.org/D27845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305083
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 9 Jun 2017 14:22:03 +0000 (14:22 +0000)]
[SimplifyLibCalls] fix formatting; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305081
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 9 Jun 2017 14:21:18 +0000 (14:21 +0000)]
[ValueTracking] fix typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305080
91177308-0d34-0410-b5e6-
96231b3b80d8
David Stuttard [Fri, 9 Jun 2017 14:16:22 +0000 (14:16 +0000)]
[AMDGPU] Fix for issue in alloca to vector promotion pass
Summary:
Alloca promotion pass not dealing with non-canonical input
Added some additional checks so the pass simply backs-off forms it can't deal with (non-canonical)
Also added some test cases in non-canonical form to check that it no longer crashes
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tpr, t-tye
Differential Revision: https://reviews.llvm.org/D31710
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305079
91177308-0d34-0410-b5e6-
96231b3b80d8
Javed Absar [Fri, 9 Jun 2017 14:07:21 +0000 (14:07 +0000)]
[ARM] Custom machine-scheduler. NFCI.
This patch creates a customised machine-scheduler for ARM targets,
so that subsequently DAG mutations etc can be added.
Reviewed by: hahn, rengolin, rovka.
Differential Revision: https://reviews.llvm.org/D34039
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305078
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Fri, 9 Jun 2017 14:04:03 +0000 (14:04 +0000)]
[MC] Fix compiler crash in AsmParser::Lex
When an empty comment is present in an assembly file, the compiler will crash because it checks the first character for '\n' or '\r'.
The fix consists of also checking if the string is empty before accessing the *front* method of the StringRef.
A test is included for the x86 target, but this issue is reproducible with other targets as well.
Patch by Alexandru Guduleasa!
Reviewers: niravd, grosbach, llvm-commits
Reviewed By: niravd
Differential Revision: https://reviews.llvm.org/D33993
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305077
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 9 Jun 2017 13:30:58 +0000 (13:30 +0000)]
[Hexagon] Add LLVM header to HexagonPatterns.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305074
91177308-0d34-0410-b5e6-
96231b3b80d8
Serge Rogatch [Fri, 9 Jun 2017 13:23:23 +0000 (13:23 +0000)]
[XRay] Fix computation of function size subject to XRay threshold
Summary:
Currently XRay compares its threshold against `Function::size()` . However, `Function::size()` returns the number of basic blocks (as I understand, such as cycle bodies, if/else bodies, switch-case bodies, etc.), rather than the number of instructions.
The name of the parameter `-fxray-instruction-threshold=N`, as well as XRay documentation at http://llvm.org/docs/XRay.html , suggests that instructions should be counted, rather than the number of basic blocks.
I see two options:
1. Count the number of MachineInstr`s in MachineFunction : this gives better estimate for the number of assembly instructions on the target. So a user can check in disassembly that the threshold works more or less correctly.
2. Count the number of Instruction`s in a Function : AFAIK, this gives correct number of IR instructions, which the user can check in IR listing. However, this number may be far (several times for small functions) from the number of assembly instructions finally emitted.
Option 1 is implemented in this patch because I think that having the closer estimate for the number of assembly instructions emitted is more important than to have a clear definition of the metric.
Reviewers: dberris, rengolin
Reviewed By: dberris
Subscribers: llvm-commits, iid_iunknown
Differential Revision: https://reviews.llvm.org/D34027
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305072
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Fri, 9 Jun 2017 12:57:35 +0000 (12:57 +0000)]
Prevent RemoveDeadNodes from deleted already deleted node.
This prevents against assertion errors like PR32659 which occur from a
replacement deleting a node after it's been added to the list argument
of RemoveDeadNodes. The specific failure from PR32659 does not
currently happen, but it is still potentially possible. The underlying
cause is that the callers of the change dfunction builds up a list of
nodes to delete after having moved their uses and it possible that a
move of a later node will cause a previously deleted nodes to be
deleted.
Reviewers: bkramer, spatel, davide
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33731
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305070
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Fri, 9 Jun 2017 09:19:09 +0000 (09:19 +0000)]
[ARM] Add scheduling info for VFMS
The scalar VFMS instructions did not have scheduling information attached (but
VFMA did), which was causing assertion failures with the Cortex-A57 scheduling
model and -fp-contract=fast.
Differential Revision: https://reviews.llvm.org/D34040
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305064
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 9 Jun 2017 08:50:39 +0000 (08:50 +0000)]
llvm/test/DebugInfo/PDB/pdbdump-debug-subsections.test: Try to unbreak r305043.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305063
91177308-0d34-0410-b5e6-
96231b3b80d8
Stefan Maksimovic [Fri, 9 Jun 2017 07:57:05 +0000 (07:57 +0000)]
Test commit: remove whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305059
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 9 Jun 2017 07:29:03 +0000 (07:29 +0000)]
bugpoint: disabling symbolication of bugpoint-executed programs
Initial implementation - needs similar work/testing for other tools
bugpoint invokes (llc, lli I think, maybe more).
Alternatively (as suggested by chandlerc@) an environment variable could
be used. This would allow the option to pass transparently through user
scripts, pass to compilers if they happened to be LLVM-ish, etc.
I worry a bit about using cl::opt in the crash handling code - LLVM
might crash early, perhaps before the cl::opt is properly initialized?
Or at least before arguments have been parsed?
- should be OK since it defaults to "pretty", so if the crash is very
early in opt parsing, etc, then crash reports will still be symbolized.
I shyed away from doing this with an environment variable when I
realized that would require copying the existing environment and
appending the env variable of interest. But it seems there's no existing
LLVM API for accessing the environment (even the Support tests for
process launching have their own ifdefs for getting the environment). It
could be added, but seemed like a higher bar/untested codepath to
actually add environment variables.
Most importantly, this reduces the runtime of test/BugPoint/metadata.ll
in a split-dwarf Debug build from 1m34s to 6.5s by avoiding a lot of
symbolication. (this wasn't a problem for non-split-dwarf builds only
because the executable was too large to map into memory (due to bugpoint
setting a 400MB memory (including address space - not sure why? Going to
remove that) limit on the child process) so symbolication would fail
fast & wouldn't spend all that time parsing DWARF, etc)
Reviewers: chandlerc, dannyb
Differential Revision: https://reviews.llvm.org/D33804
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305056
91177308-0d34-0410-b5e6-
96231b3b80d8
Serguei Katkov [Fri, 9 Jun 2017 06:11:59 +0000 (06:11 +0000)]
[IndVars] Add an option to be able to disable LFTR
This change adds an option disable-lftr to be able to disable Linear Function Test Replace optimization.
By default option is off so current behavior is not changed.
Reviewers: reames, sanjoy, wmi, andreadb, apilipenko
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33979
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305055
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Fri, 9 Jun 2017 03:56:15 +0000 (03:56 +0000)]
[LoopVectorize] Don't preserve nsw/nuw flags on shrunken ops.
If we're shrinking a binary operation, it may be the case that the new
operations wraps where the old didn't. If this happens, the behavior
should be well-defined. So, we can't always carry wrapping flags with us
when we shrink operations.
If we do, we get incorrect optimizations in cases like:
void foo(const unsigned char *from, unsigned char *to, int n) {
for (int i = 0; i < n; i++)
to[i] = from[i] - 128;
}
which gets optimized to:
void foo(const unsigned char *from, unsigned char *to, int n) {
for (int i = 0; i < n; i++)
to[i] = from[i] | 128;
}
Because:
- InstCombine turned `sub i32 %from.i, 128` into
`add nuw nsw i32 %from.i, 128`.
- LoopVectorize vectorized the add to be `add nuw nsw <16 x i8>` with a
vector full of `i8 128`s
- InstCombine took advantage of the fact that the newly-shrunken add
"couldn't wrap", and changed the `add` to an `or`.
InstCombine seems happy to figure out whether we can add nuw/nsw on its
own, so I just decided to drop the flags. There are already a number of
places in LoopVectorize where we rely on InstCombine to clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305053
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 9 Jun 2017 03:29:20 +0000 (03:29 +0000)]
Inliner: Don't touch indirect calls
Other comments/implications are that this isn't intended behavior (nor
perserved/reimplemented in the new inliner) & complicates fixing the
'inlining' of trivially dead calls without consulting the cost function
first.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305052
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Fri, 9 Jun 2017 03:26:45 +0000 (03:26 +0000)]
Fix -Wunused-variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305051
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 9 Jun 2017 03:25:57 +0000 (03:25 +0000)]
[llvm-pdbdump] Fix -Wpessimizing-move warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305050
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 9 Jun 2017 03:21:29 +0000 (03:21 +0000)]
[InstCombine] Pass a proper context instruction to all of the calls into InstSimplify
Summary: This matches the behavior we already had for compares and makes us consistent everywhere.
Reviewers: dberlin, hfinkel, spatel
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33604
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305049
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Haarman [Fri, 9 Jun 2017 01:18:10 +0000 (01:18 +0000)]
[codeview] use 32-bit integer for RelocOffset in DebugLinesSubsection
Summary:
RelocOffset is a 32-bit value, but we previously truncated it to 16 bits.
Fixes PR33335.
Reviewers: zturner, hiraditya!
Reviewed By: zturner
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33968
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305043
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 9 Jun 2017 00:53:59 +0000 (00:53 +0000)]
[pdb] Don't crash on unknown debug subsections.
More and more unknown debug subsection kinds are being discovered
so we should make it possible to dump these and display the
bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305041
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 9 Jun 2017 00:40:19 +0000 (00:40 +0000)]
sink DebugCompressionType into MC for exposing to clang
This is a preparatory change to expose the debug compression style to
clang. It requires exposing the enumeration and passing the actual
value through to the backend from the frontend in actual value form
rather than a boolean that selects the GNU style of debug info
compression.
Minor tweak to the ELF Object Writer to use a variable for re-used
values. Add an assertion that debug information format is one of the
two currently known types if debug information is being compressed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305038
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 9 Jun 2017 00:28:08 +0000 (00:28 +0000)]
[CodeView] Support remaining debug subsection types
This adds support for Symbols, StringTable, and FrameData subsection
types. Even though these subsections rarely if ever appear in a PDB
file (they are usually in object files), there's no theoretical reason
why they *couldn't* appear in a PDB. The real issue though is that in
order to add support for dumping and writing them (which will be useful
for object files), we need a way to test them. And since there is no
support for reading and writing them to / from object files yet, making
PDB support them is the best way to both add support for the underlying
format and add support for tests at the same time. Later, when we go
to add support for reading / writing them from object files, we'll need
only minimal changes in the underlying read/write code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305037
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 8 Jun 2017 23:53:35 +0000 (23:53 +0000)]
Fix build by adding includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305036
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 8 Jun 2017 23:49:01 +0000 (23:49 +0000)]
[llvm-pdbdump] Support native ordering of subsections in raw mode.
This is the same change for the YAML Output style applied to the
raw output style. Previously we would queue up all subsections
until every one had been read, and then output them in a pre-
determined order. This was because some subsections need to be
read first in order to properly dump later subsections. This
patch allows them to be dumped in the order they appear.
Differential Revision: https://reviews.llvm.org/D34015
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305034
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 8 Jun 2017 23:39:33 +0000 (23:39 +0000)]
[llvm-pdbdump] Improve consistency among subcommands.
The pdb2yaml and raw subcommands did something very
similar but with a different output format, and they
used a lot of the same command line options, but each
one re-implemented the command line option with slightly
different spellings / options. This patch merges them
together into a single definition which is shared by
both subcommands. This new syntax also allows for more
flexibility in the way debug subsections are dumped.
Differential Revision: https://reviews.llvm.org/D33996
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305032
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 8 Jun 2017 23:38:22 +0000 (23:38 +0000)]
[CFI] Remove LinkerSubsectionsViaSymbols.
Since D17854 LinkerSubsectionsViaSymbols is unnecessary.
It is interfering with ThinLTO implementation of CFI-ICall, where
the aliases used on the !LinkerSubsectionsViaSymbols branch are
needed to export jump tables to ThinLTO backends.
This is the second attempt to land this change after fixing PR33316.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305031
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 8 Jun 2017 23:38:19 +0000 (23:38 +0000)]
[ExtractGV] Fix the doxygen comment on the constructor and the class to refer to global values instead of functions. While there fix an 80 column violation. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305030
91177308-0d34-0410-b5e6-
96231b3b80d8
Galina Kistanova [Thu, 8 Jun 2017 23:35:52 +0000 (23:35 +0000)]
Fixed warning: dereferencing type-punned pointer will break strict-aliasing rules.
No need in reinterpret_cast<StringTableOffset &> here, as struct coff_symbol Name is a unin
with the member StringTableOffset Offset. This union member could be accessed directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305029
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 8 Jun 2017 23:23:08 +0000 (23:23 +0000)]
[IR] Remove getNumSuccessorsV/getSuccessorV/setSuccessorV from the TerminatorInst subclasses as much as possible now that Value has been de-virtualized
These used to be virtual methods that would enable doing the right thing with only a TerminatorInst pointer. I believe they were also acting as vtable anchors in my cases. I think the fact that they had a separate name ending in V was to allow a version without V to be called without a virtual call in a pre-C++11 final keyword world.
Where possible the base methods in TerminatorInst dispatch directly to the public methods in the classes that have the same signature. For some classes this wasn't possible so I've left private method versions that match the name and signature of the version in TerminatorInst. All versions have been moved into the class definitions since we no longer need vtable anchors here.
Differential Revision: https://reviews.llvm.org/D34011
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305028
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 8 Jun 2017 23:01:49 +0000 (23:01 +0000)]
Write summaries for merged modules when splitting modules for ThinLTO.
This is to prepare to allow for dead stripping of globals in the
merged modules.
Differential Revision: https://reviews.llvm.org/D33921
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305027
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 8 Jun 2017 22:58:19 +0000 (22:58 +0000)]
[sanitizer-coverage] one more flavor of coverage: -fsanitize-coverage=inline-8bit-counters. Experimental so far, not documenting yet. Reapplying revisions 304630, 304631, 304632, 304673, see PR33308
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305026
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 8 Jun 2017 22:04:24 +0000 (22:04 +0000)]
Object: Move datalayout check into irsymtab::build. NFCI.
This check is a requirement of the irsymtab builder, not of any
particular caller.
Differential Revision: https://reviews.llvm.org/D33970
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305023
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 8 Jun 2017 22:00:24 +0000 (22:00 +0000)]
Bitcode: Introduce a BitcodeFileContents data type. NFCI.
This data type includes the contents of a bitcode file.
Right now a bitcode file can only contain modules, but
a later change will add a symbol table.
Differential Revision: https://reviews.llvm.org/D33969
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305019
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 8 Jun 2017 21:31:59 +0000 (21:31 +0000)]
test-release.sh: Remove workaround for test-suite build
Summary: We aren't actually building the test suite, so this isn't needed.
Reviewers: rengolin, hansw
Reviewed By: rengolin
Subscribers: rengolin, llvm-commits
Differential Revision: https://reviews.llvm.org/D29840
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305017
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 8 Jun 2017 21:30:54 +0000 (21:30 +0000)]
RegAllocPBQP: Do not assign reserved physical register
(0) RegAllocPBQP: Since getRawAllocationOrder() may return a collection that includes reserved physical registers, iterate to find an un-reserved physical register.
(1) VirtRegMap: Enforce the invariant: "no reserved physical registers" in assignVirt2Phys(). Previously, this was checked only after the fact in VirtRegRewriter::rewrite.
(2) MachineVerifier: updated the test per MatzeB's review.
(3) +testcase
Patch by Nick Johnson<Nicholas.Paul.Johnson@deshawresearch.com>!
Differential Revision: https://reviews.llvm.org/D33947
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305016
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 8 Jun 2017 21:25:36 +0000 (21:25 +0000)]
[Hexagon] Re-enable machine verifier after codegen passes
Remove "false" from the arguments to "addPass" in Hexagon's target pass
config.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305015
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 8 Jun 2017 20:56:36 +0000 (20:56 +0000)]
[Hexagon] Skip mux generation when predicate register is undefined
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305014
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 8 Jun 2017 20:49:03 +0000 (20:49 +0000)]
[MachO] Fix codegen of alias of alias.
Fixes PR33316.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305012
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 20:40:39 +0000 (20:40 +0000)]
[CGP, x86] add tests for potential memcmp expansion; NFC
No IR tests were added with rL304313 ( https://reviews.llvm.org/D28637 ),
so I want these for extra coverage if we enable memcmp expansion for x86.
As shown, nothing is expanded for x86 in CGP yet.
Also fundamentally, we're doing an IR transform, so we should have IR tests
for just that part. If something goes wrong, we need to know if the bug is
in CGP or later lowering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305011
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Thu, 8 Jun 2017 20:11:57 +0000 (20:11 +0000)]
Do not early-inline recursive calls in sample profile loader.
Summary: Early-inlining of recursive call makes the code size bloat exponentially. We should not disable it.
Reviewers: davidxl, dnovillo, iteratee
Reviewed By: iteratee
Subscribers: iteratee, llvm-commits, sanjoy
Differential Revision: https://reviews.llvm.org/D34017
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305009
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 20:00:09 +0000 (20:00 +0000)]
fix formatting; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305008
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 19:47:25 +0000 (19:47 +0000)]
[CGP] don't expand a memcmp with nobuiltin attribute
This matches the behavior used in the SDAG when expanding memcmp.
For reference, we're intentionally treating the earlier fortified call transforms differently after:
https://bugs.llvm.org/show_bug.cgi?id=23093
https://reviews.llvm.org/rL233776
One motivation for not transforming nobuiltin calls is that it can interfere with sanitizers:
https://reviews.llvm.org/D19781
https://reviews.llvm.org/D19801
Differential Revision: https://reviews.llvm.org/D34043
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305007
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 8 Jun 2017 19:25:21 +0000 (19:25 +0000)]
AMDGPU: Work around build special casing .inc files
It complains because it assumes these were autogenerated files
in the source directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305005
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 8 Jun 2017 19:03:20 +0000 (19:03 +0000)]
AMDGPU: Use correct register names in inline assembly
Fixes using physical registers in inline asm from clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305004
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Thu, 8 Jun 2017 18:49:25 +0000 (18:49 +0000)]
[Hexagon] Speedup NumNodesBlocking calculation. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305003
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Thu, 8 Jun 2017 18:27:24 +0000 (18:27 +0000)]
[PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64
In PPCBoolRetToInt bool value is changed to i32 type. On ppc64 it may introduce an extra zero extension for the return value. This patch changes the integer type to i64 to avoid the zero extension on ppc64.
This patch fixed PR32442.
Differential Revision: https://reviews.llvm.org/D31407
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305001
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Searles [Thu, 8 Jun 2017 18:21:19 +0000 (18:21 +0000)]
[AMDGPU] Force qsads instrs to use different dest register than source registers
The V_MQSAD_PK_U16_U8, V_QSAD_PK_U16_U8, and V_MQSAD_U32_U8 take more than 1 pass in hardware. For these three instructions, the destination registers must be different than all sources, so that the first pass does not overwrite sources for the following passes.
Differential Revision: https://reviews.llvm.org/D33783
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304998
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 8 Jun 2017 17:47:22 +0000 (17:47 +0000)]
Update release notes for BinaryFormat library.
Differential Revision: https://reviews.llvm.org/D34001
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304995
91177308-0d34-0410-b5e6-
96231b3b80d8
Galina Kistanova [Thu, 8 Jun 2017 17:27:40 +0000 (17:27 +0000)]
Changed a comparison operator for std::stable_sort to implement strict weak ordering.
This is a temporarily fix which needs additional work, as it triggers a test3 failure.
test3 is commented out till then.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304993
91177308-0d34-0410-b5e6-
96231b3b80d8
Zaara Syeda [Thu, 8 Jun 2017 17:14:36 +0000 (17:14 +0000)]
[Power9] Exploit vector integer extend instructions
This patch adds build vector patterns to exploit the vector integer
extend instructions:
vextsb2w - Vector Extend Sign Byte To Word
vextsb2d - Vector Extend Sign Byte To Doubleword
vextsh2w - Vector Extend Sign Halfword To Word
vextsh2d - Vector Extend Sign Halfword To Doubleword
vextsw2d - Vector Extend Sign Word To Doubleword
Differential Revision: https://reviews.llvm.org/D33510
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304992
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 17:09:18 +0000 (17:09 +0000)]
[PowerPC] add memcmp test with nobuiltin attr; NFC
In SDAG, we don't expand libcalls with a nobuiltin attribute.
It's not clear if that's correct from the existing code comment:
"Don't do the check if marked as nobuiltin for some reason."
...adding a test here either way to show that there is currently
a different behavior implemented in the CGP-based expansion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304991
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 8 Jun 2017 17:08:58 +0000 (17:08 +0000)]
[LazyValueInfo] Make LVILatticeVal intersect method take arguments by reference so we don't copy ConstantRanges unless we need to.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304990
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 17:02:39 +0000 (17:02 +0000)]
[x86] remove unused param from tests; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304989
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 16:53:18 +0000 (16:53 +0000)]
[CGP / PowerPC] avoid multi-block overhead for simple memcmp expansion
The test diff for PowerPC shows we can better optimize if this case is one block.
For x86, there's would be a substantial difference if CGP expansion was enabled because branches are assumed
cheap and SDAG can't optimize across blocks.
Instead of this:
_cmp_eq8:
movq (%rdi), %rax
cmpq (%rsi), %rax
je LBB23_1
## BB#2: ## %res_block
movl $1, %ecx
jmp LBB23_3
LBB23_1:
xorl %ecx, %ecx
LBB23_3: ## %endblock
xorl %eax, %eax
testl %ecx, %ecx
sete %al
retq
We get this:
cmp_eq8:
movq (%rdi), %rcx
xorl %eax, %eax
cmpq (%rsi), %rcx
sete %al
retq
And that matches the optimal codegen that we get from the current expansion in SelectionDAGBuilder::visitMemCmpCall().
If this looks right, then I just need to confirm that vector-sized expansion will work from here, and we can enable
CGP memcmp() expansion for x86. Ie, we'll bypass the power-of-2 special cases currently optimized in SDAG because we
can lower the IR produced here optimally.
Differential Revision: https://reviews.llvm.org/D34005
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304987
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew V. Tischenko [Thu, 8 Jun 2017 16:44:13 +0000 (16:44 +0000)]
Add scheduler classes to integer/float horizontal operations.
This patch will close PR32801.
Differential Revision: https://reviews.llvm.org/D33203
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304986
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Thu, 8 Jun 2017 16:41:35 +0000 (16:41 +0000)]
[SLP] More comments fix, NFC.
Fixed spelling errors on function description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304985
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 8 Jun 2017 16:00:40 +0000 (16:00 +0000)]
[PDB] Don't crash on /debug:fastlink PDBs.
Apparently support for /debug:fastlink PDBs isn't part of the
DIA SDK (!), and it was causing llvm-pdbdump to crash because
we weren't checking for a null pointer return value. This
manifests when calling findChildren on the IDiaSymbol, and
it returns E_NOTIMPL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304982
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 8 Jun 2017 15:01:29 +0000 (15:01 +0000)]
[x86] add tests for memcmp expansion; NFC
We already had a test to demonstrate PR33325:
https://bugs.llvm.org/show_bug.cgi?id=33325
I'm adding tests for general memcmp expansion (see D34005 / D33963) and:
https://bugs.llvm.org/show_bug.cgi?id=33329
...plus non-power-of-2 sizes, so we can see what that looks like currently or if expanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304979
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Thu, 8 Jun 2017 13:20:55 +0000 (13:20 +0000)]
InferAddressSpaces: Avoid assertion failure with replacing identical
cloned constexpr
Have cloneConstantExprWithNewAddressSpaces return nullptr when
returning initial ConstantExpr.
Reviewers: arsenm
Subscribers: jholewinski, wdng, llvm-commits
Differential Revision: https://reviews.llvm.org/D33995
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304975
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 8 Jun 2017 10:24:49 +0000 (10:24 +0000)]
Regenerate test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304973
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew V. Tischenko [Thu, 8 Jun 2017 10:20:13 +0000 (10:20 +0000)]
This patch closes PR28513: an optimization of multiplication by different constants.
The initial patch was rejected: I fixed the issue and re-apply it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304972
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Thu, 8 Jun 2017 09:47:30 +0000 (09:47 +0000)]
[ARM] GlobalISel: Add more tests. NFC
Add a couple of tests to increase coverage for the TableGen'erated code,
in particular for rules where 2 generic instructions may be combined
into a single machine instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304971
91177308-0d34-0410-b5e6-
96231b3b80d8
John Brawn [Thu, 8 Jun 2017 09:44:40 +0000 (09:44 +0000)]
[BPI] Don't assume that strcmp returning >0 is more likely than <0
The zero heuristic assumes that integers are more likely positive than negative,
but this also has the effect of assuming that strcmp return values are more
likely positive than negative. Given that for nonzero strcmp return values it's
the ordering of arguments that determines the sign of the result there's no
reason to assume that's true.
Fix this by inspecting the LHS of the compare and using TargetLibraryInfo to
decide if it's strcmp-like, and if so only assume that nonzero is more likely
than zero i.e. strings are more often different than the same. This causes a
slight code generation change in the spec2006 benchmark 403.gcc, but with no
noticeable performance impact. The intent of this patch is to allow better
optimisation of dhrystone on Cortex-M cpus, but currently it won't as there are
also some changes that need to be made to if-conversion.
Differential Revision: https://reviews.llvm.org/D33934
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304970
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Wilkins [Thu, 8 Jun 2017 07:32:29 +0000 (07:32 +0000)]
[Go] Subtypes function
This patch adds LLVMGetSubtypes to Go API (as Type.Subtypes), tests included.
Patch by Ekaterina Vaartis!
Differential Revision: https://reviews.llvm.org/D33901
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304968
91177308-0d34-0410-b5e6-
96231b3b80d8
Tony Tye [Thu, 8 Jun 2017 01:47:25 +0000 (01:47 +0000)]
Correct AMDGPU Hawaii and Kabini target names
The FirePro and Radeon versions of Hawaii have different 64 bit floating point configurations so use distinct target names for them. Rename the target name for Kabini to accommodate.
Differential Revision: https://reviews.llvm.org/D34016
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304959
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 8 Jun 2017 01:26:14 +0000 (01:26 +0000)]
Object: Factor out the code for creating the irsymtab for an arbitrary bitcode file.
This code now lives in lib/Object. The idea is that it can now be reused by
IRObjectFile among other things.
Differential Revision: https://reviews.llvm.org/D31921
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304958
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 7 Jun 2017 23:53:32 +0000 (23:53 +0000)]
[CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304954
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 7 Jun 2017 21:37:39 +0000 (21:37 +0000)]
GlobalsModRef: Ensure optnone+readonly/readnone attributes are respected
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304945
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 7 Jun 2017 20:37:24 +0000 (20:37 +0000)]
[SLP] Comment fix, NFC.
Fixed comment in function description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304940
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 7 Jun 2017 20:32:08 +0000 (20:32 +0000)]
[InstCombine] fold lshr (sext X), C1 --> zext (lshr X, C2)
This was discussed in D33338. We have larger pattern-matching ending in a truncate that
we can reduce or remove by handling these smaller patterns first. Further motivation is
that narrower shift ops are easier for value tracking and zext is better than sext.
http://rise4fun.com/Alive/rhh
Name: boolshift
%sext = sext i1 %x to i8
%r = lshr i8 %sext, 7
=>
%r = zext i1 %x to i8
Name: noboolshift
%sext = sext i3 %x to i8
%r = lshr i8 %sext, 7
=>
%sh = lshr i3 %x, 2
%r = zext i3 %sh to i8
Differential Revision: https://reviews.llvm.org/D33879
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304939
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 7 Jun 2017 20:27:41 +0000 (20:27 +0000)]
[SLP] Comment fix, NFC.
Added a description of getReductionCost() function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304938
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 7 Jun 2017 20:04:33 +0000 (20:04 +0000)]
[Hexagon] Generate 'inbounds' GEPs in HexagonCommonGEP
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304937
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Wed, 7 Jun 2017 18:51:56 +0000 (18:51 +0000)]
[DAG] Improve Store Merge candidate pruning. NFC.
When considering merging stores values are the results of loads only
consider stores whose values come from loads from the same base.
This fixes much of the longer compile times in PR33330.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304934
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 7 Jun 2017 18:32:24 +0000 (18:32 +0000)]
Fix builin_expect lowering bug
PR33346
Skip cases when expected value is not constant int.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304933
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Wed, 7 Jun 2017 17:16:25 +0000 (17:16 +0000)]
Add BinaryFormat module definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304928
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Wed, 7 Jun 2017 16:46:53 +0000 (16:46 +0000)]
[mssa] Fix case when there is no definition in a block prior to an inserted use.
Summary:
Check that the first access before one being tested is valid.
Before this patch, if there was no definition prior to the Use being tested,
the first time Iter was deferenced, it hit the sentinel.
Reviewers: dberlin, gbiv
Subscribers: sanjoy, Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D33950
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304926
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 7 Jun 2017 16:16:45 +0000 (16:16 +0000)]
[CGP] avoid zext/trunc of a memcmp expansion compare
This could be viewed as another shortcoming of the DAGCombiner:
when both operands of a compare are zexted from the same source
type, we should be able to compare the original types.
The effect on PowerPC perf is likely unnoticeable, but there's a
visible regression for x86 if we feed the suboptimal IR for memcmp
expansion to the DAG:
_cmp_eq4_zexted_to_i64:
movl (%rdi), %ecx
movl (%rsi), %edx
xorl %eax, %eax
cmpq %rdx, %rcx
sete %al
_cmp_eq4_better:
movl (%rdi), %ecx
xorl %eax, %eax
cmpl (%rsi), %ecx
sete %al
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304923
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitry Preobrazhensky [Wed, 7 Jun 2017 16:08:02 +0000 (16:08 +0000)]
[AMDGPU][MC] Corrected error message for s_waitcnt helpers
See Bug 32711: https://bugs.llvm.org//show_bug.cgi?id=32711
Reviewers: artem.tamazov
Differential Revision: https://reviews.llvm.org/D33781
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304922
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 7 Jun 2017 15:49:14 +0000 (15:49 +0000)]
LowerTypeTests: Generate simpler IR for br(llvm.type.test, then, else).
This makes it so that the code quality for CFI checks when compiling
with -O2 and linking with --lto-O0 is similar to that of the rest of
the code.
Reduces the size of a chrome binary built with -O2/--lto-O0 by
about 750KB.
Differential Revision: https://reviews.llvm.org/D33925
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304921
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 7 Jun 2017 15:05:13 +0000 (15:05 +0000)]
[CGP] pass size as param in MemCmpExpansion; NFCI
Avoid extracting the constant int twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304920
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Wed, 7 Jun 2017 14:57:20 +0000 (14:57 +0000)]
PR33331 - opt-viewer.py produces broken output for directories with spaces
Fix: Properly quote href attributes.
Patch by Simon Whittaker!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304919
91177308-0d34-0410-b5e6-
96231b3b80d8
Petar Jovanovic [Wed, 7 Jun 2017 14:48:46 +0000 (14:48 +0000)]
[mips][dsp] Modify repl.ph to accept signed immediate values
Changed immediate type for repl.ph from uimm10 to simm10 as per the specs.
Repl.qb still accepts uimm8. Both instructions now mimic the behaviour of
GNU as.
Patch by Stefan Maksimovic.
Differential Revision: https://reviews.llvm.org/D33594
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304918
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 7 Jun 2017 14:45:49 +0000 (14:45 +0000)]
[CGP] pass size as param in MemCmpExpansion; NFCI
Avoid extracting the constant int twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304917
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 7 Jun 2017 14:29:52 +0000 (14:29 +0000)]
[CGP] getParent()->getParent() --> getFunction(); NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304916
91177308-0d34-0410-b5e6-
96231b3b80d8
Guy Blank [Wed, 7 Jun 2017 14:29:10 +0000 (14:29 +0000)]
[X86] Add test to demonstrate inefficient lowering of v48i8 shuffle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304915
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Wed, 7 Jun 2017 14:08:34 +0000 (14:08 +0000)]
[SystemZ] Propagate MachineMemOperands
In emitCondStore() and emitMemMemWrapper().
Review: Ulrich Weigand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304913
91177308-0d34-0410-b5e6-
96231b3b80d8