| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
<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
|
|
|
|
|
|
| |
type Sequence so I can print out Sequences in debug statements.
llvm-svn: 173831
|
|
|
|
|
|
| |
perform escape analysis of other retainable object pointers in other locations.
llvm-svn: 173829
|
|
|
|
|
|
|
| |
Fixed set-but-not-used warnings.
Reviewer: gribozavr
llvm-svn: 173810
|
|
|
|
|
|
| |
No intended functionality change.
llvm-svn: 173809
|
|
|
|
| |
llvm-svn: 173781
|
|
|
|
| |
llvm-svn: 173774
|
|
|
|
| |
llvm-svn: 173773
|
|
|
|
|
|
| |
declaration.
llvm-svn: 173772
|
|
|
|
| |
llvm-svn: 173770
|
|
|
|
|
|
|
| |
actually have DEBUG statements. Also changed raw_ostream in said header
to be a forward declaration (removing an include).
llvm-svn: 173769
|
|
|
|
| |
llvm-svn: 173767
|
|
|
|
|
|
|
|
| |
This was missed since whenever I was including ObjCARCAliasAnalysis.h, I
was including ObjCARC.h before it which included these includes
(resulting in no compilation breakage).
llvm-svn: 173764
|
|
|
|
|
|
| |
they are unnecessary.
llvm-svn: 173763
|
|
|
|
|
|
|
|
| |
This also required adding 2x headers Dependency Analysis.h/Provenance Analysis.h
and a .cpp file DependencyAnalysis.cpp to unentangle the dependencies inbetween
ObjCARCContract and ObjCARCOpts.
llvm-svn: 173760
|
|
|
|
| |
llvm-svn: 173759
|