Commit Graph

47543 Commits

Author SHA1 Message Date
Owen Anderson
3cfc62aa08 As pointed out by Duncan, I accidentally dropped the first MemoryFence of the
double-checked locking pattern here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73701 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 16:08:27 +00:00
Anton Korobeynikov
fd0cfe4bb4 Forgot to commit this hunk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73693 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 08:30:57 +00:00
Anton Korobeynikov
df9d0f0ed2 Propagate calling conv for invokes too
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73692 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 08:13:56 +00:00
Chris Lattner
b7b39987bb Don't use int8_t, that requires DataTypes.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73682 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 04:56:53 +00:00
Owen Anderson
6904858ab3 Fix build when disable thread support.
Patch by Howard Su.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 04:44:46 +00:00
Zhongxing Xu
73d2f15fb5 include header for uint8_t.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73675 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 04:11:43 +00:00
Nick Lewycky
b4b0fc28bc Add braces to clarify if/else structure and remove warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73673 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 03:01:42 +00:00
Evan Cheng
f9f1da17f8 - Update register allocation hint after coalescing. This is done by the 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 02:04:01 +00:00
Dale Johannesen
063989455d It looks like nobody is working on PR 4158, so I'm
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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73668 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 01:07:23 +00:00
Dan Gohman
9e7d9883b0 Fix trailing whitespace from ScalarEvolution::print.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73666 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 00:37:45 +00:00
Bob Wilson
ff6de36558 ARM unified syntax is not specific to ELF; use it for Darwin, too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73665 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 00:36:17 +00:00
Dan Gohman
820528331f Teach ScalarEvolution how to recognize another xor(and(x, C), C) case.
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73664 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 00:00:20 +00:00
Dan Gohman
fc3641b07a Delete unnecessary braces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 23:54:37 +00:00
Owen Anderson
bf5ec1b9db Reapply r73647 in a non-broken form.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73662 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 23:49:06 +00:00
Anton Korobeynikov
7c4f7dd43a Fix asm string from MOVi16
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73661 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 23:43:36 +00:00
Anton Korobeynikov
d61eca5330 Thumb2 instructions are enabled only in unified assembler mode.
Emit switch directive for it. I have no idea whether this is
requirement for Darwin or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73660 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 23:43:18 +00:00
Dan Gohman
a392c788be Instcombine zext(trunc(x) & mask) to x&mask, even if the trunc has
multiple users.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73656 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 23:17:05 +00:00
Owen Anderson
a23d2c1262 Use double-checked locking for this lazy initialization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73653 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 22:53:57 +00:00
Owen Anderson
b983d67465 Protect the GC table in Function.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73647 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 22:23:31 +00:00
Anton Korobeynikov
bf823e7590 Honour calling convention and attributes of Callee by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73646 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 22:20:46 +00:00
Owen Anderson
de17e9940e Use atomic increment here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73643 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 22:01:09 +00:00
Owen Anderson
92f2c87110 Thread-safe (and ManagedStatic-ized) LeakDetector!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73642 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 21:56:05 +00:00
Owen Anderson
f005a6466a Guard mutation of the timing info global.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73639 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 21:28:54 +00:00
Owen Anderson
f2986e6ca9 We need to use double-checked locking for lazy initialization in this case when running multithreaded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73636 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 21:16:20 +00:00
Stefanus Du Toit
24e0411184 Fix link to BasicBlock doxygen documentation in Programmer's Manual
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73635 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 21:12:26 +00:00
Lang Hames
857c4e01f8 VNInfo cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 21:01:20 +00:00
Dan Gohman
559254b697 Add -disable-output to a bunch of tests that don't care about the output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 20:56:26 +00:00
Dale Johannesen
42c3f554f4 This fixes a bug introduced in 72661, which can
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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73632 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 20:48:23 +00:00
Owen Anderson
32a25568fc Factor out some common code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73631 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 20:43:39 +00:00
Owen Anderson
dd561e1539 Add an RAII ScopedWriter, which allows one to acquire a writer lock for the duration of a scope. Simplify a lot of uses of
writer locks in Constants.cpp by using it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73630 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 20:34:43 +00:00
Owen Anderson
31c36f02f2 Simplify the locking on the Constants tables, and make it more efficient, by 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73628 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 20:10:08 +00:00
Torok Edwin
4306b1a329 Add debug message about non-local loads being clobbered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73625 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 18:48:18 +00:00
Owen Anderson
3e456abde2 Type safety for Constants.cpp! Some of this is temporary, as I'm planning to push some of the R/W locking into FoldingSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73624 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 18:40:29 +00:00
Anton Korobeynikov
52237119a9 Initial support for some Thumb2 instructions.
Patch by Viktor Kutuzov and Anton Korzh from Access Softek, Inc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73622 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 18:13:58 +00:00
Dan Gohman
e3a6165423 Update comments to use doxygen syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73621 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 17:51:33 +00:00
Owen Anderson
f2aac28d30 Protect the ValueHandle table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73620 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 17:36:57 +00:00
Owen Anderson
4f0ac58da1 We need to guard reads of the AbstractTypeUsers list, as well as writes to it. While it would be nice to use a R/W lock here,
we can't, because it HAS to be recursive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73617 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 17:13:54 +00:00
Douglas Gregor
e9d683b052 Define LLVM_NATIVE_ARCH in CMake, so that lli can actually JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73616 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 17:01:56 +00:00
Douglas Gregor
71c4a08869 Add RWMutex.cpp to the CMake makefiles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73615 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 17:01:30 +00:00
Owen Anderson
ea808c98d8 Type safety for TypeSymbolTable!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73614 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 16:56:27 +00:00
Chris Lattner
da06288aeb make sure that JIT examples link in their appropriate target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 16:48:44 +00:00
Chris Lattner
7b04c94152 remove two headers subsumed by TargetSelect.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73612 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 16:45:02 +00:00
Chris Lattner
2deb58f72e switch to using llvm/Target/TargetSelect.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73611 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 16:42:19 +00:00
Chris Lattner
5f1a5c7f57 Add a utility header that makes it easy to link in the right set
of targets for various purposes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73610 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 16:42:01 +00:00
Owen Anderson
c9f8e8ebab Improve the Win32 reader-writer lock implementation by making it just a normal
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73607 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 09:10:42 +00:00
Nick Lewycky
8189d40a8d Fix libLTO by #include'ing the initializers for all targets and all asm
printers.

While I'm here, alphabetize.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73606 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 06:52:10 +00:00
Sanjiv Gupta
059aa8c604 >> What if my global variable was into a different address space than stack?
>>     
>
> 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. 


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73605 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 06:47:15 +00:00
Chris Lattner
08826a50e1 make CreateFMul forward to CreateFMul, not CreateMul.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73603 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 06:31:02 +00:00
Nick Lewycky
fc4c255304 Fix grammaro, and bad indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73602 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 04:23:52 +00:00
Mikhail Glushenkov
71c767b4e3 Fix comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73601 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 03:10:10 +00:00