Owen Anderson
334143d304
I give up on trying to use reader/writer locks for recursive type refinement. Use a recursive mutex instead, which will (in theory) generate more contention, but is really
...
a much more natural fit for what's going on during recursive type refinement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74618 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 17:22:27 +00:00
Owen Anderson
8b477ed579
Add a pointer to the owning LLVMContext to Module. This requires threading LLVMContext through a lot
...
of the bitcode reader and ASM parser APIs, as well as supporting it in all of the tools.
Patches for Clang and LLVM-GCC to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74614 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 16:58:40 +00:00
Owen Anderson
db47ed0925
Add a global context, for easing backwards compatibility.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74574 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 23:39:59 +00:00
Owen Anderson
72bf4473a6
Add wrappers for type construction to LLVMContext.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74542 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 17:50:28 +00:00
Owen Anderson
5217007006
Fix up header comments to make Chris happy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74537 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 17:06:46 +00:00
Owen Anderson
2bc29dc0bc
Add LLVMContext, which will eventually be used as a container for privatizing a lot of (currently) global state, including the
...
constant and type uniquing tables. For now, just make it a wrapper around the existing APIs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74488 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 00:48:55 +00:00
Torok Edwin
6c839926ba
Set wasRun to false here on Dan's suggestion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74455 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 21:05:10 +00:00
Torok Edwin
1970a89a49
Call doInitialization(), releaseMemory(), and doFinalization() for on-the-fly passes as well.
...
Also don't call finalizers for LoopPass if initialization was not called.
Add a unittest that tests that these methods are called, in the proper
order, and the correct number of times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74438 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 18:49:09 +00:00
David Greene
9b9838dbd4
Add more vector ValueTypes for AVX and other extended vector instruction
...
sets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74427 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 16:47:10 +00:00
Owen Anderson
a6184406b7
Make this const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74317 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-26 20:21:18 +00:00
Devang Patel
70535451e0
Add constructor to create MDString using std::string
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74133 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 22:42:39 +00:00
Owen Anderson
6b96f6cfeb
Guard the listeners list. Unfortunately, this requires a real static rather
...
than a managed static because other managed statics can (and do) access this
list in their destructors. Yes, I know it's horrible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74029 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 00:25:42 +00:00
Owen Anderson
6f2c64d70a
Revert my last series of commits related to Timer and 64-bit atomics. Not all the targets
...
we care about are capable of supporting it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73993 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 20:17:22 +00:00
Owen Anderson
f43f9d0ef8
Atomic ops that do arithmetic use signed arithmetic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73980 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 18:30:27 +00:00
Owen Anderson
0de9953e88
Label the existing atomic functions as 32-bit specific, and add a 64-bit one that will be useful in
...
the near future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73971 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-23 18:01:04 +00:00
Nick Lewycky
e47f59db44
Expand this test to handle more cases (remainder and shifts) of zero.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73839 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 01:56:41 +00:00
Chris Lattner
1db6866147
implement PR4424: 0/x is always 0 for integer division.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73835 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-21 01:15:55 +00:00
Owen Anderson
ac7087ecf0
Forgot this file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73802 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-20 00:26:26 +00:00
Owen Anderson
04fb7c36a9
Revert r73790, and replace it with a significantly less ugly solution. Rather than trying to make the global reader-writer lock work,
...
create separate recursive mutexes for each value map. The recursive-ness fixes the double-acquiring issue, which having one per ValueMap
lets us continue to maintain some concurrency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73801 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-20 00:24:58 +00:00
Owen Anderson
430444b102
Fix a serious bug that would cause deadlock during abstract type refinement. The constant creation
...
gets involved, and we end up trying to recursively acquire a writer lock. The fix for this is slightly horrible,
and involves passing a boolean "locked" parameter around in Constants.cpp, but it's better than having locked and
unlocked versions of most of the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73790 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-19 23:16:19 +00:00
Owen Anderson
1f0ba8c57b
Forgot to remove some explicit locking when it became implicit in the ValueMap.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73778 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-19 18:34:09 +00:00
Owen Anderson
8e1c17aa5a
Move the memory fences out of the path for single-threaded mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73775 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-19 17:45:12 +00:00
Owen Anderson
ae60c0f78e
Fix incorrect comment pointed out by Duncan.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73773 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-19 17:20:50 +00:00
Owen Anderson
e454067f97
Simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73725 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 21:35:56 +00:00
Owen Anderson
b2c0fe4d93
Simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73723 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 20:56:48 +00:00
Owen Anderson
3c8031df6d
Add a SmartScopedLock, and use it to simplify code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73722 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 20:51:00 +00:00
Owen Anderson
f0f220a07e
Simplify with SmartRWMutex.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73721 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 20:44:31 +00:00
Owen Anderson
bcf9737f1e
Simplify by using no-op-when-not-multithreaded locks.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73719 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 20:36:21 +00:00
Owen Anderson
6cf69cfdee
Simplify using mutexes that become no-ops when not in multithreaded mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73716 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 20:15:26 +00:00
Owen Anderson
ee6aefcaa3
Simplify a lot of code by using a R/W mutex that becomes a no-op when multithreading is disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73714 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 19:10:19 +00:00
Owen Anderson
0e4d606684
Use SmartMutex to simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73712 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 18:36:34 +00:00
Owen Anderson
e3cd5ca7e7
Move Threading.[h|cpp] from Support to System.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73707 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 16:54:52 +00:00
Owen Anderson
1d36e4fa7c
Fix the double checked locking in this file too.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73703 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-18 16:17:42 +00:00
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
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
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
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
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
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
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
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
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
Owen Anderson
142fb2acdd
Add locking around the accessors for AbstractTypeUsers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73586 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-17 00:12:30 +00:00