- Mar 15, 2012
-
-
Eric Christopher authored
llvm-svn: 152842
-
Eric Christopher authored
llvm-svn: 152841
-
Jakob Stoklund Olesen authored
llvm-svn: 152840
-
Jim Grosbach authored
rdar://11056647 llvm-svn: 152834
-
Jakob Stoklund Olesen authored
We currently assume that all targets have less than 64k opcodes. We shouldn't limit it further. llvm-svn: 152833
-
Matt Beaumont-Gay authored
llvm-svn: 152832
-
Duncan Sands authored
theoretical fix since it only matters for types with >= 2^63 bits (!) and also only matters if pointers have more than 64 bits, which is not supported anyway. llvm-svn: 152831
-
Lang Hames authored
register allocation by allowing all 32 D-registers to be used. Patch by Cameron Zwarich. llvm-svn: 152824
-
Jakob Stoklund Olesen authored
We cannot limit the concatenated instruction names to 64K. ARM is already at 32K, and it is easy to imagine a target with more instructions. llvm-svn: 152817
-
Jakob Stoklund Olesen authored
This patch limited the concatenated register names to 64K which meant that the total number of registers was many times less than 64K. If any compilers actually enforce the 64K limit on string literals, and it turns out to be a problem, we should fix that problem by not using long string literals. llvm-svn: 152816
-
Kristof Beyls authored
Fix VCVT decoding (between floating-point and fixed-point, Floating-point). Patch by Richard Barton. llvm-svn: 152814
-
Michael J. Spencer authored
llvm-svn: 152812
-
Rafael Espindola authored
code. While here, reduce indentation. llvm-svn: 152803
-
Bill Wendling authored
llvm-svn: 152794
-
Michael J. Spencer authored
This needs a test, but it will take some time to figure out the best way to get an input that will produce > 2^16 relocs. Patch by Graydon Hoare! llvm-svn: 152787
-
Nadav Rotem authored
When optimizing certain BUILD_VECTOR nodes into other BUILD_VECTOR nodes, add the new node into the work list because there is a potential for further optimizations. llvm-svn: 152784
-
Eric Christopher authored
out the DW_AT_name. Older gdbs unfortunately still use it to disambiguate member functions in templated classes (gdb.cp/templates.exp). rdar://11043421 (which is now deferred for a bit) llvm-svn: 152782
-
Eli Bendersky authored
llvm-svn: 152780
-
Bill Wendling authored
Transform: (fsub x, (fadd x, y)) -> (fneg y) and (fsub x, (fadd y, x)) -> (fneg y) if 'unsafe math' is specified. <rdar://problem/7540295> llvm-svn: 152777
-
Chandler Carruth authored
changed since. No one was using it. It is yet another consumer of the InlineCost interface that I'd like to change. llvm-svn: 152769
-
Chandler Carruth authored
essentially sorting the pair's arguments. I'd love to actually call sort here, but I'm just not that crazy. ;] llvm-svn: 152764
-
Chandler Carruth authored
This appears to not be the case with dragonegg at least in some contexts. Hopefully will fix the bootstrap assert failure there. llvm-svn: 152763
-
Chad Rosier authored
This results in things such as vmovaps -96(%rbx), %xmm1 vinsertf128 $1, %xmm1, %ymm0, %ymm0 to be combined to vinsertf128 $1, -96(%rbx), %ymm0, %ymm0 rdar://10643481 llvm-svn: 152762
-
Chandler Carruth authored
metrics. llvm-svn: 152760
-
Chandler Carruth authored
side of things. This is all dead code. llvm-svn: 152759
-
Aaron Ballman authored
llvm-svn: 152756
-
Kostya Serebryany authored
llvm-svn: 152755
-
Kostya Serebryany authored
[asan] rename class BlackList to FunctionBlackList and move it into a separate file -- we will need the same functionality in ThreadSanitizer llvm-svn: 152753
-
Chandler Carruth authored
correlated pairs of pointer arguments at the callsite. This is designed to recognize the common C++ idiom of begin/end pointer pairs when the end pointer is a constant offset from the begin pointer. With the C-based idiom of a pointer and size, the inline cost saw the constant size calculation, and this provides the same level of information for begin/end pairs. In order to propagate this information we have to search for candidate operations on a pair of pointer function arguments (or derived from them) which would be simplified if the pointers had a known constant offset. Then the callsite analysis looks for such pointer pairs in the argument list, and applies the appropriate bonus. This helps LLVM detect that half of bounds-checked STL algorithms (such as hash_combine_range, and some hybrid sort implementations) disappear when inlined with a constant size input. However, it's not a complete fix due the inaccuracy of our cost metric for constants in general. I'm looking into that next. Benchmarks showed no significant code size change, and very minor performance changes. However, specific code such as hashing is showing significantly cleaner inlining decisions. llvm-svn: 152752
-
Dan Gohman authored
should be ignored by ARC optimization, don't insert new ARC runtime calls in the unwind destination. llvm-svn: 152748
-
- Mar 14, 2012
-
-
Francois Pichet authored
Commit r152704 exposed a latent MSVC limitation (aka bug). Both ilist and and iplist contains the same function: template<class InIt> void insert(iterator where, InIt first, InIt last) { for (; first != last; ++first) insert(where, *first); } Also ilist inherits from iplist and ilist contains a "using iplist<NodeTy>::insert". MSVC doesn't know which one to pick and complain with an error. I think it is safe to delete ilist::insert since it is redundant anyway. llvm-svn: 152746
-
Chandler Carruth authored
which are small enough to themselves be inlined. Delaying in this manner can be harmful if the function is inelligible for inlining in some (or many) contexts as it pessimizes the code of the function itself in the event that inlining does not eventually happen. Previously the check was written to only do this delaying of inlining for static functions in the hope that they could be entirely deleted and in the knowledge that all callers of static functions will have the opportunity to inline if it is in fact profitable. However, with C++ we get two other important sources of functions where the definition is always available for inlining: inline functions and templated functions. This patch generalizes the inliner to allow linkonce-ODR (the linkage such C++ routines receive) to also qualify for this delay-based inlining. Benchmarking across a range of large real-world applications shows roughly 2% size increase across the board, but an average speedup of about 0.5%. Some benhcmarks improved over 2%, and the 'clang' binary itself (when bootstrapped with this feature) shows a 1% -O0 performance improvement when run over all Sema, Lex, and Parse source code smashed into a single file. A clean re-build of Clang+LLVM with a bootstrapped Clang shows approximately 2% improvement, but that measurement is often noisy. llvm-svn: 152737
-
Eli Bendersky authored
llvm-svn: 152712
-
Benjamin Kramer authored
llvm-svn: 152711
-
Bill Wendling authored
Also do some minor reformatting. llvm-svn: 152707
-
Chandler Carruth authored
a worklist rather than a recursive call. No functionality changed. llvm-svn: 152706
-
Bill Wendling authored
There were cases where a value could be used and it's both crossing an invoke and NOT crossing an invoke. This could happen in the landing pads. In that case, we will demote the value to the stack like we did before. <rdar://problem/10609139> llvm-svn: 152705
-
Bill Wendling authored
expensive "getFirstTerminator" call. This reduces the time of compilation in PR12258 from >10 minutes to < 10 seconds. llvm-svn: 152704
-
Eli Bendersky authored
llvm-svn: 152703
-
Eli Bendersky authored
llvm-svn: 152702
-