| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Reviewed at http://reviews.llvm.org/D5906
llvm-svn: 222388
|
| |
|
|
|
|
|
| |
empty non-constexpr object. Such a copy doesn't break any of the constexpr
rules.
llvm-svn: 222387
|
| |
|
|
| |
llvm-svn: 222386
|
| |
|
|
|
|
| |
Fixes PR21607
llvm-svn: 222385
|
| |
|
|
|
|
| |
A long sequence of || or && could lead to a stack explosion.
llvm-svn: 222384
|
| |
|
|
| |
llvm-svn: 222383
|
| |
|
|
|
|
|
|
|
| |
- Show "Considering..." message after flipping so you actually see the final
destination vreg as destination.
- Add a message on final join, so you can grep for "Success" messages to obtain
a list of which register got merged with which.
llvm-svn: 222382
|
| |
|
|
| |
llvm-svn: 222381
|
| |
|
|
| |
llvm-svn: 222380
|
| |
|
|
| |
llvm-svn: 222379
|
| |
|
|
| |
llvm-svn: 222378
|
| |
|
|
|
|
|
|
|
| |
is referenced without a definition, just ensure the enclosing class (with the static member declaration) is emitted.
Addresses PR21511 by emitting appropriate metadata rather than
faux-global definitions for a variable that doesn't have a definition.
llvm-svn: 222377
|
| |
|
|
|
|
| |
No functional change intended.
llvm-svn: 222376
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch improves the lowering of v4f32 and v4i32 build_vector dag nodes
that are known to have at least two non-zero elements.
With this patch, a build_vector that performs a blend with zero is
converted into a shuffle. This is done to let the shuffle legalizer expand
the dag node in a optimal way. For example, if we know that a build_vector
performs a blend with zero, we can try to lower it as a movq/blend instead of
always selecting an insertps.
This patch also improves the logic that lowers a build_vector into a insertps
with zero masking. See for example the extra test cases added to test sse41.ll.
Differential Revision: http://reviews.llvm.org/D6311
llvm-svn: 222375
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
As detailed at http://llvm.org/PR20728, due to an internal overflow in
APFloat::multiplySignificand the APFloat::fusedMultiplyAdd method can return
incorrect results for x87DoubleExtended (x86_fp80) values. This commonly
manifests as incorrect constant folding of libm fmal calls on x86. E.g.
fmal(1.0L, 1.0L, 3.0L) == 0.0L (should be 4.0L)
This patch fixes PR20728 by adding an extra bit to the significand for
intermediate results of APFloat::multiplySignificand, avoiding the overflow.
llvm-svn: 222374
|
| |
|
|
|
|
|
|
|
|
|
|
| |
While emitting debug information for function forward decalrations, we
create DISubprogram objects that aran't stored in the AllSubprograms
list, and thus won't get finalized by the DIBuilder. During the DIBuilder
finalize(), the temporary MDNode allocated for the DISubprogram
Variables field gets RAUWd with a non temporary DIArray. For the forward
declarations, simply delete that temporary node before we delete the
parent node, so that it doesn't leak.
llvm-svn: 222373
|
| |
|
|
|
|
|
|
|
|
| |
Process/ProcessPOSIX.cpp
and FreeBSD/ProcessMonitor.
http://reviews.llvm.org/D6240
llvm-svn: 222372
|
| |
|
|
|
|
| |
Fix a typo in the search path identified by Justin Bogner.
llvm-svn: 222371
|
| |
|
|
|
|
| |
StringMap::insert.
llvm-svn: 222370
|
| |
|
|
|
|
| |
Appeasing mingw without C++11 std::to_string
llvm-svn: 222369
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A register operand that has a common sub-class with its instruction's
defined register class is not always legal. For example,
SReg_32 and M0Reg both have a common sub-class, but we can't
use an SReg_32 in instructions that expect a M0Reg.
This prevents the llvm.SI.sendmsg.ll test from failing when the fold
operand pass is added.
llvm-svn: 222368
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5519
llvm-svn: 222367
|
| |
|
|
| |
llvm-svn: 222366
|
| |
|
|
| |
llvm-svn: 222365
|
| |
|
|
|
|
|
|
|
| |
e.x
return (a[0]+b[0]) + (a[1]+b[1])
Differential Revision: http://reviews.llvm.org/D6227
llvm-svn: 222364
|
| |
|
|
| |
llvm-svn: 222363
|
| |
|
|
| |
llvm-svn: 222362
|
| |
|
|
| |
llvm-svn: 222361
|
| |
|
|
| |
llvm-svn: 222360
|
| |
|
|
|
|
| |
This fixes the recent build failures.
llvm-svn: 222358
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before:
public void union
(Object o);
public void struct
(Object o);
public void delete (Object o);
After:
public void union(Object o);
public void struct(Object o);
public void delete(Object o);
Patch by Harry Terkelsen, thank you!
llvm-svn: 222357
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D6169
llvm-svn: 222355
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the BasicBlock containing the return instrution has a PHI with 2
incoming values, FoldReturnIntoUncondBranch will remove the no longer
used incoming value and remove the no longer needed phi as well. This
leaves us with a BB that no longer has a PHI, but the subsequent call
to FoldReturnIntoUncondBranch from FoldReturnAndProcessPred will not
remove the return instruction (which still uses the result of the call
instruction). This prevents EliminateRecursiveTailCall to remove
the value, as it is still being used in a basicblock which has no
predecessors.
The basicblock can not be erased on the spot, because its iterator is
still being used in runTRE.
This issue was exposed when removing the threshold on size for lifetime
marker insertion for named temporaries in clang. The testcase is a much
reduced version of peelOffOuterExpr(const Expr*, const ExplodedNode *)
from clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp.
llvm-svn: 222354
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5800
llvm-svn: 222352
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5799
llvm-svn: 222351
|
| |
|
|
|
|
|
|
| |
instructions: LWXS, BGEZALS, BLTZALS, BEQZC, BNEZC, JALS and JALRS.
http://reviews.llvm.org/D5413
llvm-svn: 222349
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5407
llvm-svn: 222348
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5240
llvm-svn: 222347
|
| |
|
|
|
|
| |
test_output.sh produces source.cc.exe binaries
llvm-svn: 222345
|
| |
|
|
| |
llvm-svn: 222344
|
| |
|
|
|
|
| |
driver should add it as necessary
llvm-svn: 222343
|
| |
|
|
| |
llvm-svn: 222342
|
| |
|
|
|
|
|
|
| |
This change makes use of the new "job pool" capability in cmake 3.0
with ninja generator to allow limiting the number of concurrent jobs
of a certain type.
llvm-svn: 222341
|
| |
|
|
|
|
|
|
|
|
| |
This patch builds on http://reviews.llvm.org/D5598 to perform byte rotation shuffles (lowerVectorShuffleAsByteRotate) on pre-SSSE3 (palignr) targets - pre-SSSE3 is only enabled on i8 and i16 vector targets where it is a more definite performance gain.
I've also added a separate byte shift shuffle (lowerVectorShuffleAsByteShift) that makes use of the ability of the SLLDQ/SRLDQ instructions to implicitly shift in zero bytes to avoid the need to create a zero register if we had used palignr.
Differential Revision: http://reviews.llvm.org/D5699
llvm-svn: 222340
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
issues for Mips.
Summary:
With this patch, passing a va_list to another function and reading 10 int's from
it works correctly on a big-endian target.
Based on a pair of patches by David Chisnall, one of which I've reworked
for the current trunk.
Reviewers: theraven, atanasyan
Reviewed By: theraven, atanasyan
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6248
llvm-svn: 222339
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AliasSetTracker::addUnknown may create an AliasSet devoid of pointers
just to contain an instruction if no suitable AliasSet already exists.
It will then AliasSet::addUnknownInst and we will be done.
However, it's possible for addUnknown to choose an existing AliasSet to
addUnknownInst.
If this were to occur, we are in a bit of a pickle: removing pointers
from the AliasSet can cause the entire AliasSet to become destroyed,
taking our unknown instructions out with them.
Instead, keep track whether or not our AliasSet has any unknown
instructions.
This fixes PR21582.
llvm-svn: 222338
|
| |
|
|
| |
llvm-svn: 222337
|
| |
|
|
|
|
| |
pair<iterator, bool> as per the C++ standard's associative container concept.
llvm-svn: 222336
|
| |
|
|
|
|
| |
pair<iterator, bool> as per the C++ standard's associative container concept.
llvm-svn: 222335
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
pair<iterator, bool>
This is to be consistent with StringSet and ultimately with the standard
library's associative container insert function.
This lead to updating SmallSet::insert to return pair<iterator, bool>,
and then to update SmallPtrSet::insert to return pair<iterator, bool>,
and then to update all the existing users of those functions...
llvm-svn: 222334
|