- Mar 16, 2012
-
-
Chandler Carruth authored
analysis implementation. The header was already separated. Also cleanup all the comments in the header to follow a nice modern doxygen form. There is still plenty of cruft here, but some of that will fall out in subsequent refactorings and this was an easy step in the right direction. No functionality changed here. llvm-svn: 152898
-
Andrew Trick authored
These edges are not really necessary, but it is consistent with the way we currently create physreg edges. Scheduler heuristics that expect a DAG edge to the block terminator could benefit from this change. Although in the future I hope we have a better mechanism for modeling latency across scheduling regions. llvm-svn: 152895
-
Andrew Trick authored
Only record IVUsers that are dominated by simplified loop headers. Otherwise SCEVExpander will crash while looking for a preheader. I previously tried to work around this in LSR itself, but that was insufficient. This way, LSR can continue to run if some uses are not in simple loops, as long as we don't attempt to analyze those users. Fixes <rdar://problem/11049788> Segmentation fault: 11 in LoopStrengthReduce llvm-svn: 152892
-
Chad Rosier authored
on our internal nightly testers. So, basically revert r152486 again. Abbreviated original commit message: Implement a more intelligent way of spilling uses across an invoke boundary. It looks as if Chander's inlining work, r152737, exposed an issue. llvm-svn: 152887
-
Eli Friedman authored
In InstCombiner::visitOr, make sure we reverse the operand swap used for checking for or-of-xor operations after those checks; a later check expects that any constant will be in Op1. PR12234. llvm-svn: 152884
-
Jim Grosbach authored
rdar://11058464 llvm-svn: 152883
-
Jim Grosbach authored
rdar://11058464 llvm-svn: 152881
-
Eric Christopher authored
Patch by Clemens Hammacher! Fixes PR12243 llvm-svn: 152880
-
NAKAMURA Takumi authored
Revert r152613 (and r152614), "Inline the d'tor and add an anchor instead." for workaround of g++-4.4's miscompilation. It caused MSP430DAGToDAGISel::SelectIndexedBinOp() to be miscompiled. When two ReplaceUses()'s are expanded as inline, vtable in base class is stored to latter (ISelUpdater)ISU. llvm-svn: 152877
-
Eric Christopher authored
the DECL information. rdar://10855921 llvm-svn: 152876
-
Jim Grosbach authored
llvm-svn: 152870
-
- Mar 15, 2012
-
-
Chad Rosier authored
and still allow immediate encoding, just not with cmn. rdar://11038907 llvm-svn: 152869
-
Chad Rosier authored
rdar://11038907 llvm-svn: 152847
-
Jim Grosbach authored
rdar://11056591 llvm-svn: 152846
-
Eric Christopher authored
Part of rdar://8905263 llvm-svn: 152845
-
Eric Christopher authored
llvm-svn: 152844
-
Eric Christopher authored
llvm-svn: 152843
-
Eric Christopher authored
llvm-svn: 152842
-
Eric Christopher authored
llvm-svn: 152841
-
Jim Grosbach authored
rdar://11056647 llvm-svn: 152834
-
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
-
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
-
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
-