- Jul 21, 2012
-
-
Akira Hatanaka authored
llvm-svn: 160599
-
Akira Hatanaka authored
llvm-svn: 160598
-
Akira Hatanaka authored
Test case will be added later when long branch patch is checked in. llvm-svn: 160597
-
Nuno Lopes authored
baby steps toward fixing some problems with inbound GEPs that overflow, as discussed 2 months ago or so. Make sure we do not emit index computations with NSW flags so that we dont get an undef value if the GEP overflows llvm-svn: 160589
-
Nuno Lopes authored
move the bounds checking pass to the instrumentation folder, where it belongs. I dunno why in the world I dropped it in the Scalar folder in the first place. No functionality change. llvm-svn: 160587
-
Benjamin Kramer authored
Remove unused private member variables uncovered by the recent changes to clang's -Wunused-private-field. llvm-svn: 160583
-
- Jul 20, 2012
-
-
Jakob Stoklund Olesen authored
LiveRangeEdit::foldAsLoad() can eliminate a register by folding a load into its only use. Only do that when the load is safe to move, and it won't extend any live ranges. This fixes PR13414. llvm-svn: 160575
-
Chandler Carruth authored
CI's name, and then used the StringRef pointing at its old name. I'm fixing it by storing the name in a std::string, and hoisting the renaming logic to happen always. This is nicer anyways as it will allow the upgraded IR to have the same names as the input IR in more cases. Another bug found by AddressSanitizer. Woot. llvm-svn: 160572
-
Jakob Stoklund Olesen authored
PHIElimination splits critical edges when it predicts it can resolve interference and eliminate copies. It doesn't split the edge if the interference wouldn't be resolved anyway because the phi-use register is live in the critical edge anyway. Teach PHIElimination to split loop exiting edges with interference, even if it wouldn't resolve the interference. This removes the necessary copies from the loop, which is still an improvement from injecting the copies into the loop. The test case demonstrates the improvement. Before: LBB0_1: cmpb $0, (%rdx) leaq 1(%rdx), %rdx movl %esi, %eax je LBB0_1 After: LBB0_1: cmpb $0, (%rdx) leaq 1(%rdx), %rdx je LBB0_1 movl %esi, %eax llvm-svn: 160571
-
Benjamin Kramer authored
llvm-svn: 160567
-
Daniel Dunbar authored
color. llvm-svn: 160559
-
Daniel Dunbar authored
llvm-svn: 160558
-
Daniel Dunbar authored
llvm-svn: 160557
-
Richard Osborne authored
GetBestDestForJumpOnUndef() assumes there is at least 1 successor, which isn't true if the block ends in an indirect branch with no successors. Fix this by bailing out earlier in this case. llvm-svn: 160546
-
Kostya Serebryany authored
[asan] make sure that the crash callbacks do not get merged (Chandler's idea: insert an empty InlineAsm). Change the order in which the new BBs are inserted: the slow path BB is insert between old BBs, the crash BB is inserted at the end. Don't create an empty BB (introduced by recent commits). Update the test. The experimental code that does manual crash callback merge will most likely be deleted later. llvm-svn: 160544
-
Craig Topper authored
Don't use implicit register operands to calculate L-bit for AVX instructions. Needed because super reg defs and kills are added as implicit operands on 128-bit instructions. Fixes PR13349. Patch by Jose Fonseca. llvm-svn: 160543
-
Nick Lewycky authored
llvm-svn: 160532
-
Pete Cooper authored
llvm-svn: 160531
-
Nick Lewycky authored
memory. This makes clang play nice with leak checkers. llvm-svn: 160529
-
- Jul 19, 2012
-
-
Galina Kistanova authored
llvm-svn: 160525
-
Preston Gurd authored
Atom buildbot will auto-detect Atom. llvm-svn: 160521
-
Sebastian Pop authored
This fixes a bunch of make check failures of the form: Unknown Architecture Version. UNREACHABLE executed at ../lib/Target/Hexagon/HexagonSubtarget.cpp:60! llvm-svn: 160518
-
Nuno Lopes authored
It is optimal at least up to 7 bits (I've tested all such cases) This change to truncate() allows a little simplification to the multiplication code, and it also makes multiplication optimal :) llvm-svn: 160512
-
Benjamin Kramer authored
llvm-svn: 160507
-
Benjamin Kramer authored
No functionality change. llvm-svn: 160501
-
Jush Lu authored
llvm-svn: 160500
-
Alexey Samsonov authored
(instead of basenames) from DWARF. Use this behavior in llvm-dwarfdump tool. Reviewed by Benjamin Kramer. llvm-svn: 160496
-
Galina Kistanova authored
llvm-svn: 160493
-
Bill Wendling authored
llvm-svn: 160483
-
Bill Wendling authored
llvm-svn: 160479
-
Bill Wendling authored
llvm-svn: 160477
-
Bill Wendling authored
llvm-svn: 160476
-
Bill Wendling authored
llvm-svn: 160475
-
- Jul 18, 2012
-
-
Manman Ren authored
Updated OptimizeCompare in peephole to remove redundant cmp against zero. We only remove Compare if CF and OF are not used. rdar://11855129 llvm-svn: 160454
-
Preston Gurd authored
when run on an Intel Atom processor. The failures have arisen due to changes elsewhere in the trunk over the past 8 weeks or so. These failures were not detected by the Atom buildbot because the CPU on the Atom buildbot was not being detected as an Atom CPU. The fix for this problem is in Host.cpp and X86Subtarget.cpp, but shall remain commented out until the current set of Atom test failures are fixed. Patch by Andy Zhang and Tyler Nowicki! llvm-svn: 160451
-
Victor Oliveira authored
llvm-svn: 160446
-
Chad Rosier authored
llvm-svn: 160445
-
Chandler Carruth authored
LiveIntervals due to the two-addr pass generating bogus MI code. The crux of the issue was a loop nesting problem. The intent of the code which attempts to transform instructions before converting them to two-addr form is to defer and reprocess any transformed instructions as the second processing is likely to have more opportunities to coalesce copies, etc. Unfortunately, there was one section of processing that was not deferred -- the INSERT_SUBREG rewriting. Due to quirks of how this rewriting proceeded, not only did it occur early, it removed the bits of information needed for the deferred processing to correctly generate the necessary two address form (specifically inserting a copy), but didn't trigger any immediate assertions and produced what appeared to be already valid two-address from code. Thus, the assertion only fired much later in the pipeline. The fix is to hoist the transformation logic up layer to where it can more firmly defer all further processing, and to teach the normal processing to handle an edge case previously handled as part of the transformation logic. This edge case (already matched tied register operands) needs to *not* defer any steps. As has been brought up repeatedly in the process: wow does this code need refactoring. I *may* squeeze in some time to at least bring sanity to this loop... but wow... =] Thanks to Jakob for helpful hints on the way here, and the review. llvm-svn: 160443
-
Andrew Trick authored
Based on Evan's suggestion without a commitable test. llvm-svn: 160441
-
Andrew Trick authored
llvm-svn: 160440
-