| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Thanks to that information we wouldn't lie on a register being live whereas it
is not.
llvm-svn: 267622
|
| |
|
|
|
|
|
| |
Now, it is possible to know that partial definitions are dead definitions and
recognize that clobbered registers are also dead.
llvm-svn: 267621
|
| |
|
|
|
|
|
|
| |
As pointed out by John Regehr over in http://reviews.llvm.org/D19485, LVI was being incredibly stupid about applying its transfer rules. Rather than gathering local facts from the expression itself, it was simply giving up entirely if one of the inputs was overdefined. This greatly impacts the precision of the overall analysis and makes it far more fragile as well.
This patch builds on 267609 which did the same thing for unary casts.
llvm-svn: 267620
|
| |
|
|
|
|
|
|
|
|
| |
NVPTXLowerKernelArgs is required for correctness, so it should not be guarded
by CodeGenOpt::None.
NVPTXPeephole is optimization only, so it should be skipped when
CodeGenOpt::None.
llvm-svn: 267619
|
| |
|
|
|
|
| |
Essentially, I was using the wrong size function. For types which were sized, but not primitive, I wasn't getting a useful size for the operand and failed an assert. I fixed this, and also added a guard that the input is a sized type. Test case is for the original mistake. I'm not sure how to actually exercise the sized type check.
llvm-svn: 267618
|
| |
|
|
|
|
| |
I'll clean this up and add a test case shortly. I want to make sure this does actually fix the bots; if not, I'll revert.
llvm-svn: 267617
|
| |
|
|
|
|
|
|
| |
Use __attribute__((regparm(x))) to ensure the compiler enregisters at least some arguments when calling functions.
Differential Revision: http://reviews.llvm.org/D19548
llvm-svn: 267616
|
| |
|
|
|
|
|
|
|
|
| |
We need the default ratio to be sufficiently large that it triggers transforms
based on block frequency info (BFI) and plays well with the recently introduced
BranchProbability used by CGP.
Differential Revision: http://reviews.llvm.org/D19435
llvm-svn: 267615
|
| |
|
|
| |
llvm-svn: 267614
|
| |
|
|
|
|
|
| |
This lets Writer.cpp know that they are got relative, which will allow
further simplifications.
llvm-svn: 267613
|
| |
|
|
|
|
| |
specializations.
llvm-svn: 267612
|
| |
|
|
|
|
| |
Follow-up to r267464. Thanks to Richard Smith for pointing this out!
llvm-svn: 267611
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
On windows platform assert() call creates two distinct CFG edges
which are coverage-instrumented. Simply calling assert would
change coverage numbers on the platform.
Subscribers: kubabrecka
Differential Revision: http://reviews.llvm.org/D19514
llvm-svn: 267610
|
| |
|
|
|
|
|
|
|
|
| |
As pointed out by John Regehr over in http://reviews.llvm.org/D19485, LVI was being incredibly stupid about applying its transfer rules. Rather than gathering local facts from the expression itself, it was simply giving up entirely if one of the inputs was overdefined. This greatly impacts the precision of the overall analysis and makes it far more fragile as well.
This patch implements only the unary operation case. Once this is in, I'll implement the same for the binary operations.
Differential Revision: http://reviews.llvm.org/D19492
llvm-svn: 267609
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19439
llvm-svn: 267608
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D17176
llvm-svn: 267606
|
| |
|
|
|
|
|
|
|
|
| |
The destination buffer that sprintf uses is restrict qualified, we do
not need to worry about derived pointers referenced via format
specifiers.
This reverts commit r267580.
llvm-svn: 267605
|
| |
|
|
| |
llvm-svn: 267604
|
| |
|
|
|
|
| |
Every caller was doing it.
llvm-svn: 267603
|
| |
|
|
| |
llvm-svn: 267602
|
| |
|
|
|
|
|
|
|
|
| |
r267556 made backslashes escape the next character
unconditionally in rsp files. This test echos a path into
a rsp file, and paths contain backslashes on Windows. Since
it's not important for this test to get the filename from
the rsp file, just pass it regularly.
llvm-svn: 267601
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When --reproduce <path> is given, then we need to concatenate input
file paths to the given path to save input files to the directory.
Previously, path concatenation didn't handle Windows drive letters
so it could generate invalid paths such as "C:\D:\foo". It also didn't
handle ".." path components, so it could produce some bad paths
such as "foo/../../etc/passwd".
In this patch, Windows drive letters and ".." are removed before
concatenating paths.
Differential Revision: http://reviews.llvm.org/D19551
llvm-svn: 267600
|
| |
|
|
| |
llvm-svn: 267599
|
| |
|
|
| |
llvm-svn: 267598
|
| |
|
|
|
|
|
|
| |
Fixed a bug in loop vectorization with conditional store.
Differential Revision: http://reviews.llvm.org/D19532
llvm-svn: 267597
|
| |
|
|
| |
llvm-svn: 267596
|
| |
|
|
| |
llvm-svn: 267595
|
| |
|
|
|
|
|
|
| |
but when there's was no process it was just returning an null pointer
and not setting the error. I don't have a scenario where this might
go wrong, just code inspection...
llvm-svn: 267594
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19509
llvm-svn: 267593
|
| |
|
|
|
|
| |
+ brushed the code a bit and renamed the test file to match the check name
llvm-svn: 267592
|
| |
|
|
|
|
| |
problematic. They still get compiled, and if the compile succeeds, the buildbots complain. Replace the XFAIL with #error.
llvm-svn: 267591
|
| |
|
|
|
|
|
|
|
|
|
|
| |
OpenCL spec requires __OPENCL_C_VERSION__ to be defined based on -cl-std option. This patch implements that.
The patch also defines __FAST_RELAXED_MATH__ based on -cl-fast-relaxed-math option.
Also fixed a test using -std=c99 for OpenCL program. Limit allowed language standard of OpenCL to be OpenCL standards.
Differential Revision: http://reviews.llvm.org/D19071
llvm-svn: 267590
|
| |
|
|
| |
llvm-svn: 267589
|
| |
|
|
|
|
|
|
|
|
| |
Previously, the test didn't work on Windows because it tried to
concatenate two (possibly) absolute paths. If two paths are absolute
paths that have drive letters, then the result would become something
like C:\foo\D:\bar. That's not a valid path. I changed the test to
use relative paths.
llvm-svn: 267588
|
| |
|
|
| |
llvm-svn: 267587
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19542
llvm-svn: 267586
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The DBI stream contains a lot of bookkeeping information for other
streams. In particular it contains information about section contributions
and linked modules. This patch is a first attempt at parsing some of the
information out of the DBI stream. It currently only parses and dumps the
headers of the DBI stream, so none of the module data or section
contribution data is pulled out.
This is just a proof of concept that we understand the basic properties of
the DBI stream's metadata, and followup patches will try to extract more
detailed information out.
Differential Revision: http://reviews.llvm.org/D19500
Reviewed By: majnemer, ruiu
llvm-svn: 267585
|
| |
|
|
|
|
| |
The Apple stage2 build should include compiler-rt iOS libraries and be built with the stage2 compiler. This matches Apple's production clang builds.
llvm-svn: 267584
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a block is tail-duplicated, the PHI nodes from that block are
replaced with appropriate COPY instructions. When those PHI nodes
contained use operands with subregisters, the subregisters were
dropped from the COPY instructions, resulting in incorrect code.
Keep track of the subregister information and use this information
when remapping instructions from the duplicated block.
Differential Revision: http://reviews.llvm.org/D19337
llvm-svn: 267583
|
| |
|
|
|
|
|
| |
A latent bug in llvm-objdump used the wrong format specifier on 32-bit
targets, causing the test to fail. This fixes the issue.
llvm-svn: 267582
|
| |
|
|
|
|
| |
Match the style here to the other headers in Transforms/IPO.
llvm-svn: 267581
|
| |
|
|
|
|
|
|
|
|
| |
sprintf doesn't read or copy the terminating null byte from it's string
operands. sprintf will append it's own after processing all of the
format specifiers.
This fixes PR27526.
llvm-svn: 267580
|
| |
|
|
|
|
|
| |
We don't need to copy the sret argument into %rax upon return.
rdar://25671494
llvm-svn: 267579
|
| |
|
|
|
|
|
|
|
| |
The Machine Instruction Verifier flagged some issues in the serialized MIR.
Adjust the input to correct them.
Fixes the remaining portion of PR27480.
llvm-svn: 267578
|
| |
|
|
|
|
| |
Kill bleeding whitespace. NFC
llvm-svn: 267577
|
| |
|
|
|
|
| |
Highlighting consistency in Clang-tidy misc-fold-init-type check documentation.
llvm-svn: 267576
|
| |
|
|
|
|
|
|
|
|
| |
Store.
This change modifies find_darwin_sdk_dir to set a variable if a Darwin "Internal" SDK is present which allows CMake to disable components that require internal-only APIs.
This mechanism is then used to disable TSan when an internal SDK is not present.
llvm-svn: 267575
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This checker finds redundant expression on both side of a binary operator.
The current implementation provide a function to check whether expressions
are equivalent. This implementation is able to recognize the common
subset encounter in C++ program. Side-effects like "x++" are not considered
to be equivalent.
There are many False Positives related to macros and to floating point
computations (detecting NaN). The checker is ignoring these cases.
Example:
```
if( !dst || dst->depth != desired_depth ||
dst->nChannels != desired_num_channels ||
dst_size.width != src_size.width ||
dst_size.height != dst_size.height ) <<--- bug
{
```
Reviewers: alexfh
Subscribers: danielmarjamaki, fahlgren, jordan_rose, zaks.anna, Eugene.Zelenko, cfe-commits
Differential Revision: http://reviews.llvm.org/D19451
llvm-svn: 267574
|
| |
|
|
|
|
|
|
| |
SIMachineFunctionInfo + minor commenting changes
Differential Revision: http://reviews.llvm.org/D19537
llvm-svn: 267573
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
turned into a branch
This is part of solving PR27344:
https://llvm.org/bugs/show_bug.cgi?id=27344
CGP should undo the SimplifyCFG transform for the same reason that earlier patches have used this
same mechanism: it's possible that passes between SimplifyCFG and CGP may be able to optimize the
IR further with a select in place.
For the TLI hook default, >99% taken or not taken is chosen as the default threshold for a highly
predictable branch. Even the most limited HW branch predictors will be correct on this branch almost
all the time, so even a massive mispredict penalty perf loss would be overcome by the win from all
the times the branch was predicted correctly.
As a follow-up, we could make the default target hook less conservative by using the SchedMachineModel's
MispredictPenalty. Or we could just let targets override the default by implementing the hook with that
and other target-specific options. Note that trying to statically determine mispredict rates for
close-to-balanced profile weight data is generally impossible if the HW is sufficiently advanced. Ie,
50/50 taken/not-taken might still be 100% predictable.
Finally, note that this patch as-is will not solve PR27344 because the current __builtin_unpredictable()
branch weight default values are 4 and 64. A proposal to change that is in D19435.
Differential Revision: http://reviews.llvm.org/D19488
llvm-svn: 267572
|