Fix a serious bug that would cause deadlock during abstract type refinement. The...
authorOwen Anderson <resistor@mac.com>
Fri, 19 Jun 2009 23:16:19 +0000 (23:16 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 19 Jun 2009 23:16:19 +0000 (23:16 +0000)
commit430444b10237abd37eb8157c3f84509a7d9636f8
treebb95b125f17911c2cf3abaf7c98b0d1ccb1aa41f
parent4d1c1efd800727165c12c2d186a5cb0b4f5834ab
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
include/llvm/Constant.h
include/llvm/Constants.h
include/llvm/GlobalValue.h
include/llvm/MDNode.h
lib/VMCore/ConstantFold.cpp
lib/VMCore/ConstantFold.h
lib/VMCore/Constants.cpp
lib/VMCore/Globals.cpp