- Nov 20, 2011
-
-
Nick Lewycky authored
Suggested in code review by Eli. That code in InstCombine looks kinda suspicious. llvm-svn: 145013
-
Chandler Carruth authored
properly account for the *global* probability of the edge being taken. This manifested as a very large number of unconditional branches to blocks being merged against the CFG even though they weren't particularly hot within the CFG. The fix is to check whether the edge being merged is both locally hot relative to other successors for the source block, and globally hot compared to other (unmerged) predecessors of the destination block. This introduces a new crasher on GCC single-source, but it's currently behind a flag, and Ben has offered to work on the reduction. =] llvm-svn: 145010
-
Benjamin Kramer authored
setFlags doesn't modify its arguments. llvm-svn: 145007
-
Craig Topper authored
Add code for lowering v32i8 shifts by a splat to AVX2 immediate shift instructions. Remove 256-bit splat handling from LowerShift as it was already handled by PerformShiftCombine. llvm-svn: 145005
-
- Nov 19, 2011
-
-
Craig Topper authored
llvm-svn: 145004
-
Craig Topper authored
Remove some of the special classes that worked around an old tablegen limitation of not being able to remove redundant bitconverts from patterns. llvm-svn: 145003
-
Craig Topper authored
llvm-svn: 144999
-
Chandler Carruth authored
formation phase and into the initial walk of the basic blocks. We essentially pre-merge all blocks where unanalyzable fallthrough exists, as we won't be able to update the terminators effectively after any reorderings. This is quite a bit more principled as there may be CFGs where the second half of the unanalyzable pair has some analyzable predecessor that gets placed first. Then it may get placed next, implicitly breaking the unanalyzable branch even though we never even looked at the part that isn't analyzable. I've included a test case that triggers this (thanks Benjamin yet again!), and I'm hoping to synthesize some more general ones as I dig into related issues. Also, to make this new scheme work we have to be able to handle branches into the middle of a chain, so add this check. We always fallback on the incoming ordering. Finally, this starts to really underscore a known limitation of the current implementation -- we don't consider broken predecessors when merging successors. This can caused major missed opportunities, and is something I'm planning on looking at next (modulo more bug reports). llvm-svn: 144994
-
Craig Topper authored
Synthesize SSSE3/AVX 128-bit horizontal integer add/sub instructions from add/sub of appropriate shuffle vectors. llvm-svn: 144989
-
Craig Topper authored
llvm-svn: 144988
-
Craig Topper authored
llvm-svn: 144987
-
Craig Topper authored
llvm-svn: 144985
-
- Nov 18, 2011
-
-
Andrew Trick authored
The loop tree's inclusive block lists are painful and expensive to update. (I have no idea why they're inclusive). The design was supposed to handle this case but the implementation missed it and my unit tests weren't thorough enough. Fixes PR11335: loop unroll update. llvm-svn: 144970
-
Nadav Rotem authored
llvm-svn: 144967
-
Kostya Serebryany authored
[asan] workaround for reg alloc bug 11395: don't instrument functions with large chunks of inline assembler llvm-svn: 144962
-
Chad Rosier authored
llvm-svn: 144959
-
Devang Patel authored
DISubrange supports unsigned lower/upper array bounds, so let's not fake it in the end while emitting DWARF. If a FE needs to encode signed lower/upper array bounds then we need to extend DISubrange or ad DISignedSubrange. llvm-svn: 144937
-
Kostya Serebryany authored
quick fix: remove GlobalVariable::GlobalVariable mistakenly commited at r144933. For some reason this compiles on linux llvm-svn: 144936
-
Andrew Trick authored
The right way to check for a binary operation is cast<BinaryOperator>. The original check: cast<Instruction> && numOperands() == 2 would match phi "instructions", leading to an infinite loop in extreme corner case: a useless phi with operands [self, constant] that prior optimization passes failed to remove, being used in the loop by another useless phi, in turn being used by an lshr or udiv. Fixes PR11350: runaway iteration assertion. llvm-svn: 144935
-
Kostya Serebryany authored
fall back to explicit list of allowed linkages when instrumenting globals in asan; add a test check that asan does not touch linkonce_odr llvm-svn: 144933
-
- Nov 17, 2011
-
-
Chad Rosier authored
llvm-svn: 144920
-
Craig Topper authored
Fix SSE/AVX integer comparison patterns to understand that all integer vector loads are promoted to i64 vector loads so patterns need a bitconvert. Also slightly simplify the AVX2 variable shift patterns by using the predefined bitconvert pattern fragments. llvm-svn: 144896
-
Chad Rosier authored
llvm-svn: 144888
-
Chad Rosier authored
ADDs. MaxOffs is used as a threshold to limit the size of the offset. Tradeoffs being: (1) If we can't materialize the large constant then we'll cause fast-isel to bail. (2) Too large of an offset can't be directly encoded in the ADD resulting in a MOV+ADD. Generally not a bad thing because otherwise we would have had ADD+ADD, but on Thumb this turns into a MOVS+MOVT+ADD. Working on a fix for that. (3) Conversely, too low of a threshold we'll miss opportunities to coalesce ADDs. rdar://10412592 llvm-svn: 144886
-
Craig Topper authored
llvm-svn: 144885
-
Eli Friedman authored
Add support for custom names for library functions in TargetLibraryInfo. Add a custom name for fwrite and fputs on x86-32 OSX. Make SimplifyLibCalls honor the custom names for fwrite and fputs. Fixes <rdar://problem/9815881>. llvm-svn: 144876
-
Chad Rosier authored
rdar://10456186 llvm-svn: 144872
-
Eli Friedman authored
Turn on vzeroupper insertion on call boundaries for AVX; it works as far as I know, and I'd like to see wider testing. llvm-svn: 144867
-
Eli Friedman authored
Make sure to replace the chain properly when DAGCombining a LOAD+EXTRACT_VECTOR_ELT into a single LOAD. Fixes PR10747/PR11393. llvm-svn: 144863
-
Michael J. Spencer authored
llvm-svn: 144861
-
- Nov 16, 2011
-
-
Jim Grosbach authored
We don't (yet) have the granularity in the fixups to be specific about which bitranges are affected. That's a future cleanup, but we're not there yet. llvm-svn: 144852
-
Akira Hatanaka authored
llvm-svn: 144849
-
Akira Hatanaka authored
llvm-svn: 144847
-
Jim Grosbach authored
llvm-svn: 144842
-
Akira Hatanaka authored
nodes. llvm-svn: 144841
-
Akira Hatanaka authored
llvm-svn: 144840
-
-
Jim Grosbach authored
llvm-svn: 144837
-
Jim Grosbach authored
llvm-svn: 144836
-
Chad Rosier authored
target-independent selector or the target-specific selector. llvm-svn: 144833
-