summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* - Update register allocation hint after coalescing. This is done by the ↵Evan Cheng2009-06-185-84/+158
| | | | | | | | | target since the hint is target dependent. This is important for ARM register pair hints. - Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping. - More fixes to get ARM load / store double word working. llvm-svn: 73671
* It looks like nobody is working on PR 4158, so I'mDale Johannesen2009-06-181-0/+11
| | | | | | | | | adding a check to catch this case at compile time instead of quietly generating incorrect code. That will at least let us identify CBE failures that are not due to this problem. llvm-svn: 73668
* Fix trailing whitespace from ScalarEvolution::print.Dan Gohman2009-06-181-2/+1
| | | | llvm-svn: 73666
* ARM unified syntax is not specific to ELF; use it for Darwin, too.Bob Wilson2009-06-181-1/+1
| | | | llvm-svn: 73665
* Teach ScalarEvolution how to recognize another xor(and(x, C), C) case.Dan Gohman2009-06-181-4/+19
| | | | | | | If C is a single bit and the and gets analyzed as a truncate and zero-extend, the xor can be represnted as an add. llvm-svn: 73664
* Delete unnecessary braces.Dan Gohman2009-06-171-2/+1
| | | | llvm-svn: 73663
* Reapply r73647 in a non-broken form.Owen Anderson2009-06-171-15/+25
| | | | llvm-svn: 73662
* Fix asm string from MOVi16Anton Korobeynikov2009-06-171-1/+1
| | | | llvm-svn: 73661
* Thumb2 instructions are enabled only in unified assembler mode.Anton Korobeynikov2009-06-171-0/+4
| | | | | | | Emit switch directive for it. I have no idea whether this is requirement for Darwin or not. llvm-svn: 73660
* Instcombine zext(trunc(x) & mask) to x&mask, even if the trunc hasDan Gohman2009-06-171-0/+14
| | | | | | multiple users. llvm-svn: 73656
* Use double-checked locking for this lazy initialization.Owen Anderson2009-06-171-2/+21
| | | | llvm-svn: 73653
* Protect the GC table in Function.cppOwen Anderson2009-06-171-19/+25
| | | | llvm-svn: 73647
* Use atomic increment here.Owen Anderson2009-06-171-2/+7
| | | | llvm-svn: 73643
* Thread-safe (and ManagedStatic-ized) LeakDetector!Owen Anderson2009-06-171-34/+59
| | | | llvm-svn: 73642
* Guard mutation of the timing info global.Owen Anderson2009-06-171-0/+9
| | | | llvm-svn: 73639
* We need to use double-checked locking for lazy initialization in this case ↵Owen Anderson2009-06-171-1/+15
| | | | | | when running multithreaded. llvm-svn: 73636
* VNInfo cleanup.Lang Hames2009-06-179-125/+151
| | | | llvm-svn: 73634
* This fixes a bug introduced in 72661, which canDale Johannesen2009-06-171-1/+18
| | | | | | | | | | | | | | | move loads back past a check that the load address is valid, see new testcase. The test that went in with 72661 has exactly this case, except that the conditional it's moving past is checking something else; I've settled for changing that test to reference a global, not a pointer. It may be possible to scan all the tests you pass and make sure none of them are checking any component of the address, but it's not trivial and I'm not trying to do that here. llvm-svn: 73632
* Factor out some common code.Owen Anderson2009-06-171-44/+30
| | | | llvm-svn: 73631
* Add an RAII ScopedWriter, which allows one to acquire a writer lock for the ↵Owen Anderson2009-06-171-41/+58
| | | | | | | | duration of a scope. Simplify a lot of uses of writer locks in Constants.cpp by using it. llvm-svn: 73630
* Simplify the locking on the Constants tables, and make it more efficient, by ↵Owen Anderson2009-06-171-106/+136
| | | | | | | | pushing it into the ValueMap from the callers. Document those ValueMap functions that are _not_ locked, so that callers are aware that they need to do the locking themselves. llvm-svn: 73628
* Add debug message about non-local loads being clobbered.Torok Edwin2009-06-171-1/+7
| | | | llvm-svn: 73625
* Type safety for Constants.cpp! Some of this is temporary, as I'm planning ↵Owen Anderson2009-06-171-46/+208
| | | | | | to push some of the R/W locking into FoldingSet. llvm-svn: 73624
* Initial support for some Thumb2 instructions.Anton Korobeynikov2009-06-174-3/+262
| | | | | | Patch by Viktor Kutuzov and Anton Korzh from Access Softek, Inc. llvm-svn: 73622
* Update comments to use doxygen syntax.Dan Gohman2009-06-171-11/+11
| | | | llvm-svn: 73621
* Protect the ValueHandle table.Owen Anderson2009-06-171-2/+19
| | | | llvm-svn: 73620
* We need to guard reads of the AbstractTypeUsers list, as well as writes to ↵Owen Anderson2009-06-171-1/+5
| | | | | | | | it. While it would be nice to use a R/W lock here, we can't, because it HAS to be recursive. llvm-svn: 73617
* Add RWMutex.cpp to the CMake makefilesDouglas Gregor2009-06-171-0/+1
| | | | llvm-svn: 73615
* Type safety for TypeSymbolTable!Owen Anderson2009-06-171-3/+34
| | | | llvm-svn: 73614
* Improve the Win32 reader-writer lock implementation by making it just a normalOwen Anderson2009-06-171-6/+14
| | | | | | | | | lock. This is obviously bad, but at least it's threadsafe! If you know how to improve this in a pre-Vista friendly well, patches welcome! Patch by Max Burke. llvm-svn: 73607
* >> What if my global variable was into a different address space than stack?Sanjiv Gupta2009-06-171-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | >> > > It doesn't matter in terms of semantics: because AnalyzeGlobal > returned false, we're guaranteed the address of the global is never > taken. I wouldn't be surprised if we end up generating invalid IR in > some cases, though, because of the semantics of replaceAllUsesWith. > Do you have a testcase that breaks? > > The problem is replaceAllUsesWith asserts for type mismatch here. Try attached .bc with llvm-ld. assert(New->getType() == getType() && "replaceAllUses of value with new value of different type!"); Since stack is always on address space zero, I don't think that type of GV in a different address space is ever going to match. The other way is to allow replaceAllUsesWith to ignore address spaces while comparing types. (do we have a way to do that ?). But then such an optimization may fail the entire idea of user wanting to place a variable into different memory space. The original idea of user might be to save on the stack space (data memory) and hence he asked the variable to be placed into different memory space (program memory). So the best bet here is to deny this optimization by checking GV->getType()->getAddressSpace() == 0. llvm-svn: 73605
* PR3439: Correct a silly mistake in the SimplifyDemandedUseBits code for Eli Friedman2009-06-171-1/+1
| | | | | | SRem. llvm-svn: 73598
* Fix ScalarEvolution's Xor handling to not assume that an AndDan Gohman2009-06-171-3/+6
| | | | | | | that gets recognized with a SCEVZeroExtendExpr must be an And with a low-bits mask. With r73540, this is no longer the case. llvm-svn: 73594
* Do not use first actual instruction's location for prologue. The debug wants ↵Devang Patel2009-06-171-2/+1
| | | | | | to skip prologue while setting a breakpoint for the function. llvm-svn: 73592
* Use atomic increment/decrement for reference counting of Type's.Owen Anderson2009-06-171-2/+2
| | | | llvm-svn: 73588
* Add an atomic increment and decrement implementation, which will be used forOwen Anderson2009-06-171-0/+28
| | | | | | thread-safe reference counting. llvm-svn: 73587
* Add locking around the accessors for AbstractTypeUsers.Owen Anderson2009-06-171-1/+24
| | | | llvm-svn: 73586
* Use a reader-writer lock to guard large portions of the Type infrastructure, ↵Owen Anderson2009-06-161-54/+198
| | | | | | | | including abstract type refinement. There's still some more work to be done here, such as guarding removeAbstractTypeUser() and the printers. llvm-svn: 73575
* fix a circular dependency between the mips code generatorChris Lattner2009-06-163-4/+28
| | | | | | and its asmprinter. llvm-svn: 73573
* Fix the EE bindings to use the proper EE interfaces for creating a JIT.Chris Lattner2009-06-161-1/+1
| | | | | | Calling into createJIT directly creates a circular dependency between libjit and lib ee. llvm-svn: 73567
* Accidentally broke this file.Owen Anderson2009-06-161-1/+1
| | | | llvm-svn: 73552
* Add newline at end of file.Owen Anderson2009-06-161-1/+1
| | | | llvm-svn: 73551
* Remove the Win32 implementation, since it doesn't compile pre-Vista.Owen Anderson2009-06-161-12/+7
| | | | llvm-svn: 73550
* Fix/cleanup trailing newlines.Owen Anderson2009-06-161-1/+0
| | | | llvm-svn: 73546
* Add a portable wrapper for reader-writer locks.Owen Anderson2009-06-164-1/+268
| | | | llvm-svn: 73545
* Introduce new headers whose inclusion forces linking andDouglas Gregor2009-06-1622-0/+118
| | | | | | | | | initialization of all targets (InitializeAllTargets.h) or assembler printers (InitializeAllAsmPrinters.h). This is a step toward the elimination of relinked object files, so that we can build normal archives. llvm-svn: 73543
* Generalize a few more instcombines to be vector/scalar-independent.Dan Gohman2009-06-161-18/+17
| | | | llvm-svn: 73541
* Instcombine's ShrinkDemandedConstant may strip bits out of constants,Dan Gohman2009-06-161-3/+18
| | | | | | | | obscuring what would otherwise be a low-bits mask. Use ComputeMaskedBits to compute what ShrinkDemandedConstant knew about to reconstruct a low-bits mask value. llvm-svn: 73540
* CALL64pcrel32 immediate field is 32-bit. Patch by Abhinav Duggal.Evan Cheng2009-06-161-1/+1
| | | | llvm-svn: 73536
* Address review comments: add 3 ARM calling conventions.Anton Korobeynikov2009-06-167-38/+60
| | | | | | | Dispatch C calling conv. to one of these conventions based on target triple and subtarget features. llvm-svn: 73530
OpenPOWER on IntegriCloud