diff options
author | Bill Wendling <isanbard@gmail.com> | 2013-02-01 01:04:27 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2013-02-01 01:04:27 +0000 |
commit | 7beee2876795098d2e2f31ecc2ca29fa7640a8eb (patch) | |
tree | f423f3eeae4a2a9f83797a100264621aad840cd0 | |
parent | 901261d558d0b41ba75d8aa2b38aac72aaa41bae (diff) | |
download | external_llvm-7beee2876795098d2e2f31ecc2ca29fa7640a8eb.zip external_llvm-7beee2876795098d2e2f31ecc2ca29fa7640a8eb.tar.gz external_llvm-7beee2876795098d2e2f31ecc2ca29fa7640a8eb.tar.bz2 |
Remove some dead code, improve some asserts, and other assorted changes. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174132 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/IR/AttributeImpl.h | 9 | ||||
-rw-r--r-- | lib/IR/Attributes.cpp | 33 |
2 files changed, 13 insertions, 29 deletions
diff --git a/lib/IR/AttributeImpl.h b/lib/IR/AttributeImpl.h index 2eb7f07..3fbd723 100644 --- a/lib/IR/AttributeImpl.h +++ b/lib/IR/AttributeImpl.h @@ -38,14 +38,9 @@ class AttributeImpl : public FoldingSetNode { void operator=(const AttributeImpl &) LLVM_DELETED_FUNCTION; AttributeImpl(const AttributeImpl &) LLVM_DELETED_FUNCTION; public: - AttributeImpl(LLVMContext &C, Constant *Kind) - : Context(C), Kind(Kind) {} - AttributeImpl(LLVMContext &C, Constant *Kind, ArrayRef<Constant*> Vals) + AttributeImpl(LLVMContext &C, Constant *Kind, + ArrayRef<Constant*> Vals = ArrayRef<Constant*>()) : Context(C), Kind(Kind), Vals(Vals.begin(), Vals.end()) {} - explicit AttributeImpl(LLVMContext &C, Attribute::AttrKind data); - AttributeImpl(LLVMContext &C, Attribute::AttrKind data, - ArrayRef<Constant*> values); - AttributeImpl(LLVMContext &C, StringRef data); LLVMContext &getContext() { return Context; } diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index 68b831d..412d83e 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -90,16 +90,16 @@ ArrayRef<Constant*> Attribute::getAttributeValues() const { /// This returns the alignment field of an attribute as a byte alignment value. unsigned Attribute::getAlignment() const { - if (!hasAttribute(Attribute::Alignment)) - return 0; + assert(hasAttribute(Attribute::Alignment) && + "Trying to get alignment from non-alignment attribute!"); return pImpl->getAlignment(); } /// This returns the stack alignment field of an attribute as a byte alignment /// value. unsigned Attribute::getStackAlignment() const { - if (!hasAttribute(Attribute::StackAlignment)) - return 0; + assert(hasAttribute(Attribute::StackAlignment) && + "Trying to get alignment from non-alignment attribute!"); return pImpl->getStackAlignment(); } @@ -204,6 +204,7 @@ std::string Attribute::getAsString() const { if (I != E) Result += ' '; } if (Vals.size() > 1) Result += ')'; + return Result; } llvm_unreachable("Unknown attribute"); @@ -227,22 +228,6 @@ bool Attribute::operator<(Attribute A) const { // AttributeImpl Definition //===----------------------------------------------------------------------===// -AttributeImpl::AttributeImpl(LLVMContext &C, Attribute::AttrKind kind) - : Context(C) { - Kind = ConstantInt::get(Type::getInt64Ty(C), kind); -} -AttributeImpl::AttributeImpl(LLVMContext &C, Attribute::AttrKind kind, - ArrayRef<Constant*> values) - : Context(C) { - Kind = ConstantInt::get(Type::getInt64Ty(C), kind); - Vals.reserve(values.size()); - Vals.append(values.begin(), values.end()); -} -AttributeImpl::AttributeImpl(LLVMContext &C, StringRef kind) - : Context(C) { - Kind = ConstantDataArray::getString(C, kind); -} - bool AttributeImpl::hasAttribute(Attribute::AttrKind A) const { if (ConstantInt *CI = dyn_cast<ConstantInt>(Kind)) return CI->getZExtValue() == A; @@ -282,6 +267,9 @@ bool AttributeImpl::operator!=(StringRef kind) const { } bool AttributeImpl::operator<(const AttributeImpl &AI) const { + // This sorts the attributes with Attribute::AttrKinds coming first (sorted + // relative to their enum value) and then strings. + if (!Kind && !AI.Kind) return false; if (!Kind && AI.Kind) return true; if (Kind && !AI.Kind) return false; @@ -409,9 +397,9 @@ unsigned AttributeSetNode::getStackAlignment() const { std::string AttributeSetNode::getAsString() const { std::string Str = ""; for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(), - E = AttrList.end(); I != E; ++I) { - if (I != AttrList.begin()) Str += " "; + E = AttrList.end(); I != E; ) { Str += I->getAsString(); + if (++I != E) Str += " "; } return Str; } @@ -951,6 +939,7 @@ uint64_t AttrBuilder::Raw() const { // AttributeFuncs Function Defintions //===----------------------------------------------------------------------===// +/// \brief Which attributes cannot be applied to a type. AttributeSet AttributeFuncs::typeIncompatible(Type *Ty, uint64_t Index) { AttrBuilder Incompatible; |