| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Followed the guidelines in:
http://llvm.org/docs/CodingStandards.html#include-style
However, I noticed that uppercase named headers come before lowercase ones
throughout the codebase. So kept them as is.
Patch by Mandeep Singh Grang <mgrang@codeaurora.org>
Reviewers: majnemer, davide, jmolloy, atrick
Subscribers: sanjoy
Differential Revision: http://reviews.llvm.org/D14939
llvm-svn: 254005
|
| |
|
|
|
|
|
| |
Noticed while working on D4583:
http://reviews.llvm.org/D4583
llvm-svn: 253997
|
| |
|
|
| |
llvm-svn: 253996
|
| |
|
|
|
|
|
| |
Skip imports for weak_any aliases as well. Fix the test to check
non-import of weak aliases and functions, and import of normal alias.
llvm-svn: 253991
|
| |
|
|
| |
llvm-svn: 253969
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
importing
Summary:
This is a helper to perform cross-module import for ThinLTO. Right now
it is importing naively every possible called functions.
Reviewers: tejohnson
Subscribers: dexonsmith, llvm-commits
Differential Revision: http://reviews.llvm.org/D14914
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 253954
|
| |
|
|
| |
llvm-svn: 253915
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The existing coverage tracker counts the number of records that were used
from the input profile. An alternative view of coverage is to check how
many available samples were applied.
This way, if the profile contains several records with few samples, it
doesn't really matter much that they were not applied. The more
interesting records to apply are the ones that contribute many samples.
llvm-svn: 253912
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14842
llvm-svn: 253908
|
| |
|
|
| |
llvm-svn: 253893
|
| |
|
|
| |
llvm-svn: 253877
|
| |
|
|
| |
llvm-svn: 253868
|
| |
|
|
| |
llvm-svn: 253841
|
| |
|
|
|
|
|
|
|
|
| |
In profile runtime implementation for Darwin, Linux and FreeBSD, the
names of sections holding profile control/counter/naming data need
to be known by the runtime in order to locate the start/end of the
data. Moving the name definitions to the common file to specify the
connection.
llvm-svn: 253814
|
| |
|
|
| |
llvm-svn: 253805
|
| |
|
|
|
|
| |
subtracting from the original dividend. NFC.
llvm-svn: 253792
|
| |
|
|
| |
llvm-svn: 253787
|
| |
|
|
| |
llvm-svn: 253786
|
| |
|
|
| |
llvm-svn: 253785
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
D14302 implements tan(atan(x)) -> x
D14045 implements pow(exp(x), y) -> exp(x*y)
Patch by Mandeep Singh Grang <mgrang@codeaurora.org>
Reviewers: majnemer, davide
Differential Revision: http://reviews.llvm.org/D14882
llvm-svn: 253768
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
coverage.
If a function was originally inlined but not actually hot at runtime,
its samples will not be counted inside the parent function. This throws
off the coverage calculation because it expects to find more used
records than it should.
Fixed by ignoring functions that will not be inlined into the parent.
Currently, this is inlined functions with 0 samples. In subsequent
patches, I'll change this to mean "cold" functions.
llvm-svn: 253716
|
| |
|
|
|
|
|
|
|
|
| |
This reverts r253661.
Turns out that the assignment is not redundant (despite the Clang static analyzer claiming the opposite).
The variable is being used by the lambda function AddUsersToWorklistIfCapturing().
llvm-svn: 253696
|
| |
|
|
|
|
|
|
|
| |
While debugging some sampling coverage problems, I found this useful:
When applying samples from a profile, it helps to also know what line
offset and discriminator the sample belongs to. This makes it easy to
correlate against the input profile.
llvm-svn: 253670
|
| |
|
|
|
|
| |
Identified by the Clang static analyzer.
llvm-svn: 253661
|
| |
|
|
|
|
|
|
| |
Terrifyingly, one of them is a mishandling of floating point vectors
in Constant::isZero(). How exactly this issue survived this long
is beyond me.
llvm-svn: 253655
|
| |
|
|
| |
llvm-svn: 253652
|
| |
|
|
|
|
| |
Reported by: David Blaikie.
llvm-svn: 253605
|
| |
|
|
| |
llvm-svn: 253603
|
| |
|
|
| |
llvm-svn: 253597
|
| |
|
|
|
|
|
|
|
|
|
|
| |
possible."
The change exposed a bug in IndVarSimplify (PR25578), which led to a
failure (PR25538). When the bug is fixed, this patch can be reapplied.
The tests are kept in tree, as they're useful anyway, and will not break
with this revert.
llvm-svn: 253596
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: The new algorithm is more efficient (O(n), n is number of basic blocks). And it is guaranteed to cover all cases of multiple BB mapped to same line.
Reviewers: dblaikie, davidxl, dnovillo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14738
llvm-svn: 253594
|
| |
|
|
| |
llvm-svn: 253591
|
| |
|
|
| |
llvm-svn: 253586
|
| |
|
|
|
|
|
| |
The purpose of this change is help delineate the memset and memcpy
optimizations with the overall goal of resolving PR25520.
llvm-svn: 253585
|
| |
|
|
|
|
| |
We currently bail out of global localization if the global has non-instruction users. However, often these can be simple bitcasts or constant-GEPs, which we can easily turn into instructions before localizing. Be a bit more aggressive.
llvm-svn: 253584
|
| |
|
|
| |
llvm-svn: 253578
|
| |
|
|
| |
llvm-svn: 253565
|
| |
|
|
|
|
|
|
|
|
|
|
| |
command line
This provides a way to force a function to have certain attributes from the command line. This can be useful when debugging or doing workload exploration, where manually editing IR is tedious or not possible (due to build systems etc).
The syntax is -force-attribute=function_name:attribute_name
All function attributes are parsed except alignstack as it requires an argument.
llvm-svn: 253550
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit r253511.
This likely broke the bots in
http://lab.llvm.org:8011/builders/clang-ppc64-elf-linux2/builds/20202
http://bb.pgr.jp/builders/clang-3stage-i686-linux/builds/3787
llvm-svn: 253543
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Optimizations like LoadPRE in GVN will insert new instructions.
If the insertion point is in a already processed BB, they should
get a value number explicitly. If the insertion point is after
current instruction, then just leave it. However, current GVN framework
has no support for it.
In this patch, we just bail out if a VN can't be found.
Dfferential Revision: http://reviews.llvm.org/D14670
A test/Transforms/GVN/pr25440.ll
M lib/Transforms/Scalar/GVN.cpp
llvm-svn: 253536
|
| |
|
|
| |
llvm-svn: 253527
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14466
llvm-svn: 253521
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This bug would manifest in some very specific cases where all the following
conditions are fullfilled:
- GVN didn't remove block
- The regular GVN iteration didn't change the IR
- PRE is enabled
- PRE will not split critical edge
- The last instruction processed by PRE didn't change the IR
Because the CallGraph PassManager relies on this returned value to decide
if it needs to recompute a node after the execution of Function passes,
not returning the right value can lead to unexpected results.
Fix for: https://llvm.org/bugs/show_bug.cgi?id=24715
Patch by Wenxiang Qiu <vincentqiuuu@gmail.com>
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 253518
|
| |
|
|
| |
llvm-svn: 253514
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note, this was reviewed (and more details are in) http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312083.html
These intrinsics currently have an explicit alignment argument which is
required to be a constant integer. It represents the alignment of the
source and dest, and so must be the minimum of those.
This change allows source and dest to each have their own alignments
by using the alignment attribute on their arguments. The alignment
argument itself is removed.
There are a few places in the code for which the code needs to be
checked by an expert as to whether using only src/dest alignment is
safe. For those places, they currently take the minimum of src/dest
alignments which matches the current behaviour.
For example, code which used to read:
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 500, i32 8, i1 false)
will now read:
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %dest, i8* align 8 %src, i32 500, i1 false)
For out of tree owners, I was able to strip alignment from calls using sed by replacing:
(call.*llvm\.memset.*)i32\ [0-9]*\,\ i1 false\)
with:
$1i1 false)
and similarly for memmove and memcpy.
I then added back in alignment to test cases which needed it.
A similar commit will be made to clang which actually has many differences in alignment as now
IRBuilder can generate different source/dest alignments on calls.
In IRBuilder itself, a new argument was added. Instead of calling:
CreateMemCpy(Dst, Src, getInt64(Size), DstAlign, /* isVolatile */ false)
you now call
CreateMemCpy(Dst, Src, getInt64(Size), DstAlign, SrcAlign, /* isVolatile */ false)
There is a temporary class (IntegerAlignment) which takes the source alignment and rejects
implicit conversion from bool. This is to prevent isVolatile here from passing its default
parameter to the source alignment.
Note, changes in future can now be made to codegen. I didn't change anything here, but this
change should enable better memcpy code sequences.
Reviewed by Hal Finkel.
llvm-svn: 253511
|
| |
|
|
|
|
|
|
| |
Summary: Fix for https://llvm.org/bugs/show_bug.cgi?id=25550
Differential Revision: http://reviews.llvm.org/D14763
llvm-svn: 253498
|
| |
|
|
|
|
|
|
|
| |
This change introduces an instrumentation intrinsic instruction for
value profiling purposes, the lowering of the instrumentation intrinsic
and raw reader updates. The raw profile data files for llvm-profdata
testing are updated.
llvm-svn: 253484
|
| |
|
|
|
|
|
|
| |
(r252604)"
Failing clang test is now fixed by the r253458.
llvm-svn: 253459
|
| |
|
|
|
|
| |
Because we internalize early, we can potentially mark a bunch of functions as norecurse. Do this before globalopt.
llvm-svn: 253451
|
| |
|
|
| |
llvm-svn: 253446
|