X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FAttributes.cpp;h=b728b9284b4499fa701d7cc864a8d5584ce40c2d;hb=0e64f810a521806838bf90d77f081d3a1da98b5e;hp=477111a3ae8b427f3ad71c5465b5fb2068b78f07;hpb=80f3d786ada3215abe5561ac61d33437e99be3a2;p=oota-llvm.git diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index 477111a3ae8..b728b9284b4 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -15,8 +15,8 @@ #include "llvm/Type.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/FoldingSet.h" -#include "llvm/System/Atomic.h" -#include "llvm/System/Mutex.h" +#include "llvm/Support/Atomic.h" +#include "llvm/Support/Mutex.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/raw_ostream.h" @@ -36,6 +36,8 @@ std::string Attribute::getAsString(Attributes Attrs) { Result += "noreturn "; if (Attrs & Attribute::NoUnwind) Result += "nounwind "; + if (Attrs & Attribute::UWTable) + Result += "uwtable "; if (Attrs & Attribute::InReg) Result += "inreg "; if (Attrs & Attribute::NoAlias) @@ -72,6 +74,8 @@ std::string Attribute::getAsString(Attributes Attrs) { Result += "naked "; if (Attrs & Attribute::Hotpatch) Result += "hotpatch "; + if (Attrs & Attribute::NonLazyBind) + Result += "nonlazybind "; if (Attrs & Attribute::StackAlignment) { Result += "alignstack("; Result += utostr(Attribute::getStackAlignmentFromAttrs(Attrs)); @@ -88,7 +92,7 @@ std::string Attribute::getAsString(Attributes Attrs) { return Result; } -Attributes Attribute::typeIncompatible(const Type *Ty) { +Attributes Attribute::typeIncompatible(Type *Ty) { Attributes Incompatible = None; if (!Ty->isIntegerTy()) @@ -106,6 +110,11 @@ Attributes Attribute::typeIncompatible(const Type *Ty) { // AttributeListImpl Definition //===----------------------------------------------------------------------===// +namespace llvm { + class AttributeListImpl; +} + +static ManagedStatic > AttributesLists; namespace llvm { static ManagedStatic > ALMutex; @@ -131,6 +140,8 @@ public: } void DropRef() { sys::SmartScopedLock Lock(*ALMutex); + if (!AttributesLists.isConstructed()) + return; sys::cas_flag new_val = --RefCount; if (new_val == 0) delete this; @@ -147,8 +158,6 @@ public: }; } -static ManagedStatic > AttributesLists; - AttributeListImpl::~AttributeListImpl() { // NOTE: Lock must be acquired by caller. AttributesLists->RemoveNode(this);