summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Tidy up. Fix indentation and remove trailing whitespace.Craig Topper2012-07-231-16/+14
| | | | llvm-svn: 160617
* Change llvm_unreachable in SplitVectorResult to report_fatal_error. Keeps ↵Craig Topper2012-07-231-1/+2
| | | | | | release builds from crashing if code uses an intrinsic with an illegal type. For instance 256-bit AVX intrinsics without having AVX enabled. llvm-svn: 160616
* Move the initialization of the bounds checking pass. The pass itselfChandler Carruth2012-07-222-3/+3
| | | | | | moved earlier. This fixes some layering issues. llvm-svn: 160611
* ExecutionEngine/TargetSelect.cpp: Override default triple as LLVM_HOSTTRIPLE.NAKAMURA Takumi2012-07-221-1/+1
| | | | | | In current implementation, JIT should run only on host. llvm-svn: 160610
* Revert r160602.Nick Lewycky2012-07-211-177/+8
| | | | llvm-svn: 160603
* Teach globalopt to play nice with leak checkers. This is a reapplication ofNick Lewycky2012-07-211-8/+177
| | | | | | | | r160529 that was subsequently reverted. The fix was to not call GV->eraseFromParent() right before the caller does the same. The existing testcases already caught this bug if run under valgrind. llvm-svn: 160602
* Fix Mips long branch pass.Akira Hatanaka2012-07-212-131/+136
| | | | | | | This pass no longer requires that the global pointer value be saved to the stack or register since it uses bal instruction to compute branch distance. llvm-svn: 160601
* Add HIGHER and HIGHEST relocations to Mips backend.Akira Hatanaka2012-07-213-1/+8
| | | | llvm-svn: 160599
* Revert accidental commit.Akira Hatanaka2012-07-218-288/+45
| | | | llvm-svn: 160598
* Add VK_Mips_HIGHER and VK_Mips_HIGHEST to MCSymbolRefExpr::VariantKind.Akira Hatanaka2012-07-219-45/+290
| | | | | | Test case will be added later when long branch patch is checked in. llvm-svn: 160597
* baby steps toward fixing some problems with inbound GEPs that overflow, as ↵Nuno Lopes2012-07-201-1/+1
| | | | | | | | 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
* move the bounds checking pass to the instrumentation folder, where it ↵Nuno Lopes2012-07-203-2/+2
| | | | | | | | belongs. I dunno why in the world I dropped it in the Scalar folder in the first place. No functionality change. llvm-svn: 160587
* Remove unused private member variables uncovered by the recent changes to ↵Benjamin Kramer2012-07-205-21/+3
| | | | | | clang's -Wunused-private-field. llvm-svn: 160583
* Avoid folding loads that are unsafe to move.Jakob Stoklund Olesen2012-07-201-0/+13
| | | | | | | | | | 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
* Fix a dangling StringRef bug in the auto upgrader. In one case, we resetChandler Carruth2012-07-201-2/+2
| | | | | | | | | | | 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
* Split loop exiting edges more aggressively.Jakob Stoklund Olesen2012-07-201-13/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Try to unbreak the windows build.Benjamin Kramer2012-07-201-1/+1
| | | | llvm-svn: 160567
* SourceMgr: Use has_colors() instead of just is_displayed() before trying to useDaniel Dunbar2012-07-201-2/+2
| | | | | | color. llvm-svn: 160559
* raw_ostream: Add a has_colors() method.Daniel Dunbar2012-07-201-0/+4
| | | | llvm-svn: 160558
* Process: Add sys::Process::FileDescriptorHasColors().Daniel Dunbar2012-07-202-10/+16
| | | | llvm-svn: 160557
* Fix assertion in jump threading (PR13405).Richard Osborne2012-07-201-0/+2
| | | | | | | | 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
* [asan] make sure that the crash callbacks do not get merged (Chandler's ↵Kostya Serebryany2012-07-201-4/+16
| | | | | | 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
* Don't use implicit register operands to calculate L-bit for AVX ↵Craig Topper2012-07-201-0/+2
| | | | | | 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
* Revert r160529 due to crashes.Nick Lewycky2012-07-191-171/+8
| | | | llvm-svn: 160532
* Fix crash in machine verifier when trying to print the def of a register ↵Pete Cooper2012-07-191-0/+2
| | | | | | which has no def llvm-svn: 160531
* Don't wipe out global variables that are probably storing pointers to heapNick Lewycky2012-07-191-8/+171
| | | | | | memory. This makes clang play nice with leak checkers. llvm-svn: 160529
* Reverting r 160419.Galina Kistanova2012-07-191-2/+1
| | | | llvm-svn: 160525
* Adds the family codes for the Midview Atom processors so that thePreston Gurd2012-07-192-4/+3
| | | | | | Atom buildbot will auto-detect Atom. llvm-svn: 160521
* default to use -mv4 when no version of Hexagon has been specifiedSebastian Pop2012-07-191-1/+5
| | | | | | | | | 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
* reimplement truncate() to make it optimal.Nuno Lopes2012-07-191-10/+45
| | | | | | | | 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
* Pull the simple parts of DenseMapInfo<DebugLoc> inline and prune includes.Benjamin Kramer2012-07-191-12/+0
| | | | llvm-svn: 160507
* Replace some explicit compare loops with std::equal.Benjamin Kramer2012-07-192-11/+2
| | | | | | No functionality change. llvm-svn: 160501
* [arm-fast-isel] Add support for vararg function calls.Jush Lu2012-07-191-28/+36
| | | | llvm-svn: 160500
* DebugInfo library: add support for fetching absolute paths to source filesAlexey Samsonov2012-07-194-7/+39
| | | | | | | | (instead of basenames) from DWARF. Use this behavior in llvm-dwarfdump tool. Reviewed by Benjamin Kramer. llvm-svn: 160496
* Fixed few warnings.Galina Kistanova2012-07-191-1/+1
| | | | llvm-svn: 160493
* Remove tabs.Bill Wendling2012-07-191-85/+85
| | | | llvm-svn: 160483
* Remove tabs.Bill Wendling2012-07-193-8/+8
| | | | llvm-svn: 160479
* Remove tabs.Bill Wendling2012-07-1917-79/+79
| | | | llvm-svn: 160477
* Remove tabs.Bill Wendling2012-07-193-13/+13
| | | | llvm-svn: 160476
* Remove tabs.Bill Wendling2012-07-1910-32/+35
| | | | llvm-svn: 160475
* X86: remove redundant cmp against zero.Manman Ren2012-07-182-15/+84
| | | | | | | | | 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
* This patch fixes 8 out of 20 unexpected failures in "make check"Preston Gurd2012-07-182-1/+5
| | | | | | | | | | | | | | | 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
* Adding some debug information to PassManagerVictor Oliveira2012-07-181-0/+20
| | | | llvm-svn: 160446
* Whitespace.Chad Rosier2012-07-181-18/+14
| | | | llvm-svn: 160445
* Fix a somewhat nasty crasher in PR13378. This crashes inside ofChandler Carruth2012-07-181-22/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix ARMTargetLowering::isLegalAddImmediate to consider thumb encodings.Andrew Trick2012-07-181-4/+11
| | | | | | Based on Evan's suggestion without a commitable test. llvm-svn: 160441
* whitespaceAndrew Trick2012-07-181-2/+2
| | | | llvm-svn: 160440
* The vbroadcast family of instructions has 'fallback patterns' in case where theNadav Rotem2012-07-181-6/+8
| | | | | | | | | | | | load source operand is used by multiple nodes. The v2i64 broadcast was emulated by shuffling the two lower i32 elements to the upper two. We had a bug in the immediate used for the broadcast. Replacing 0 to 0x44. 0x44 means [01|00|01|00] which corresponds to the correct lane. Patch by Michael Kuperstein. llvm-svn: 160430
* Mips specific inline asm operand modifier 'M':Jack Carter2012-07-181-3/+8
| | | | | | | | | | | | | | | | | | | | | | Print the high order register of a double word register operand. In 32 bit mode, a 64 bit double word integer will be represented by 2 32 bit registers. This modifier causes the high order register to be used in the asm expression. It is useful if you are using doubles in assembler and continue to control register to variable relationships. This patch also fixes a related bug in a previous patch: case 'D': // Second part of a double word register operand case 'L': // Low order register of a double word register operand case 'M': // High order register of a double word register operand I got 'D' and 'M' confused. The second part of a double word operand will only match 'M' for one of the endianesses. I had 'L' and 'D' be the opposite twins when 'L' and 'M' are. llvm-svn: 160429
* Remove tab characters.Craig Topper2012-07-181-13/+13
| | | | llvm-svn: 160425
OpenPOWER on IntegriCloud