summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Correctly encode pcrel|indirect.Rafael Espindola2010-12-292-5/+3
| | | | llvm-svn: 122624
* CMake: Add disabling optimization on MSVC8 and MSVC10 as workaround for some ↵NAKAMURA Takumi2010-12-293-3/+11
| | | | | | files in Target/ARM and Target/X86. llvm-svn: 122623
* Add text explaining an assertion.Cameron Zwarich2010-12-291-1/+3
| | | | llvm-svn: 122617
* Remove second return.Rafael Espindola2010-12-291-1/+0
| | | | llvm-svn: 122616
* Fix bug when trying to output uint16_t or uint32_t.Rafael Espindola2010-12-291-2/+9
| | | | llvm-svn: 122615
* Implement cfi_def_cfa. Also don't convert to dwarf reg numbers twice. LooksRafael Espindola2010-12-293-14/+59
| | | | | | like 6 is a fixed point of that and so the previous tests were OK :-) llvm-svn: 122614
* fix PR8867: a crash handling fp128. Thanks to Nick for the testcase.Chris Lattner2010-12-291-1/+1
| | | | llvm-svn: 122613
* Implement cfi_def_cfa_register.Rafael Espindola2010-12-291-0/+8
| | | | llvm-svn: 122612
* Initial .cfi_offset implementation.Rafael Espindola2010-12-291-0/+7
| | | | llvm-svn: 122611
* Simplify some code in MachineVerifier that was doing the correct thing, but notCameron Zwarich2010-12-281-10/+11
| | | | | | in the most obvious way. llvm-svn: 122610
* Don't produce a "DW_CFA_advance_loc 0".Rafael Espindola2010-12-281-1/+2
| | | | llvm-svn: 122609
* Revert the optimization in r122596. It is correct for all current targets, butCameron Zwarich2010-12-281-1/+8
| | | | | | it relies on assumptions that may not be true in the future. llvm-svn: 122608
* Multiple SPARC backend fixes: added Y register; updated select_cc, subx, ↵Venkatraman Govindaraju2010-12-283-21/+35
| | | | | | | | subxcc defs/uses; and fixed CustomInserter. llvm-svn: 122607
* simplify this, isBytewiseValue handles the extra check. We stillChris Lattner2010-12-281-5/+2
| | | | | | | check for "multiple of a byte" in size to make it clear that the >> 3 below is safe. llvm-svn: 122604
* add a note from llvmdevChris Lattner2010-12-281-0/+11
| | | | llvm-svn: 122603
* Implement .cfi_remember_state and .cfi_restore_state.Rafael Espindola2010-12-283-44/+111
| | | | llvm-svn: 122602
* Cast away "comparison between signed and unsigned integer" warnings.Benjamin Kramer2010-12-282-4/+7
| | | | llvm-svn: 122598
* Fix a signed/unsigned comparison warning.Benjamin Kramer2010-12-281-1/+1
| | | | llvm-svn: 122597
* Avoid iterating every operand of an instruction in StrongPHIElimination, sinceCameron Zwarich2010-12-281-4/+3
| | | | | | | | we are only interested in the defs when discovering interferences. This is a 28% speedup running StrongPHIElimination on 403.gcc. llvm-svn: 122596
* Pacify the compiler. BestWeight cannot in fact be used uninitializedDuncan Sands2010-12-281-1/+1
| | | | | | | in this function, but the compiler was warning that it might be when doing a release build. llvm-svn: 122595
* Fix warning about size potentially being used uninitializedDuncan Sands2010-12-281-1/+0
| | | | | | when doing a release build. llvm-svn: 122594
* Silence gcc warning about an unused variable when doing a release build.Duncan Sands2010-12-281-0/+1
| | | | llvm-svn: 122593
* Relax address updates in the eh_frame section.Rafael Espindola2010-12-283-22/+101
| | | | llvm-svn: 122591
* Start adding basic support for emitting the call frame instructions.Rafael Espindola2010-12-282-2/+13
| | | | llvm-svn: 122590
* Support/Path: Deprecate Path::hasMagicNumber and replace all uses with ↵Michael J. Spencer2010-12-281-1/+5
| | | | | | fs::has_magic. llvm-svn: 122589
* Support/PathV2: Implement has_magic.Michael J. Spencer2010-12-281-0/+38
| | | | llvm-svn: 122587
* Change an assertion to assert what the code actually relies upon.Cameron Zwarich2010-12-271-1/+1
| | | | llvm-svn: 122586
* fix some issues Frits noticed, add AliasAnalysis as a dependencyChris Lattner2010-12-271-7/+17
| | | | llvm-svn: 122585
* Add support for .cfi_lsda.Rafael Espindola2010-12-274-52/+122
| | | | llvm-svn: 122584
* MC/Mach-O/Thumb: Select appropriate relocation types for Thumb.Daniel Dunbar2010-12-271-9/+11
| | | | llvm-svn: 122583
* Land a first cut at StrongPHIElimination. There are only 5 new test failuresCameron Zwarich2010-12-271-64/+590
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when running without the verifier, and I have not yet checked them to see if the new results are still correct. There are more verifier failures, but they all seem to be additional occurrences of verifier failures that occur with the existing PHIElimination pass. There are a few obvious issues with the code: 1) It doesn't properly update the register equivalence classes during copy insertion, and instead recomputes them before merging live intervals and renaming registers. I wanted to keep this first patch simple for debugging purposes, but it shouldn't be very hard to do this. 2) It doesn't mix the renaming and live interval merging with the copy insertion process, which leads to a lot of virtual register churn. Virtual registers and live intervals are created, only to later be merged into others. The code should be smarter and only create a new virtual register if there is no existing register in the same congruence class. 3) In one place the code uses a DenseMap per basic block, which is unnecessary heap allocation. There should be an inline storage version of DenseMap. I did a quick compile-time test of running llc on 403.gcc with and without StrongPHIElimination. It is slightly slower with StrongPHIElimination, because the small decrease in the coalescer runtime can't beat the increase in phi elimination runtime. Perhaps fixing the above performance issues will narrow the gap. I also haven't yet run any tests of the quality of the generated code. llvm-svn: 122582
* Add knowledge of phi-def and phi-kill valnos to MachineVerifier's predecessorCameron Zwarich2010-12-271-1/+17
| | | | | | | | | valno verification. The "Different value live out of predecessor" check is incorrect in the case of phi-def valnos, so just skip that check for phi-def valnos and instead check that all of the valnos for predecessors have phi-kill. Fixes PR8863. llvm-svn: 122581
* Support/PathV1: Deprecate GetRootDirectory.Michael J. Spencer2010-12-271-6/+5
| | | | llvm-svn: 122580
* Handle reloc_riprel_4byte_movq_load. Should make the bots happy.Rafael Espindola2010-12-271-0/+1
| | | | llvm-svn: 122579
* Add support for the same encodings of the personality function that gnu asRafael Espindola2010-12-277-31/+89
| | | | | | supports. llvm-svn: 122577
* BuildLibCalls: Nuke EmitMemCpy, EmitMemMove and EmitMemSet. They are dead ↵Benjamin Kramer2010-12-271-49/+5
| | | | | | and superseded by IRBuilder. llvm-svn: 122576
* SimplifyLibCalls: Use IRBuilder to simplify code.Benjamin Kramer2010-12-271-67/+48
| | | | llvm-svn: 122575
* have loop-idiom nuke instructions that feed stores that get removed.Chris Lattner2010-12-271-6/+45
| | | | llvm-svn: 122574
* implement enough of the memset inference algorithm to recognize and insert Chris Lattner2010-12-261-11/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | memsets. This is still missing one important validity check, but this is enough to compile stuff like this: void test0(std::vector<char> &X) { for (std::vector<char>::iterator I = X.begin(), E = X.end(); I != E; ++I) *I = 0; } void test1(std::vector<int> &X) { for (long i = 0, e = X.size(); i != e; ++i) X[i] = 0x01010101; } With: $ clang t.cpp -S -o - -O2 -emit-llvm | opt -loop-idiom | opt -O3 | llc to: __Z5test0RSt6vectorIcSaIcEE: ## @_Z5test0RSt6vectorIcSaIcEE ## BB#0: ## %entry subq $8, %rsp movq (%rdi), %rax movq 8(%rdi), %rsi cmpq %rsi, %rax je LBB0_2 ## BB#1: ## %bb.nph subq %rax, %rsi movq %rax, %rdi callq ___bzero LBB0_2: ## %for.end addq $8, %rsp ret ... __Z5test1RSt6vectorIiSaIiEE: ## @_Z5test1RSt6vectorIiSaIiEE ## BB#0: ## %entry subq $8, %rsp movq (%rdi), %rax movq 8(%rdi), %rdx subq %rax, %rdx cmpq $4, %rdx jb LBB1_2 ## BB#1: ## %for.body.preheader andq $-4, %rdx movl $1, %esi movq %rax, %rdi callq _memset LBB1_2: ## %for.end addq $8, %rsp ret llvm-svn: 122573
* start using irbuilder to make mem intrinsics in a few passes.Chris Lattner2010-12-262-107/+35
| | | | llvm-svn: 122572
* add methods to IRBuilder to create memcpy/memset/memmove.Chris Lattner2010-12-261-0/+81
| | | | llvm-svn: 122571
* Fix .cfi_personality on 32 bit systems.Rafael Espindola2010-12-261-1/+1
| | | | llvm-svn: 122570
* Add support for @note. Patch by Jörg Sonnenberger.Rafael Espindola2010-12-263-0/+5
| | | | llvm-svn: 122568
* sketch more of this out.Chris Lattner2010-12-261-20/+64
| | | | llvm-svn: 122567
* Add basic support for .cfi_personality.Rafael Espindola2010-12-263-10/+50
| | | | llvm-svn: 122566
* move isBytewiseValue out to ValueTracking.h/cppChris Lattner2010-12-262-68/+70
| | | | llvm-svn: 122565
* actually add the file...Chris Lattner2010-12-261-0/+103
| | | | llvm-svn: 122563
* Start of a pass for recognizing memset and memcpy idioms.Chris Lattner2010-12-262-0/+2
| | | | | | No functionality yet. llvm-svn: 122562
* Simplify code.Benjamin Kramer2010-12-261-1/+1
| | | | llvm-svn: 122561
* fix some sort of weird pastoChris Lattner2010-12-261-60/+0
| | | | llvm-svn: 122560
OpenPOWER on IntegriCloud