| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
for tidiness' sake.
llvm-svn: 174988
|
|
|
|
| |
llvm-svn: 174985
|
|
|
|
|
|
| |
may get mapped at 0x100000000+ and thus may interleave with the shadow.
llvm-svn: 174964
|
|
|
|
|
|
| |
roughly 5% speedup. Since this is an ABI change, bump the asan ABI version by renaming __asan_init to __asan_init_v1. llvm part, compiler-rt part will follow
llvm-svn: 174957
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When building the pairable-instruction dependency map, don't search
past the last pairable instruction. For large blocks that have been
divided into multiple instruction groups, searching past the last
instruction in each group is very wasteful. This gives a 32% speedup
on the csa.ll test case from PR15222 (when using 50 instructions
in each group).
No functionality change intended.
llvm-svn: 174915
|
|
|
|
|
|
|
|
|
|
|
| |
This map is queried only for instructions in pairs of pairable
instructions; so make sure that only pairs of pairable
instructions are added to the map. This gives a 3.5% speedup
on the csa.ll test case from PR15222.
No functionality change intended.
llvm-svn: 174914
|
|
|
|
|
|
| |
bitcast X to ...
llvm-svn: 174905
|
|
|
|
|
|
|
|
|
|
| |
This eliminates one more linear search over a range of
std::multimap entries. This gives a 22% speedup on the
csa.ll test case from PR15222.
No functionality change intended.
llvm-svn: 174893
|
|
|
|
|
|
|
|
|
|
| |
This flag makes asan use a small (<2G) offset for 64-bit asan shadow mapping.
On x86_64 this saves us a register, thus achieving ~2/3 of the
zero-base-offset's benefits in both performance and code size.
Thanks Jakub Jelinek for the idea.
llvm-svn: 174886
|
|
|
|
|
|
|
|
|
| |
This removes the last of the linear searches over ranges of std::multimap
iterators, giving a 7% speedup on the doduc.bc input from PR15222.
No functionality change intended.
llvm-svn: 174859
|
|
|
|
|
|
|
|
|
| |
This is another cleanup aimed at eliminating linear searches
in ranges of std::multimap.
No functionality change intended.
llvm-svn: 174858
|
|
|
|
|
|
|
|
|
|
| |
Profiling suggests that getInstructionTypes is performance-sensitive,
this cleans up some double-casting in that function in favor of
using dyn_cast.
No functionality change intended.
llvm-svn: 174857
|
|
|
|
|
|
|
|
|
|
|
| |
By itself, this does not have much of an effect, but only because in the default
configuration the full cycle checks are used only for small problem sizes.
This is part of a general cleanup of uses of iteration over std::multimap
ranges only for the purpose of checking membership.
No functionality change intended.
llvm-svn: 174856
|
|
|
|
|
|
|
|
|
| |
Handle chains in which the same offset is used for both loads and
stores to the same array.
Fixes rdar://11410078.
llvm-svn: 174789
|
|
|
|
| |
llvm-svn: 174786
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/12867368>"
This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.
llvm-svn: 174748
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a follow-up to the cost-model change in r174713 which splits
the cost of a memory operation between the address computation and the
actual memory access. In r174713, this cost is always added to the
memory operation cost, and so BBVectorize will do the same.
Currently, this new cost function is used only by ARM, and I don't
have any ARM test cases for BBVectorize. Assistance in generating some
good ARM test cases for BBVectorize would be greatly appreciated!
llvm-svn: 174743
|
|
|
|
|
|
|
|
| |
isn't using the default calling convention. However, if the transformation is
from a call to inline IR, then the calling convention doesn't matter.
rdar://13157990
llvm-svn: 174724
|
|
|
|
| |
llvm-svn: 174723
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a function to target transform info to query for the cost of address
computation. The cost model analysis pass now also queries this interface.
The code in LoopVectorize adds the cost of address computation as part of the
memory instruction cost calculation. Only there, we know whether the instruction
will be scalarized or not.
Increase the penality for inserting in to D registers on swift. This becomes
necessary because we now always assume that address computation has a cost and
three is a closer value to the architecture.
radar://13097204
llvm-svn: 174713
|
|
|
|
| |
llvm-svn: 174709
|
|
|
|
|
|
|
|
|
|
| |
included."
This reverts commit 3854a5d90fee52af1065edbed34521fff6cdc18d.
This causes a clang unit test to hang: vtable-available-externally.cpp.
llvm-svn: 174692
|
|
|
|
| |
llvm-svn: 174675
|
|
|
|
| |
llvm-svn: 174671
|
|
|
|
|
|
|
|
|
|
| |
We don't want too many classes in a pass and the classes obscure the details. I
was going a little overboard with object modeling here. Replace classes by
generic code that handles both loads and stores.
No functionality change intended.
llvm-svn: 174646
|
|
|
|
|
|
|
|
| |
1. Moved a comment from ObjCARCOpts.cpp -> ObjCARCContract.cpp.
2. Removed a comment from ObjCARCOpts.cpp that was already moved to
ObjCARCAliasAnalysis.h/.cpp.
llvm-svn: 174581
|
|
|
|
| |
llvm-svn: 174571
|
|
|
|
| |
llvm-svn: 174438
|
|
|
|
| |
llvm-svn: 174432
|
|
|
|
|
|
| |
Found by running instcombine on a fabricated test case for the constant folder.
llvm-svn: 174430
|
|
|
|
|
|
|
| |
Introduce a helper class that computes the cost of memory access instructions.
No functionality change intended.
llvm-svn: 174422
|
|
|
|
|
|
|
| |
edge is critical, then split it so we can insert the store.
rdar://13126179
llvm-svn: 174418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the loop vectorizer cost model, we used to ignore stores/loads of a pointer
type when computing the widest type within a loop. This meant that if we had
only stores/loads of pointers in a loop we would return a widest type of 8bits
(instead of 32 or 64 bit) and therefore a vector factor that was too big.
Now, if we see a consecutive store/load of pointers we use the size of a pointer
(from data layout).
This problem occured in SingleSource/Benchmarks/Shootout-C++/hash.cpp (reduced
test case is the first test in vector_ptr_load_store.ll).
radar://13139343
llvm-svn: 174377
|
|
|
|
| |
llvm-svn: 174241
|
|
|
|
|
|
|
|
|
| |
says, but that's a defect (to be filed). "Cls::purevfn()" is still an odr use.
Also fixes a bug in the previous patch that caused us to not mark the function
referenced just because we didn't want to mark it odr used.
llvm-svn: 174240
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the SCEV vector size in LoopStrengthReduce. It is observed that
the BaseRegs vector size is 4 in most cases,
and elements are frequently copied when it is initialized as
SmallVector<const SCEV *, 2> BaseRegs.
Our benchmark results show that the compilation time performance
improved by ~0.5%.
Patch by Wan Xiaofei.
llvm-svn: 174219
|
|
|
|
|
|
| |
transformation is illegal.
llvm-svn: 174156
|
|
|
|
| |
llvm-svn: 174152
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a re-worked version of r174048.
Given source IR:
call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !14), !dbg !15
we used to generate
call void @llvm.dbg.declare(metadata !27, metadata !28), !dbg !29
!27 = metadata !{null}
With this patch, we will correctly generate
call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !27), !dbg !28
Looking up %argc.addr in ValueMap will return null, since %argc.addr is already
correctly set up, we can use identity mapping.
rdar://problem/13089880
llvm-svn: 174093
|
|
|
|
| |
llvm-svn: 174048
|
|
|
|
|
|
|
| |
reference to a pointer, so that it can handle the case where DataLayout
is not available and behave conservatively.
llvm-svn: 174024
|
|
|
|
| |
llvm-svn: 173992
|
|
|
|
|
|
|
| |
There are still places which treat the Attribute object as a collection of
attributes. I'm systematically removing them.
llvm-svn: 173990
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Given source IR:
call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !14), !dbg !15
we used to generate
call void @llvm.dbg.declare(metadata !27, metadata !28), !dbg !29
!27 = metadata !{null}
With this patch, we will correctly generate
call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !27), !dbg !28
Looking up %argc.addr in ValueMap will return null, since %argc.addr is already
correctly set up, we can use identity mapping.
llvm-svn: 173946
|
|
|
|
|
|
|
|
| |
sext-not-and --> select.
Patch by Muhammad Tauqir Ahmad.
llvm-svn: 173901
|
|
|
|
| |
llvm-svn: 173842
|
|
|
|
|
|
| |
to a command line switch.
llvm-svn: 173837
|
|
|
|
| |
llvm-svn: 173836
|
|
|
|
| |
llvm-svn: 173834
|
|
|
|
| |
llvm-svn: 173832
|